SSD caching software such as Flashcache or EnhanceIO is supposed to accelerate your rotational storage, right? Well, don't get too excited as there are serious performance problems with the current state of SSD caching.

Too much data is written to caching device

In most conservative mode ("write-around" for flashcache or "read-only" for enhanceio) cache bypasses writes and saves all reads to caching SSD.

In many cases when file system is actively used by backup, integrity check, defragmentation, antivirus scan, indexing, search, archiving, etc. all data that is read is also written to SSD which effectively makes it a bottleneck and limits maximum read speed by the speed of writing to SSD.

Too many writes to SSD contribute to its premature wear-off as well as create an unnecessary overhead with little chances for cache hit.

When file system is actively read from SSD caching makes access slower because caching device is under constant stress with busy time above 95%. Needless to say that under such circumstances cache hits are rare and SSD caching is ineffective.

Skipping sequential access is not effective

Detection of sequential access pattern (implemented in flashcache) is not effective for number of reasons. On block level pretty much all concurrent reads look random but even if perfectly detected sequential IO can be skipped only after some data (detection threshold) is already read and stored to cache.

There are too many situations when sequential IO detection doesn't work and even when it work it still generate significant overhead before sequential access is detected.

The possible solution for this problem could be to track activity per block and store only repetitive reads to SSD. However such tracking may pinpoint substantial amount of RAM and therefore take it away from operating system and other processes. Anyway nothing like this is implemented at this point.

Conclusion

Investing in RAM is more effective than investing in SSD caching.

SSD caching can slightly increase performance in some narrow use cases when file system is exclusively used by one application.

During intensive IO especially when file system is accessed by multiple processes SSD caching have negative impact on performance.

Ironically SSD caching helps to decrease access time only when file system is not actively used. When file system is under heavy IO flash-caching makes it slower and actually increases access time.

See also

[Poll]

Useful (100%)


Worthless (0%)


Total votes: 1