Review of "The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM"

22 Sep 2015

Review of "The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM"

People find it more and more difficult to scale disk-based systems to meet the needs of large scale Web applications. In this paper, they proposed to use RAM replace the disks, and only use disks for backup and archival role. This is what RAMCloud is built on. It is a general purpose distributed hash table storage system. All data in this system will reside in DRAM. It can scale to 1000+ servers, 100+ TB data. Since all data resides in the memory, it provides only 5-10us remote RAM access latency. Although individual RAM data is volatile, a RAMCloud can use replication and backup techniques to provide data durability and availability.

RAMCloud consists of 1000-10,000 storage servers, each has a master and backup component. Master component handles access requests whereas backup process handles persistence issues. It also contains a single coordinator which might be a single point of failure and brings scalability issues. But the design tries to make this coordinator as less loaded as possible, and they also have a standby coordinator ready to take over the work when the live one crashes.

RAMCloud keeps only 1 copy in DRAM, and keeps backup copies on disk/flash which gives almost free durability. However this approach brings extra challenge to synchronizing memory and disk. The way RAMCloud handles this is when a write request comes in, there's no disk IO, instead the master sends the update to several backups, once it receives the conformation from backups, it can be sure that this update is successful. The backups will then batch up writes and flush them onto disk when it has collected a 8MB "segment". The flush will occur even when power failure happens by using techniques such as power backup.

RAMCloud can recover very quickly. Master's data are divided into partitions. When a master crashes, the coordinator picks several new recovery masters, and each read the distributed backups and recover the data into the new memory. With this parallel recovery, it can recover 64GB in 1-2 seconds.

Will this paper be influential in 10 years? Yes, I think so. It has been a trend of loading more and more data into memory. All the giant Internet services in the world uses complex caching mechanism to overcome the speed lag of disks. With RAMCloud, you don't need to think about cache anymore, because everything is in memory already. And it solves the issue of data persistence and recovery by using smart partition and backup mechanism.