Abstract |
Flash-based solid state drives (SSDs) exhibit potential for solving I/O bottlenecks by
offering superior performance over hard disks for several workloads. For
this reason, there is recently significant work towards integrating SSD caching in the
I/O stack of modern storage systems. However, the proposed solutions
are usually application specific.
In this work we design Azor , an SSD-based I/O cache that operates at the block-level and
is transparent to existing applications, such as databases. Our
design provides various choices for associativity, write policies and cache line size,
while targeting on maintaining a high degree of I/O concurrency. Our
main contribution is that we explore how Azor can differentiate HDD blocks according to
their expected importance on system performance. We design and
analyze a two-level block selection scheme which dynamically differentiates HDD blocks,
and selectively places them in the limited space of the SSD cache.
We implement Azor in the Linux kernel and evaluate its effectiveness experimentally
using realistic workloads and large problem sizes. We use a server-type
platform and four I/O intensive workloads: TPC-H, SPECsfs2008, PostMark, and Hammerora.
Our results show that as the cache size increases, our SSD-cache
can enhance I/O performance by up to 14.02×, 1.63×, 1.72× and 55% for each workload
respectively. In addition, our two-level block selection scheme
can further enhance I/O performance compared to a typical SSD cache by up to 95%, 16%,
28%, and 34% for each workload, respectively. Not both levels of
our two-level block selection scheme benefit all workloads. However, they never degrade
performance, when used together or in isolation.
|