Three different Linux disk caching methods for the Linux kernel were compared: EnhanceIO, Bcache, and DM-Cache. But which of these disk caching methods is the fastest when mixing SSDs and HDDs? Here's some results.
A Linux engineer at STEC Inc compared the performance of EnhanceIO, BCache, and DM-Cache. A 100GB HDD was used with a 20GB SSD providing write-through / write-back cache. For those out of the look on these different caching methods:
- EnhanceIO is a new SSD caching method for Linux
and was merged for Linux 3.9 staging
. For those unfamiliar with EnhanceIO, read those aforelinked articles.
- BCache is another caching method
and the HDD/SSD caching method was merged for Linux 3.10
. Again, click those articles for more information.
- Lastly, DM-Cache is the device mapper cache and aims to improve the performance of block devices by dynamically migrating data to faster/smaller devices (SSDs).
In terms of the company's results between EnhanceIO, BCache, and DM-Cache, on the Linux kernel mailing list
are their full results.
The summary? "We found that EnhanceIO provides better throughput on zipf workload (with theta=1.2) in comparison to bcache and dm-cache for write through caches. However, for write back caches, we found that dm-cache had best throughput followed by EnhanceIO and then bcache. Dm-cache commits on-disk metadata every time a REQ_SYNC or REQ_FUA bio is written. If no such requests are made then it commits metadata once every second. If power is lost, it may lose some recent writes. However, EnhanceIO and bcache do not acknowledge IO completion until both IO and metadata hits the SSD. Hence, EnhanceIO and bcache provide higher data integrity at a cost of performance."