file would be cached, byte ranges of heavily accessed portions of those files, or what. Also, you can''t specify a storage device to use as a cache target like /dev/sdb1 so I have to assume it reserves some memory and then keeps the cached files there. This brings me to three questions: 1) In order to use the SSD device would I create a really large swap file on the SSD device and then allocate the size of the SSD to IO-Cache? Because I''m not that familiar with memory caching I''m wondering if the calls it makes to place data it wants into memory would stop at the point the system begins to swap, no matter what number I provide. In this case, because of the SSD speed I don''t want it to stop at the system begins to swap. Swapping becomes a good thing. 2) Would IO-Cache attempt to cache the entire 2GB to 400G file, skipping those over my IO-Cache allocation size (lets say 60G) or would it just cache the byte ranges of the most heavily accessed parts of those files? For instance, if someone is running a database server within one of the qcow2 files would and is hitting the "foobar" table with selects really hard, would IO-Cache cache the data being referenced (inodes X, Y, Z in file a.qcow2) by the select statements or try to cache the entire qcow2 file? 3) IO-Cache only helps with speeding up reads, right? In my mind, the world is very bursty. It would be incredibly cool if we had the ability to write to the SSD drive during bursts to return success to the client quickly and then stream those writes at steady speed to the SATA array. I realize this is more complicated then it sounds in practice because incoming reads expect coherent data even while the data is being slowly written to SATA but just curious if this is out there. Thanks!