[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-id: <A2A61325-CB7F-40E0-B9B9-A918135BCBC6@sun.com>
Date: Mon, 22 Mar 2010 16:03:10 -0600
From: Andreas Dilger <adilger@....com>
To: Ext4 Developers List <linux-ext4@...r.kernel.org>
Cc: "Theodore Ts'o" <tytso@....edu>
Subject: [PATCH] avoid scanning bitmaps for group preallocation
Here is the patch I mentioned today on the call. It avoids (or at
least reduces) serious latency (10 minutes or more) on a large
filesystem (8TB+) on the first write, if the filesystem is nearly
full. The latency is entirely due to seeking to read the block
bitmaps, so is considerably less serious on flex_bg formatted
filesystems.
A better long-term approach would be to store in the superblock the
last group that had space to allocate a stripe-sized chunk and/or flag
in the group descriptor if there is not a large amount of contiguous
free space therein (cleared on freeing blocks in the group).
Having the mount-time buddy-bitmap (and checksum verifying) scanning
thread start at mount would only help if the first write to the
filesystem is not immediately after mount (which it is in Lustre at
least). Having a filesystem-wide (r)btree for the freespace (ala XFS)
would also only help if the btree could be (at least partially) built
from bitmaps before the first write, unless we cache the bitmap on
disk, which caused Lustre plenty in the past and I'm leery to do it.
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
Download attachment "ext4-mballoc-skip.diff" of type "application/octet-stream" (2517 bytes)
Powered by blists - more mailing lists