Linux 4.16 Can Be A Lot Faster For Small I/O Activity
Jeff Layton of Red Hat has submitted a rework of inode's i_version code for the Linux 4.16 merge window. The i_version field has traditionally incremented on every inode data or metadata change. But none of the code using i_version has required this behavior, rather just depending that the version changes if the inode has changed since the last time it was checked.
Now with Linux 4.16, the inode's i_version field won't be uselessly updated all the time and as a result it should "help write performance under many common workloads."
As confirmed by Jeff, the kernel test bot has found this rework boosted a FIO read/write bandwidth test in FIO by 244% when using XFS over DAX with 4K writes. But he's also found the performance to be boosted in other small I/O workloads.
More details via this pull request. It will be great with Linux 4.16, especially considering the recent I/O drops in performance as a result of KPTI/Retpolines. Benchmarks will be coming up on Phoronix.