MedusaVM: Decentralizing Virtual Memory System for Multithreaded Applications on Many-core

Virtual memory system multiplexes the single physical memory for multiple running processes with two centralized resources, i.e., virtual memory space and page table hierarchy. However, for multithreaded applications running a single address space, current centralized VM system design encounters severe scalability bottlenecks and significantly impedes the application speedup increment on many-core systems. This paper proposes a novel VM system called MedusaVM to scale VM system to many cores. To this end, MedusaVM partitions the global virtual memory space and page table tree in a memory-efficient way, eliminating performance interference and lock contention between cores. Moreover, MedusaVM also provides a traditional shared memory interface for multithreaded applications.

[1]  Hao Huang,et al.  tScale: A Contention-Aware Multithreaded Framework for Multicore Multiprocessor Systems , 2017, 2017 IEEE 23rd International Conference on Parallel and Distributed Systems (ICPADS).

[2]  Faith Ellen,et al.  A general technique for non-blocking trees , 2014, PPoPP '14.

[3]  Galen C. Hunt,et al.  Helios: heterogeneous multiprocessing with satellite kernels , 2009, SOSP '09.

[4]  Maged M. Michael Hazard pointers: safe memory reclamation for lock-free objects , 2004, IEEE Transactions on Parallel and Distributed Systems.

[5]  Adrian Schüpbach,et al.  The multikernel: a new OS architecture for scalable multicore systems , 2009, SOSP '09.

[6]  Haibo Chen,et al.  A case for scaling applications to many-core with OS clustering , 2011, EuroSys '11.

[7]  Anoop Gupta,et al.  Hive: fault containment for shared-memory multiprocessors , 1995, SOSP.

[8]  Eran Yahav,et al.  Practical concurrent binary search trees via logical ordering , 2014, PPoPP '14.

[9]  Nectarios Koziris,et al.  RCU-HTM: Combining RCU with HTM to Implement Highly Efficient Concurrent Binary Search Trees , 2017, 2017 26th International Conference on Parallel Architectures and Compilation Techniques (PACT).

[10]  Qi Wang,et al.  Parallel sections: scaling system-level data-structures , 2016, EuroSys.

[11]  M. Frans Kaashoek,et al.  RadixVM: scalable address spaces for multithreaded applications , 2013, EuroSys '13.

[12]  Dimitrios S. Nikolopoulos,et al.  Scalable locality-conscious multithreaded memory allocation , 2006, ISMM '06.

[13]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[14]  Haibo Chen,et al.  Scalable Read-mostly Synchronization Using Passive Reader-Writer Locks , 2014, USENIX Annual Technical Conference.

[15]  M. Frans Kaashoek,et al.  Scalable address spaces using RCU balanced trees , 2012, ASPLOS XVII.

[16]  Robert Tappan Morris,et al.  An Analysis of Linux Scalability to Many Cores , 2010, OSDI.