1
The RAMCloud Storage System
JOHN OUSTERHOUT, ARJUN GOPALAN, ASHISH GUPTA, ANKITA KEJRIWAL,
COLLIN LEE, BEHNAM MONTAZERI, DIEGO ONGARO, SEO JIN PARK, HENRY QIN,
MENDEL ROSENBLUM, STEPHEN RUMBLE, and RYAN STUTSMAN, Stanford University
RAMCloud is a storage system that provides low-latency access to large-scale datasets. To achieve low
latency, RAMCloud stores all data in DRAM at all times. To support large capacities (1 PB or more), it
aggregates the memories of thousands of servers into a single coherent key-value store. RAMCloud ensures
the durability of DRAM-based data by keeping backup copies on secondary storage. It uses a uniform log-
structured mechanism to manage both DRAM and secondary storage, which results in high performance and
efficient memory usage. RAMCloud uses a polling-based approach to communication, bypassing the kernel
to communicate directly with NICs; with this approach, client applications can read small objects from any
RAMCloud storage server in less than 5 µs; durable writes of small objects take about 15 µs. RAMCloud does
not keep multiple copies of data online; instead, it provides high availability by recovering from crashes very
quickly (1–2 seconds). RAMCloud’s crash recovery mechanism harnesses the resources of the entire cluster
working concurrently, so that its performance scales with cluster size.
Categories and Subject Descriptors: D.4.7 [Operating Systems]: Organization and Design—Distributed;
D.4.2 [Operating Systems]: StorageManagement—Main memory; Secondary storage; Distributed memo-
ries; D.4.5 [Operating Systems]: Reliability—Fault-tolerance
General Terms: Design, Experimentation, Performance, Reliability
Additional Key Words and Phrases: Datacenters, large-scale systems, low latency, storage systems
1. INTRODUCTION
DRAM and its predecessor, core memory, have played an important role in storage
systems since the earliest days of operating systems. For example, early versions of
UNIX in the 1970s used a cache of buffers in memory to improve file system per-
formance [Ritchie and Thompson 1974]. Over the last 15 years the use of DRAM in
storage systems has accelerated, driven by the needs of large-scale Web applications.
These applications manipulate very large datasets with an intensity that cannot be
satisfied by disk and flash alone. As a result, applications are keeping more and more
of their long-term data in DRAM. By 2005 all of the major Web search engines kept
their search indexes entirely in DRAM, and large-scale caching systems such as mem-
cached [mem 2011] have become widely used for applications such as Facebook, Twit-
ter, Wikipedia, and YouTube.
Although DRAM’s role is increasing, it is still difficult for application developers to
capture the full performance potential of DRAM-based storage. In many cases DRAM
is used as a cache for some other storage system such as a database; this approach
forces developers to manage consistency between the cache and the backing store, and
its performance is limited by cache misses and backing store overheads. In other cases,
DRAM is managed in an application-specific fashion, which provides high performance
This work was supported by the Gigascale Systems Research Center and the Multiscale Systems Center
(two of six research centers funded under the Focus Center Research Program, a Semiconductor Research
Corporation program), by C-FAR (one of six centers of STARnet, a Semiconductor Research Corporation pro-
gram, sponsored by MARCO and DARPA), by the National Science Foundation under grant No. 096385, and
by Stanford Experimental Data Center Laboratory affiliates Cisco, Emulex, Facebook, Google, Inventec,
Mellanox, NEC, NetApp, Samsung, SAP, and VMware. Stephen Rumble was supported by a Natural Sci-
ences and Engineering Research Council of Canada Postgraduate Scholarship. Diego Ongaro was supported
by The Junglee Corporation Stanford Graduate Fellowship
Author’s addresses: TBD.
This document is currently under submission for publication. It can be cited as “Stanford Technical Report,
October 2014.”
ACM Transactions on Computer Systems, Vol. ??, No. ??, Article 1, Publication date: March ??.