Parallel Systems: Case Studies Flashcards
What are the challenges in creating an OS for parallel machines?
- NUMA effects (accessing local memory is faster)
- Deep memory hierarchy
- False sharing
What are principles of parallel machines?
1) Cache conscious decisions
2) Limit shared system data structures
3) Keep memory access local
How do we make parallel OSes scalable?
For every subsystem:
- Determine functional needs of service to ensure concurrency
- Minimize shared data structures
- Where possible, replicate/partition system data structures (less locking, more concurrency)
- Use cache coherence as a safety blanket
How does Tornado succeed as a parallel machine OS?
- Uses a clustered object
- Illusion of a single object (uses different object references)
- Degree of clustering a choice of the implementer
- Uses Protected Procedure Call for consistency
- Every object is a protected domain
How would could page fault services be made possible in a parallel OS?
- Page table is common
- Page fault handler for each node
- Page table data structure shared by all handlers
- Page fault services will be serializable
What are the two scenarios for parallel OSes and page fault services?
- Easy scenario: multiprocess workload (threads are independent, page tables are separate)
- Hard scenario: multithreaded workload where address space is shared, page table is shared, and entries shared in processor TLB
How would Tornado handle memory management?
- Process object = PCB (shared by threads on the same CPU)
- Divides address space into regions, managed by a file cache manager
- Carve up backing store (taken care of by file cache manager)
- Page frame manager is taken care of by DRAM
- Page I/O is taken care of by cached object representation
In Tornado, how is the process object shared?
Object is replicated per CPU
In Tornado, how are region objects shared?
Partial replication for group of CPUs
In Tornado, how are the file cache manager objects shared?
True shared object
In Tornado, how is locking handled?
- Hierarchical locking kills concurrency and is bad
- Non-hierarchical locking and existence guarantee will be sufficient (use reference count and existence guarantee instead)
What are the characteristics of Tornado?
- Object oriented design for scalability
- Multiple implementations of OS objects
- Optimize common case (page fault handling vs region destruction)
- No hierarchical locking
- Limited sharing of OS data structures
- Pays attention to cache affinity
What are the ideas behind Corey?
- Functions like Exokernel in that it exposes kernel mechanisms to applications
- Address ranges in an application
- Shares (intent to share with other threads)
- Dedicated cores for kernel activity (confines locality for kernel threads to a few cores)
What are the motivations behind Corey?
- For structuring OS for shared memory multiprocessors
- Limits sharing kernel data structures, which limits concurrency and increases contention
- Involves apps on top of the OS to give hints to the kernel
What is the idea behind Cellular Disco?
Virtualization of multiprocessing machines