Flashcache
This article needs to be updated.(December 2013) |
Flashcache is a disk cache component for the Linux kernel, initially developed by Facebook since April 2010, and released as open source in 2011. Since January 2013, there is a fork of Flashcache, named EnhanceIO and developed by sTec, Inc.[1] Since 2015 that fork became unmaintained and it was forked again and maintained by individuals.[2]
Flashcache works by using
Overview
Using flash memory (
Similar technology exists in Microsoft Windows as ReadyBoost since Windows Vista.
Implementation
Flashcache is built on top of the Linux kernel's
When a write request happens, the corresponding cache block is marked dirty; dirty cache blocks are written lazily to disk in the background. There are a few parameters to control the
Limitations
There are a few limitations, imposed by the implementation of flashcache:[citation needed]
- Atomicity
- Cache block writes are currently non-atomic.
- TRIM support
- ATA TRIM command to optimize flash memory are not yet supported.
- Cache pollution protection
- A process can be marked non-cacheable to prevent flashcache cache its requests; however, if a process that marked itself non-cacheable dies, flashcache has no way of cleaning up.
- Alignment
- Relying on the device mapper resulted in caching performance issues and no caching of writes that are not multiple of 4 KiB. Primarily, this affects the Xen hypervisor. Thus, EnhanceIO has moved away from the device mapper integration, yielding higher performance for unoptimal use cases.[citation needed]
- Write-around read latency impact
- in write-around mode all writes bypass the cache for high consistency. The current implementation will fetch reads through the SSD device and then deliver them to the actual reader. This means that previously uncached blocks will always need to go to the SSD device first, causing a constant write IO. Not an issue on enterprise SSD or highend PCIe devices as facebook uses, but degrades performance on lower end SSD.
- Write-around read cache warm-up phase
- in write-around mode FlashCache has no information to compare the age of cached pages over the on-disk ones. (1) Because the device could have been mounted outside of FlashCache (2) Because no writes are tracked in this mode. This results in an empty cache after each volume activation (i.e.: reboot). Performance will be degraded until all hot areas have been cached.
See also
- bcache
- dm-cache
- Cache Acceleration Software (Intel's product)
References
- ^ EnhanceIO: New Solid State Drive Caching For Linux
- ^ EnhanceIO Open Source for Linux
- ^ "Flash Cache | NetApp Documentation". docs.netapp.com. Retrieved 2022-10-10.
- ^ Mohan Srinivasan. "Flashcache : A Write Back Block Cache for Linux". GitHub.