• Ritesh Harjani's avatar
    ext4: improve fast_commit performance and scalability · b3998b3b
    Ritesh Harjani authored
    Currently ext4_fc_commit_dentry_updates() is of quadratic time
    complexity, which is causing performance bottlenecks with high
    threads/file/dir count with fs_mark.
    
    This patch makes commit dentry updates (and hence ext4_fc_commit()) path
    to linear time complexity. Hence improves the performance of workloads
    which does fsync on multiple threads/open files one-by-one.
    
    Absolute numbers in avg file creates per sec (from fs_mark in 1K order)
    =======================================================================
    no.     Order   without-patch(K)   with-patch(K)   Diff(%)
    1       1        16.90              17.51           +3.60
    2       2,2      32.08              31.80           -0.87
    3       3,3      53.97              55.01           +1.92
    4       4,4      78.94              76.90           -2.58
    5       5,5      95.82              95.37           -0.46
    6       6,6      87.92              103.38          +17.58
    7       6,10      0.73              126.13          +17178.08
    8       6,14      2.33              143.19          +6045.49
    
    workload type
    ==============
    For e.g. 7th row order of 6,10 (2^6 == 64 && 2^10 == 1024)
    echo /run/riteshh/mnt/{1..64} |sed -E 's/[[:space:]]+/ -d /g' \
      | xargs -I {} bash -c "sudo fs_mark -L 100 -D 1024 -n 1024 -s0 -S5 -d {}"
    
    Perf profile
    (w/o patches)
    =============================
    87.15%  [kernel]  [k] ext4_fc_commit           --> Heavy contention/bottleneck
     1.98%  [kernel]  [k] perf_event_interrupt
     0.96%  [kernel]  [k] power_pmu_enable
     0.91%  [kernel]  [k] update_sd_lb_stats.constprop.0
     0.67%  [kernel]  [k] ktime_get
    Signed-off-by: default avatarRitesh Harjani <riteshh@linux.ibm.com>
    Reviewed-by: default avatarHarshad Shirwadkar <harshadshirwadkar@gmail.com>
    Link: https://lore.kernel.org/r/930f35d4fd5f83e2673c868781d9ebf15e91bf4e.1645426817.git.riteshh@linux.ibm.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    b3998b3b
ext4.h 135 KB