Title:
Efficient programming of massive-memory machines

dc.contributor.advisor Gavrilovska, Ada
dc.contributor.author Merritt, Alexander Marshall
dc.contributor.committeeMember Schwan, Karsten
dc.contributor.committeeMember Kim, Taesoo
dc.contributor.committeeMember Ramachandran, Umakishore
dc.contributor.committeeMember Qureshi, Moinuddin K.
dc.contributor.committeeMember Milojicic, Dejan S.
dc.contributor.department Computer Science
dc.date.accessioned 2018-01-22T21:08:58Z
dc.date.available 2018-01-22T21:08:58Z
dc.date.created 2017-12
dc.date.issued 2017-08-24
dc.date.submitted December 2017
dc.date.updated 2018-01-22T21:08:59Z
dc.description.abstract New and emerging memory technologies combined with enormous growths in data collection and mining within industry are giving rise to servers with massive pools of main memory — terabytes of memory, disaggregated bandwidth across tens of sockets, and hundreds of cores. But, these systems are proving difficult to program efficiently, posing scalability challenges for all layers in the software stack, specifically in managing in-memory data sets. Larger and longer-lived data sets managed by key-value stores require minimizing over- commitments of memory, but current designs trade off performance scalability and memory bloat. Furthermore, opaque operating system abstractions like virtual memory and ill-matched, non-portable interfaces used to manipulate them make the expression of semantic relationships between applications and their data difficult: sharing in-memory data sets requires careful control over internal address mappings, but mmap, ASLR, and friends remove this control. To explore and address these challenges, this dissertation is composed of two pieces: (1) We introduce and compare a new design for key-value stores, a multi-head log-structured allocator whose design makes explicit use of a machine’s configuration to support linear scalability of common read- and write-heavy access patterns. Our implementation of this design, called Nibble, is written in 4k lines of Rust. (2) Going beyond key-value stores, the second part of this dissertation introduces new general support within the operating system enabling applications to more explicitly manage and share pointer-based in-memory data: we introduce explicit control over address space allocation and layout by promoting address spaces as an explicit abstraction. Processes may associate with multiple address spaces, and threads may arbitrarily switch between them to access infinite data set sizes without encountering typical bottlenecks from legacy mmap interfaces. Our implementation of this design is in DragonFly BSD.
dc.description.degree Ph.D.
dc.format.mimetype application/pdf
dc.identifier.uri http://hdl.handle.net/1853/59202
dc.language.iso en_US
dc.publisher Georgia Institute of Technology
dc.subject Key-value store
dc.subject Address space
dc.subject Operating system
dc.subject Big data
dc.subject Memory
dc.subject Scalability
dc.subject Concurrency
dc.title Efficient programming of massive-memory machines
dc.type Text
dc.type.genre Dissertation
dspace.entity.type Publication
local.contributor.advisor Gavrilovska, Ada
local.contributor.corporatename College of Computing
local.contributor.corporatename School of Computer Science
relation.isAdvisorOfPublication 74b4106d-3b1c-40a5-993e-dea3eecbdba3
relation.isOrgUnitOfPublication c8892b3c-8db6-4b7b-a33a-1b67f7db2021
relation.isOrgUnitOfPublication 6b42174a-e0e1-40e3-a581-47bed0470a1e
thesis.degree.level Doctoral
Files
Original bundle
Now showing 1 - 1 of 1
Thumbnail Image
Name:
MERRITT-DISSERTATION-2017.pdf
Size:
2.17 MB
Format:
Adobe Portable Document Format
Description:
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
LICENSE.txt
Size:
3.87 KB
Format:
Plain Text
Description: