DistOS 2023W 2023-01-25

From Soma-notes
Revision as of 02:08, 26 January 2023 by Soma (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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