Discussion Questions
- What is the dream of DSM?
- What makes DSM hard?
- Why can't we have a general solution to DSM?
- Why are consistency models so important to DSM?
- What is a coherence policy in DSM?
- Do you think we use DSM today? Why or why not?
- How similar are modern multi-core systems to networked DSM implementations? How are they different?
- What is unclear or confusing about DSM & the readings?
Notes
Lecture 6
---------
Group reports
- make sure they are more like meeting minutes, not just
summaries of the readings
- mention points of confusion, conflicts, questions, in addition to
what was in the readings
- don't need to name names to protect the guilty
- explain the concepts then that are mentioned so the document has utility
afterwards (say when studying for the midterm and final)
- can use bullet points, but they should be wordy bullet points
Discussion questions
What is the dream of DSM?
- make a bunch of computers behave as if they have one shared pool of memory
- doesn't matter where the memory is, it can all be used
What makes DSM hard?
- networking makes it possible, but...
- the memory ISN'T shared, we're simulating sharing
- and it is impossible to make the semantics completely identical
to shared memory without killing performance
- because at the end of the day, each CPU can only access data that is in its own RAM
- (so we're always making copies)
Why can't we have a general solution to DSM?
- in order to maximize performance, we have to fit the architecture to the code's access patterns
- if access is perfectly random nothing will work
- perfect locality - well, why did you bother with DSM
- are we sharing data mostly read only? Or will we need concurrent writes?
when are we doing each?
Why are consistency models so important to DSM?
- what sort of guarantees are we placing on the interactions?
- how deterministic do we need things to be?
- comes down to what happens when things happen "at the same time"
- for correctness, we normally need a deterministic sequential
model of execution
- but for performance maybe we can relax this
What is a coherence policy in DSM?
- how do we do updates?
- typically involves validation because it is fastest (you don't have a current copy, someone else does, if you need it go ask for it)
Do you think we use DSM today? Why or why not?
- we generally don't use DSM for sharing memory between multiple nodes/hosts
- we'll just do the messaging ourselves, tends to be more efficient
- HOWEVER, we do use them inside all multicore/multi processor systems!
- this is how the distributed caches & cores all act like there is
just one pool of RAM
How similar are modern multi-core systems to networked DSM implementations? How are they different?
- see above!
Why are we talking about DSM here even though it isn't used at a large scale?
- example of an idea that is very powerful and useful at a certain scale
- however, it doesn't scale to larger systems and so we need different ideas
What modern CPUs do to make multicore work is black magic, very tricky stuff
- they really are distributed systems
In fact, if you want modern multicore systems to perform best, you minimize the amount of shared memory that your application uses
- communication is what kills the performance of all distributed applications,
so you limit it as much as possible