• Kemeng Shi's avatar
    writeback: factor out wb_bg_dirty_limits to remove repeated code · 7c0c629b
    Kemeng Shi authored
    Patch series "Add helper functions to remove repeated code and improve
    readability of cgroup writeback", v2.
    
    This series adds a lot of helpers to remove repeated code between domain
    and wb; dirty limit and dirty background; global domain and wb domain. 
    The helpers also improve readability.  More details can be found in the
    respective patches.
    
    A simple domain hierarchy is tested:
    global domain (> 20G)
    	|
    cgroup domain1(10G)
    	|
    	wb1
    	|
    	fio
    
    Test steps:
    /* make it easy to observe */
    echo 300000 > /proc/sys/vm/dirty_expire_centisecs
    echo 3000 > /proc/sys/vm/dirty_writeback_centisecs
    
    /* create cgroup domain */
    cd /sys/fs/cgroup
    echo "+memory +io" > cgroup.subtree_control
    mkdir group1
    cd group1
    echo 10G > memory.high
    echo 10G > memory.max
    echo $$ > cgroup.procs
    mkfs.ext4 -F /dev/vdb
    mount /dev/vdb /bdi1/
    
    /* run fio to generate dirty pages */
    fio -name test -filename=/bdi1/file -size=xxx -ioengine=libaio -bs=4K \
    -iodepth=1 -rw=write -direct=0 --time_based -runtime=600 -invalidate=0
    
    When fio size is 1G, the wb is in freerun state and dirty pages are only
    written back when dirty inode is expired after 30 seconds.  When fio size
    is 2G, the dirty pages keep being written back and bandwidth of fio is
    limited.
    
    
    This patch (of 8):
    
    Similar to wb_dirty_limits which calculates dirty and thresh of wb,
    wb_bg_dirty_limits calculates background dirty and background thresh of
    wb.  With wb_bg_dirty_limits, we could remove repeated code in
    wb_over_bg_thresh.
    
    Link: https://lkml.kernel.org/r/20240514125254.142203-1-shikemeng@huaweicloud.com
    Link: https://lkml.kernel.org/r/20240514125254.142203-2-shikemeng@huaweicloud.comSigned-off-by: default avatarKemeng Shi <shikemeng@huaweicloud.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    7c0c629b
page-writeback.c 95.6 KB