ElCached: Elastic Multi-Level Key-Value Cache

Authors: 

Rahman Lavaee, University of Rochester; Stephen Choi and Yang-Suk Kee, Samsung Memory Solutions Lab; Chen Ding, University of Rochester

Abstract: 

Today’s cloud service providers (CSPs) use in-memory caching engines to improve application performance and server revenue. However, these caching engines exhibit poor scaling, mainly because of high DRAM cost and energy consumption. On the other hand, the increasing use of multi-tenancy requires effective and optimal resource provisioning.

In this paper, we introduce ElCached, a multi-level key-value cache based on Memcached. ElCached employs low-cost NAND flash memory as a lower layer of caching. ElCached uses the reuse distance model to predict miss ratio, with high accuracy, under all storage capacity limits. The miss ratio prediction allows ElCached to find the best resource allocation under multi-tenant settings. We evaluate Elcached on workloads emulating real-world applications. Our multi-tenant experiment indicates that compared to a proportional allocation technique, ElCached can reduce the cost by up to 26%, while delivering lower average latency. Meanwhile, by utilizing more flash storage, ElCached can reduce the total memory consumption almost by half.

Open Access Media

USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone. Support USENIX and our commitment to Open Access.

BibTeX
@inproceedings {200126,
author = {Rahman Lavaee and Stephen Choi and Yang-Suk Kee and Chen Ding},
title = {{ElCached}: Elastic {Multi-Level} {Key-Value} Cache},
booktitle = {4th Workshop on Interactions of NVM/Flash with Operating Systems and Workloads (INFLOW 16)},
year = {2016},
address = {Savannah, GA},
url = {https://www.usenix.org/conference/inflow16/workshop-program/presentation/lavaee},
publisher = {USENIX Association},
month = nov
}