Research into kernel-bypass, RDMA, and in-memory storage has resulted in distributed storage systems that can provide on-demand access to billions of pieces of information per second, but the benefit of these fast systems has not yet trickled down to applications. A key problem is that today, these systems are fast in part because they are simplistic and stripped-down, which limits how applications can interact with data.
The goal of this project has been to generalize the benefits of fast networking to support full, realistic applications. The work has spanned three thrusts.
Foremost, is a new model of stored procedures for μs-scale in-memory storage that overcomes the simplistic data models of today's fast, in-memory stores The goal is to eliminate inefficiency and forced data movement that comes from simplistic get() and put() storage interfaces, and the goal is to do it without sacrificing the performance of running native code on stored data (Splinter and Sandstorm).
For low-latency in-memory storage to be efficient it must also scale in response to changes in workload with minimum impact (especially on storage tail latency, since it hurts applications that collect data in real-time at scale). Hence, another goal has been minimizing the impact of data migration (Rocksteady) and replication (Tailwind) for in-memory storage, along with dynamically reapportioning memory resources among application caches (Memshare).
Finally, we have built several applications on top of scale-out, in-memory storage including real-time distributed aggregation, inference serving for machine learning models, state-of-the-art performance in real-time graph querying, and a fault-tolerant control plane for a 4G mobile control plane (ECHO).