• T
    ext4: Don't avoid using BLOCK_UNINIT block groups in mballoc · 75507efb
    Theodore Ts'o 提交于
    By avoiding the use of not-yet-used block groups (i.e., block groups
    with the BLOCK_UNINIT flag), mballoc had a tendency to create large
    files with large non-contiguous gaps.  In addition avoiding the use of
    new block groups had a tendency to push regular file data into the
    first block group in a flex_bg group, which slows down the speed of
    e2fsck pass 2, since it has a tendency to seek much more.  For
    example:
    
                   Before Patch                       After Patch
                  Time in seconds                   Time in seconds
                Real /  User/  Sys   MB/s      Real /  User/  Sys    MB/s
    Pass 1      8.52 / 2.21 / 0.46  20.43      8.84 / 4.97 / 1.11   19.68
    Pass 2     21.16 / 1.02 / 1.86  11.30      6.54 / 1.77 / 1.78   36.39
    Pass 3      0.01 / 0.00 / 0.00 139.00      0.01 / 0.01 / 0.00  128.90
    Pass 4      0.16 / 0.15 / 0.00   0.00      0.17 / 0.17 / 0.00    0.00
    Pass 5      2.52 / 1.99 / 0.09   0.79      2.31 / 1.78 / 0.06    0.86
    Total      32.40 / 5.11 / 2.49  12.81     17.99 / 8.75 / 2.98   23.01
    
    This was on a sample 80 gig root filesystem which was approximately
    50% full.  Note the improved e2fsck pass 2 performance, by over a
    factor of 3, due to a decreased number of seeks.  (The total amount of
    I/O in pass 2 was unchanged; the layout of the directory blocks was
    simply much better from e2fsck's's perspective.)
    
    Other changes as a result of this patch on this sample filesystem:
    
                                 Before Patch    After Patch
    # of non-contig files           762             779
    # of non-contig directories     571             570
    # of BLOCK_UNINIT bg's          307             293
    # of INODE_UNINIT bg's          503             503
    
    Out of 640 block groups, of which 333 were in use, this patch caused
    an extra 14 block groups to be utilized.  The number of non-contiguous
    files did go up slightly, but when measured against the 99.9% of the
    files (603,154) which were contiguously allocated, this is pretty
    insignificant.
    Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: NAndreas Dilger <adilger@sun.com>
    75507efb
mballoc.c 133.7 KB