• Ojaswin Mujoo's avatar
    ext4: make mb_optimize_scan performance mount option work with extents · 077d0c2c
    Ojaswin Mujoo authored
    Currently mb_optimize_scan scan feature which improves filesystem
    performance heavily (when FS is fragmented), seems to be not working
    with files with extents (ext4 by default has files with extents).
    
    This patch fixes that and makes mb_optimize_scan feature work
    for files with extents.
    
    Below are some performance numbers obtained when allocating a 10M and 100M
    file with and w/o this patch on a filesytem with no 1M contiguous block.
    
    <perf numbers>
    ===============
    Workload: dd if=/dev/urandom of=test conv=fsync bs=1M count=10/100
    
    Time taken
    =====================================================
    no.     Size   without-patch     with-patch    Diff(%)
    1       10M      0m8.401s         0m5.623s     33.06%
    2       100M     1m40.465s        1m14.737s    25.6%
    
    <debug stats>
    =============
    w/o patch:
      mballoc:
        reqs: 17056
        success: 11407
        groups_scanned: 13643
        cr0_stats:
                hits: 37
                groups_considered: 9472
                useless_loops: 36
                bad_suggestions: 0
        cr1_stats:
                hits: 11418
                groups_considered: 908560
                useless_loops: 1894
                bad_suggestions: 0
        cr2_stats:
                hits: 1873
                groups_considered: 6913
                useless_loops: 21
        cr3_stats:
                hits: 21
                groups_considered: 5040
                useless_loops: 21
        extents_scanned: 417364
                goal_hits: 3707
                2^n_hits: 37
                breaks: 1873
                lost: 0
        buddies_generated: 239/240
        buddies_time_used: 651080
        preallocated: 705
        discarded: 478
    
    with patch:
      mballoc:
        reqs: 12768
        success: 11305
        groups_scanned: 12768
        cr0_stats:
                hits: 1
                groups_considered: 18
                useless_loops: 0
                bad_suggestions: 0
        cr1_stats:
                hits: 5829
                groups_considered: 50626
                useless_loops: 0
                bad_suggestions: 0
        cr2_stats:
                hits: 6938
                groups_considered: 580363
                useless_loops: 0
        cr3_stats:
                hits: 0
                groups_considered: 0
                useless_loops: 0
        extents_scanned: 309059
                goal_hits: 0
                2^n_hits: 1
                breaks: 1463
                lost: 0
        buddies_generated: 239/240
        buddies_time_used: 791392
        preallocated: 673
        discarded: 446
    
    Fixes: 196e402a (ext4: improve cr 0 / cr 1 group scanning)
    Cc: stable@kernel.org
    Reported-by: default avatarGeetika Moolchandani <Geetika.Moolchandani1@ibm.com>
    Reported-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
    Suggested-by: default avatarRitesh Harjani <riteshh@linux.ibm.com>
    Signed-off-by: default avatarOjaswin Mujoo <ojaswin@linux.ibm.com>
    Link: https://lore.kernel.org/r/fc9a48f7f8dcfc83891a8b21f6dd8cdf056ed810.1646732698.git.ojaswin@linux.ibm.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    077d0c2c
mballoc.c 184 KB