
Anirudh Badam will present his preFPO on Monday December 13th at 2.30PM in Room 401 (note room!). The members of his committee are: Vivek Pai, advisor; Mike Freedman and Jennifer Rexford, readers; David Walker and Andrea LaPaugh, non-readers. Everyone is invited to attend his talk. His abstract follows below. ------------------------------ "On Scaling the Memory-Storage Boundary" In this work, we examine approaches for addressing the growing gap between the main memory of today's systems and their storage layers. The ever increasing amount of data and the need to access more of it quickly has magnified the gap between the main memory and the traditional secondary storage devices. The limited memory capacity of servers coupled with the limits of RAM density imposes a large premium on obtaining high in-memory hit-rates that are vital for today's servers. In this thesis, we focus on two new methods to bridge this gap: we create new approaches to increase the indexing efficiency of secondary storage using current main memory limits, and we also develop techniques to better integrate new high-speed storage technologies like flash memory based solid state drives (SSD) and phase change memory (PCM) into the memory hierarchy. In both cases, we can increase effective memory/storage capacity and cost effectiveness by at least an order of magnitude. First, we present the design and implementation of HashCache, an efficient hash table representation that can be used as an index for web-proxy caches, WAN accelerators, data deduplicators, and memory object caches. HashCache presents a flat, pointer-less, space-efficient and tlb-optimized hash table implementation. Using HashCache, systems can increase the amount of secondary storage that can be indexed for the same amount of main memory by up to 20 times. We also present the design and implementation of SSDAlloc, which augments RAM with new high-density, high-performance and non-volatile memory technologies. We specifically focus on hybrid RAM/SSD settings and we believe that our techniques will be equally useful in hybrid RAM/PCM settings. Using these new memory technologies via the swap-layer, which works at a page granularity, can decrease the performance and reliability of these memories, owing to their well-known limited lifetime issues. Similarly, using these memories via a filesystem/object-store interface would need intrusive application modifications. Our technique eliminates these intrusive modifications while providing high performance and reliability by managing the SSD and the RAM at an object granularity entirely via virtual memory. SSDAlloc uses the SSD as a log-structured object store and the RAM as a compact object cache while the application operates via the page-granular virtual memory. Finally, we demonstrate the benefits of SSDAlloc by developing a HashCache based memory object cache in a hybrid RAM/SSD setting using SSDAlloc. The same system built using SSDAlloc performs up to 17.1 times better when compared to the one built with the SSD as a swap-layer, and up to 3.5 times better when compared to the one built with the SSD as a log-structured swap-layer. Additionally, the system built using SSDAlloc writes up to 32 times less data when compared to both the SSD-swap based systems while requiring only a few code modifications.