Kit Cischke 09/09/08 CS 5090. Disco: Running Commodity Operating Systems on Scalable Multiprocessors. Overview. Background What are we doing here? A Return to Virtual Machine Monitors What does Disco do? Disco: A Return to VMMs How does Disco do it? Experimental Results
Disco is a system VM that presents a similar fundamental machine to all of the various OS’s that might be running on the machine.
These can be commodity OS’s, uniprocessor, multiprocessor or specialty systems.
In an effort to mitigate the non-uniform effects of a NUMA machine, Disco does a bunch of stuff:
Allocating as much memory to have “affinity” to a processor as possible.
Migrates or replicates pages across virtual machines to reduce long memory accesses.
Overhead of Disco is pretty modest compared to the uniprocessor results.
Raytrace is the lowest, at only 3%. Pmake is the highest, at 16%.
The main hits come from additional traps and TLB misses (from all the flushing Disco does).
Interestingly, less time is spent in the kernel in Raytrace, Engineering and Database.
Running a 64-bit system mitigates the impact of TLB misses.
Key thing here is how 8 VM’s doesn’t require 8x the memory of 1 VM.
Interestingly, we have 8 copies of IRIX running in less than 256 MB of physical RAM!
Page migration and replication were disabled for these runs.
All use 8 processors and 256 MB of memory.
IRIX has a terrible bottleneck in synchronizing the system’s memory management code
It also has a “lazy” evaluation policy in the virtual memory system that drags “normal” RADIX down.
Overall though, check out those performance gains!
The 100% UMA results give a lower bound on performance gains from page migration and replication.
But in short, the policies work great.