diff options
author | Theodore Ts'o <tytso@mit.edu> | 2019-12-26 15:57:24 +0100 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2019-12-26 16:02:07 +0100 |
commit | a562c687d115fe5a90be1e27745cc771c1e6cbd9 (patch) | |
tree | 29469bda486d696a657bca42ad6cb43922958b26 /fs/ext4/mmp.c | |
parent | ext4: treat buffers contining write errors as valid in ext4_sb_bread() (diff) | |
parent | ext4: Move to shared i_rwsem even without dioread_nolock mount opt (diff) | |
download | linux-a562c687d115fe5a90be1e27745cc771c1e6cbd9.tar.xz linux-a562c687d115fe5a90be1e27745cc771c1e6cbd9.zip |
Merge branch 'rk/inode_lock' into dev
These are ilock patches which helps improve the current inode lock scalabiliy
problem in ext4 DIO mixed read/write workload case. The problem was first
reported by Joseph [1]. This should help improve mixed read/write workload
cases for databases which use directIO.
These patches are based upon upstream discussion with Jan Kara & Joseph [2].
The problem really is that in case of DIO overwrites, we start with
a exclusive lock and then downgrade it later to shared lock. This causes a
scalability problem in case of mixed DIO read/write workload case.
i.e. if we have any ongoing DIO reads and then comes a DIO writes,
(since writes starts with excl. inode lock) then it has to wait until the
shared lock is released (which only happens when DIO read is completed).
Same is true for vice versa as well.
The same can be easily observed with perf-tools trace analysis [3].
For more details, including performance numbers, please see [4].
[1] https://lore.kernel.org/linux-ext4/1566871552-60946-4-git-send-email-joseph.qi@linux.alibaba.com/
[2] https://lore.kernel.org/linux-ext4/20190910215720.GA7561@quack2.suse.cz/
[3] https://raw.githubusercontent.com/riteshharjani/LinuxStudy/master/ext4/perf.report
[4] https://lore.kernel.org/r/20191212055557.11151-1-riteshh@linux.ibm.com
Diffstat (limited to 'fs/ext4/mmp.c')
0 files changed, 0 insertions, 0 deletions