Tags: riteshharjani/linux
Tags
iomap: Add per-block dirty state tracking to iomap iomap today only tracks per-block update state bitmap, this series extends the support by adding per-block dirty state bitmap tracking to iomap buffered I/O path. This helps in reducing the write amplification and improve write performance for large folio writes and for platforms with higher pagesize compared to blocksize. We have seen ~83% performance improvement with these patches using database benchmarking tests, with XFS on 64k pagesize. fio benchmark (as shown in the last patch which adds dirty tracking support) showed close to 16x performance improvement when tested with 64K pagesize on 4k blocksize XFS using nvme on Power.
Add per-block dirty tracking to iomap buffered write As discussed earlier this is required to improve write performance and reduce write amplification for cases where either blocksize is less than pagesize (such as Power platform with 64k pagesize) or when we have a large folio (such as xfs which currently supports large folio). <Perf data copy paste from previous version> ============================================= Performance testing of below fio workload reveals ~16x performance improvement using nvme with XFS (4k blocksize) on Power (64K pagesize) FIO reported write bw scores improved from around ~28 MBps to ~452 MBps. 1. <test_randwrite.fio> [global] ioengine=psync rw=randwrite overwrite=1 pre_read=1 direct=0 bs=4k size=1G dir=./ numjobs=8 fdatasync=1 runtime=60 iodepth=64 group_reporting=1 [fio-run] 2. Also our internal performance team reported that this patch improves their database workload performance by around ~83% (with XFS on Power)
PreviousNext