...
The RAMCloud project is based in the Department of Computer Science at Stanford University, but the system is being used at numerous sites around the world.
Learning
...
About RAMCloud
The links below provide general information about RAMCloud, such as talks and papers. Much of the information here is related to the research aspects of the project, as opposed to information on how to use RAMCloud.
- Introductory talk on RAMCloud by John Ousterhout, given at LinkedIn on October 12, 2011.
- The Case for RAMCloud: an early position paper that discusses the motivation for RAMCloud, the new kinds of applications it may enable, and some of the research issues that will have to be addressed to create a working system. Appeared in CACM in July 2011.
- An earlier and a slightly longer version of the position paper, which appeared in Operating Systems Review in December 2009.
- Fast Recovery in RAMCloud: describes RAMCloud's mechanism for recovering crashed servers in 1-2 seconds. Appeared in SOSP in October, 2011
- It's Time for Low Latency: HotOS 2011 workshop paper arguing for the OS community to focus on network latency.
- Toward Common Patterns for Distributed, Concurrent, Fault-Tolerant Code: HotOS 2013 workshop paper describing a rules-based approach for building "DCFT" systems.
Articles about RAMCloud (Web and print media, written by people outside the RAMCloud group)
- RAMCloud Papers (complete listing of all papers written by the RAMCloud group)
- RAMCloud Presentations (Slides from talks about RAMCloud)
- Glossary of RAMCloud Terms
How to
...
Deploy and
...
Use RAMCloud
System is already usable
RAMCloud Performance
Information for RAMCloud developers
The RAMCloud test cluster at Stanford
Design notes
Project history and status
Related information
Miscellaneous topics
Old Home Page is Below... this will soon be deleted
What is RAMCloud?
The RAMCloud project is creating a new class of storage, based entirely in DRAM, that is 2-3 orders of magnitude faster than existing storage systems. If successful, it will enable new applications that manipulate large-scale datasets much more intensively than has ever been possible before. In addition, we think RAMCloud, or something like it, will become the primary storage system for cloud computing environments such as Amazon's AWS and Microsoft's Azure.
The role of DRAM in storage systems has been increasing rapidly in recent years, driven by the needs of large-scale Web applications. These applications manipulate very large datasets with an intensity that cannot be satisfied by disks alone. As a result, applications are keeping more and more of their data in DRAM. For example, large-scale caching systems such as memcached are being widely used (in 2009 Facebook used a total of 150 TB of DRAM in memcached and other caches for a database containing 200 TB of disk storage), and the major Web search engines now keep their search indexes entirely in DRAM.
Although DRAM's role is increasing, it still tends to be used in limited or specialized ways. In most cases DRAM is just a cache for some other storage system such as a database; in other cases (such as search indexes) DRAM is managed in an application-specific fashion. It is difficult for developers to use DRAM effectively in their applications; for example, the application must manage consistency between caches and the backing storage. In addition, cache misses and backing store overheads make it difficult to capture DRAM's full performance potential.
Our goal for RAMCloud is to create a general-purpose storage system that makes it easy for developers to harness the full performance potential of large-scale DRAM storage. It keeps all data in DRAM all the time, so there are no cache misses. RAMCloud storage is durable and available, so developers need not manage a separate backing store. RAMCloud is designed to scale to thousands of servers and hundreds of terabytes of data while providing uniform low-latency access to all machines within a large datacenter.
As of Fall 2011, we had initial implementations of many of the components of RAMCloud and the system runs well enough to use it for simple tests. On our 60-node test cluster we are able to perform remote reads of 100-byte objects in about 5 microseconds, and an individual server can process more than 800,000 small read requests per second. The basic crash recovery mechanism is running, and RAMCloud can recover 35 GB of memory from a failed server in about 1.6 seconds.
The RAMCloud project is still young, so there are many interesting research issues still to explore, such as the following:
- Data model. RAMCloud currently supports a very simple data model (key-value store); we would like to see if we can provide higher-level features such as secondary indexes and multi-object transactions while without sacrificing the scalability or performance of the system.
- Consistency: we believe that RAMCloud can provide strong consistency (linearizability) without sacrificing performance, but there are several interesting problems to solve in order to achieve that.
- Cluster management: what are the right mechanisms and policies for reorganizing RAMCloud data in response to changes in the amount of data and the access patterns?
- Network protocols: we don't think that TCP is the right protocol to provide highest performance within a datacenter, so there is an interesting research project to investigate what is the ideal protocol.
- Multi-tenancy: how to support multiple independent, perhaps hostile, applications sharing the same RAMCloud storage system within a large datacenter? This introduces issues related to access control and also potentially issues of performance isolation.
- Multiple datacenters: our current design for RAMCloud focuses on a single datacenter, but some applications will require redundancy across datacenters in order to protect against datacenter failures. An interesting question is whether we can provide that level of redundancy without dramatically impacting the performance of the system.
Introduction to RAMCloud
...
Articles about RAMCloud (Web and print media, written by people outside the RAMCloud group)
...
RAMCloud has now reached a level of maturity where it is suitable for production use with real applications. The links below provide information on how to set up a RAMCloud cluster and on the RAMCloud APIs for applications.
- How do I know whether RAMCloud makes sense for my application?
- How do I set up and run a RAMCloud cluster?
- What does the application-level interface to RAMCloud look like?
- Technical support
RAMCloud Performance
These links contain measurements of RAMCloud performance, as well as comparisons between RAMCloud and other systems.
- clusterperf benchmarks (benchmarks run on a cluster to measure basic things such as read and write latency and throughput)
- Perf benchmarks (microbenchmarks measuring various low-level operations on a single machine, such as atomic increment)
- Latency Patterns in Infiniband (talk by Alex Modkovich, May 2012)
- RPC Latency Profile (the lifetime of a write operation, measured January 2012)
- SSD Experiments (July 2011)
- Redis vs. RAMCloud
Information for RAMCloud Developers
These links provide information for people who are working on the RAMCloud code base; it is intended primarily for the internal use of the RAMCloud team at Stanford, but may be useful to other people as well.
- General Information for Developers (how to get started as a RAMCloud developer)
- Build System Structure
- Running Recoveries with recovery.py
- Coding Conventions
- Style Guide
- Documentation Guidelines
- Amendments to Current Documentation and Testing Guidelines
- Software Design Philosophy – John Ousterhout's pet peeves
- RAMCloud C Style for EMACS
- Vim Settings
- Copyright Notice
- Mfence – x86 instructions for limiting instruction reordering
- Inside Concurrency Primitives
- Wireshark PluginDallyFastNetwork.pdf
- NetBeans IDE tips
- Measuring RAMCloud PerformanceNetBeans tips
The RAMCloud Test Cluster
These links contain information about the cluster we use for RAMCloud testing at Stanford. Unfortunately not all of this information is completely up to date.
- Cluster Intro – information about our cluster for newcomers
- Cluster Configuration – for sysadmins
- Cluster Custodian - rotatiing responsibility for managing the cluster and providing technical support
Design notes
Project history and status
Related information
Miscellaneous topics
Old Home Page is Below... this will soon be deleted
Introduction to RAMCloud
- RAMCloud Tech Talks (Videos of presentations on various RAMCloud topics)
- RAMCloud Papers
- Project History
- Current team members
...
- New Contributor Checklist
- Developer mailing list: ramcloud-dev
- Bug Tracker
- Code review tool
- Git repo: see General Information for Developers
- IRC channel: #ramcloud on freenode.
- This is used to coordinate usage of the RAMCloud cluster. Anytime you are using the cluster you should be listening on this channel; if you don't respond to comments on the channel, your jobs may be killed.
- Transcripts of this channel may be found here
- Dumpstr tool for viewing reports (mostly performance data)
- Documentation, generated nightly from the source code
Development
...
RAMCloud
...
RAMCloud Cluster
Cluster
...
- Cluster Tasks
- Machine Evaluations
- Compiling RAMCloud on CentOS
- Tips from Charlie & CoCluster Configuration – for sysadmins
- Controlling Machines Remotely via IPMI
- Updating BIOS automatically with PXE and FreeDOS
- Infiniband Tools and Debugging
- Updating Mellanox NIC Firmware (to eliminate limit on timeouts)
- Cluster Inventory
- Dead Machines
- New Infiniband Fabric Notes
- Mellanox HW and Infiniband Notes
Informational
...
- Assumptions
- Back-of-the Envolope Calculations: rough estimates of various interesting properties of the system
- RPC Protocol
- The Fastest Possible Datacenter Network (Bill Dally talk)
- Garbage Collection Resources
...