DistOS 2023W 2023-01-25: Difference between revisions
| No edit summary | |||
| (One intermediate revision by the same user not shown) | |||
| Line 7: | Line 7: | ||
| * What is a coherence policy in DSM? | * What is a coherence policy in DSM? | ||
| * Do you think we use DSM today?  Why or why not? | * Do you think we use DSM today?  Why or why not? | ||
| * How similar are modern multi-core systems to networked DSM implementations? | * How similar are modern multi-core systems to networked DSM implementations? How are they different? | ||
| * What is unclear or confusing about DSM & the readings? | * What is unclear or confusing about DSM & the readings? | ||
| ==Notes== | |||
| <pre> | |||
| 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 | |||
| </pre> | |||
Latest revision as of 02:08, 26 January 2023
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