  In this paper, we propose an Efficient Two-Level I/O Caching Architecture
(ETICA) for virtualized platforms that can significantly improve I/O latency,
endurance, and cost (in terms of cache size) while preserving the reliability
of write-pending data blocks. As opposed to previous one-level I/O caching
schemes in virtualized platforms, our proposed architecture 1) provides two
levels of cache by employing both Dynamic Random-Access Memory (DRAM) and SSD
in the I/O caching layer of virtualized platforms and 2) effectively partitions
the cache space between running VMs to achieve maximum performance and minimum
cache size. To manage the two-level cache, unlike the previous reuse distance
calculation schemes such as Useful Reuse Distance (URD), which only consider
the request type and neglect the impact of cache write policy, we propose a new
metric, Policy Optimized reuse Distance (POD). The key idea of POD is to
effectively calculate the reuse distance and estimate the amount of two-level
DRAM+SSD cache space to allocate by considering both 1) the request type and 2)
the cache write policy. Doing so results in enhanced performance and reduced
cache size due to the allocation of cache blocks only for the requests that
would be served by the I/O cache. ETICA maintains the reliability of
write-pending data blocks and improves performance by 1) assigning an effective
and fixed write policy at each level of the I/O cache hierarchy and 2)
employing effective promotion and eviction methods between cache levels. Our
extensive experiments conducted with a real implementation of the proposed
two-level storage caching architecture show that ETICA provides 45% higher
performance, compared to the state-of-the-art caching schemes in virtualized
platforms, while improving both cache size and SSD endurance by 51.7% and
33.8%, respectively.
