Linux 7.3 Adds RWF_DONTCACHE Support For Block Devices
([Linux Storage] 105 Minutes Ago
RWF_DONTCACHE On Block Devices)
- Reference: 0001654704
- News link: https://www.phoronix.com/news/Linux-7.3-Block
- Source link:
With the never-ending quest for greater I/O performance in the HPC space and the demands all the more relentless in the AI era, the Linux kernel block subsystem activity continues to be as vibrant as ever along with the ongoing innovations in the IO_uring space.
Merged a few days back were all the block and IO_uring feature changes for Linux 7.3. The [1]IO_uring changes are mainly focused around enhancing zero-copy receive "ZCRX", including taking on dynamic area provisioning. There are also various bug fixes and other enhancements. The dynamic area provisioning allows for the memory areas to be allocated and provisioned on-demand rather than needing to be pre-allocated statically.
Interesting over on the block side for Linux 7.3 is [2]RWF_DONTCACHE support for block devices. The RWF_DONTCACHE flag is used for uncached buffered I/O via pruning pages from the page cache as soon as the operation completes. Thus relieving pressure from the cache and can help with heavy I/O workloads. With Linux 7.3, RWF_DONTCACHE is now supported on block devices.
RWF_DONTCACHE for block devices should be useful for databases running off raw block devices and other user-space allocations interacting directly with the underlying block device. Tests carried out by Tal Zussman who enabled the RWF_DONTCACHE support for block devices showed very nice read and write benefits from testing on a single block device on a VM:
Other block changes for Linux 7.3 include Clang context analysis support for the NVMe host driver parallelizing NVMe RDMA I/O queue allocation and start-up, Apple NVMe fixes, and various MD RAID enhancements.
All the block feature improvements for Linux 7.3 can be found via [3]this merge .
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f5437ff7299e47e76e52d37a2937a4b0f04e399f
[2] https://www.phoronix.com/search/RWF_DONTCACHE
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=55ab7e14222e5f0b0fd9f7711ca391d2924b35e3
Merged a few days back were all the block and IO_uring feature changes for Linux 7.3. The [1]IO_uring changes are mainly focused around enhancing zero-copy receive "ZCRX", including taking on dynamic area provisioning. There are also various bug fixes and other enhancements. The dynamic area provisioning allows for the memory areas to be allocated and provisioned on-demand rather than needing to be pre-allocated statically.
Interesting over on the block side for Linux 7.3 is [2]RWF_DONTCACHE support for block devices. The RWF_DONTCACHE flag is used for uncached buffered I/O via pruning pages from the page cache as soon as the operation completes. Thus relieving pressure from the cache and can help with heavy I/O workloads. With Linux 7.3, RWF_DONTCACHE is now supported on block devices.
RWF_DONTCACHE for block devices should be useful for databases running off raw block devices and other user-space allocations interacting directly with the underlying block device. Tests carried out by Tal Zussman who enabled the RWF_DONTCACHE support for block devices showed very nice read and write benefits from testing on a single block device on a VM:
Other block changes for Linux 7.3 include Clang context analysis support for the NVMe host driver parallelizing NVMe RDMA I/O queue allocation and start-up, Apple NVMe fixes, and various MD RAID enhancements.
All the block feature improvements for Linux 7.3 can be found via [3]this merge .
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f5437ff7299e47e76e52d37a2937a4b0f04e399f
[2] https://www.phoronix.com/search/RWF_DONTCACHE
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=55ab7e14222e5f0b0fd9f7711ca391d2924b35e3