Linux 6.11 Likely To Land DM-Verity Multi-Buffer Hashing For Big Speed Boost
([Linux Storage] 2 Hours Ago
DM-Verity Multi-Buffer Hashing)
- Reference: 0001475997
- News link: https://www.phoronix.com/news/DM-Verity-Multi-Buffer-Hash
- Source link:
One of several nice Linux performance optimizations recently by Eric Biggers of Google has been [1]speeding up DM-Verity via multi-buffer hashing . DM-Verity is used for transparent integrity checking of block devices and this multi-buffer hashing code looks like it will land with the upcoming Linux 6.11 cycle.
The DM-Verity patch to enhance the performance via multi-buffer hashing has now been queued into [2]Biggers' "crypto-pending" branch . In turn it will likely be submitted for the Linux 6.11 merge window later this month, assuming it gets picked up into the "cryptodev" in the next one~two weeks.
Biggers explains in the patch:
"When supported by the hash algorithm, use crypto_shash_finup_mb() to interleave the hashing of pairs of data blocks. On some CPUs this nearly doubles hashing performance. The increase in overall throughput of cold-cache dm-verity reads that I'm seeing on arm64 and x86_64 is roughly 35% (though this metric is hard to measure as it jumps around a lot).
For now this is only done on data blocks, not Merkle tree blocks. We could use finup_mb on Merkle tree blocks too, but that is less important as there aren't as many Merkle tree blocks as data blocks, and that would require some additional code restructuring."
About 35% better performance on ARM64 and x86_64 hardware for DM-Verity with this new multi-buffer hashing.
[1] https://www.phoronix.com/news/DM-Verity-Multi-Buffer-Hashing
[2] https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git/commit/?h=crypto-pending&id=0cd9e0b8b974da5cfbba9544eb1883f80a8bb265
The DM-Verity patch to enhance the performance via multi-buffer hashing has now been queued into [2]Biggers' "crypto-pending" branch . In turn it will likely be submitted for the Linux 6.11 merge window later this month, assuming it gets picked up into the "cryptodev" in the next one~two weeks.
Biggers explains in the patch:
"When supported by the hash algorithm, use crypto_shash_finup_mb() to interleave the hashing of pairs of data blocks. On some CPUs this nearly doubles hashing performance. The increase in overall throughput of cold-cache dm-verity reads that I'm seeing on arm64 and x86_64 is roughly 35% (though this metric is hard to measure as it jumps around a lot).
For now this is only done on data blocks, not Merkle tree blocks. We could use finup_mb on Merkle tree blocks too, but that is less important as there aren't as many Merkle tree blocks as data blocks, and that would require some additional code restructuring."
About 35% better performance on ARM64 and x86_64 hardware for DM-Verity with this new multi-buffer hashing.
[1] https://www.phoronix.com/news/DM-Verity-Multi-Buffer-Hashing
[2] https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git/commit/?h=crypto-pending&id=0cd9e0b8b974da5cfbba9544eb1883f80a8bb265
Kjell