Many computing architectures implement cache as a means for addressing a mismatch between the performance characteristics of a computing device's storage device (e.g., magnetic recording media, solid state storage) and the performance requirements of the device's central processing unit (CPU) and application processing. For example, when an application issues a write command, the system may write the data into the cache, where periodically, the data from the cache is flushed to the storage device.
However, flushing a write cache is an expensive operation, which can degrade performance. When flushing data from the cache to the storage device, the storage device flushes the entire system. That is, the storage device writes everything in the cache for all drives to storage, which can cause a computing device to incur a performance penalty, particularly on a low-end device with a limited bandwidth input/output (I/O) subsystem. Additionally, there may be a risk of loss or corruption of data if power is lost while there is data in the disk's write cache that has not been written to storage.