  Caches are an important component of modern computing systems given their
significant impact on performance. In particular, caches play a key role in the
cloud due to the nature of large-scale, data-intensive processing. One of the
key challenges for the cloud providers is how to share the caching capacity
among tenants, under the circumstance that each often requires a different
degree of quality of service (QoS) with respect to data access performance. The
invariant is that the individual tenants' QoS requirements should be satisfied
while the cache usage is optimized in a system-wide manner. In this paper, we
introduce a learning-based approach for dynamic cache management in a cloud,
which is based on the estimation of data access pattern of a tenant and the
prediction of cache performance for the access pattern in question. We consider
a variety of probability distributions to estimate the data access pattern, and
examine a set of learning-based regression techniques to predict the cache hit
rate for the access pattern. The predicted cache hit rate is then used to make
a decision whether reallocating cache space is needed to meet the QoS
requirement for the tenant. Our experimental results with an extensive set of
synthetic traces and the YCSB benchmark show that the proposed method
consistently optimizes the cache space while satisfying the QoS requirement.
