1 / 27

Consistency

Consistency. What is consistency?. Consistency model: A constraint on the system state observable by applications Examples: Local/disk memory : Database:. Single object consistency, also called “ coherence ”. write x=5. read x (should be 5). time. x:=x+1; y:=y-1. assert(x+y==const).

stash
Download Presentation

Consistency

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Consistency

  2. What is consistency? • Consistency model: • A constraint on the system state observable by applications • Examples: • Local/disk memory : • Database: Single object consistency, also called “coherence” write x=5 read x (should be 5) time x:=x+1; y:=y-1 assert(x+y==const) Consistency across >1 objects time

  3. Consistency challenges • No right or wrong consistency models • Tradeoff between ease of programmability and efficiency • E.g. what’s the consistency model for web pages? • Consistency is hard in (distributed) systems: • Data replication (caching) • Concurrency • Failures

  4. Example application program CPU 0 CPU 1 • Is this program correct? READ/WRITE READ/WRITE Memory system x=1 If y==0 critical section y=1 If x==0 critical section

  5. Example x=1 If y==0 critical section y=1 If x==0 critical section • CPU0’s instruction stream: W(x) R(y) • CPU1’s instruction stream: W(y) R(x) • Enumerate all possible inter-leavings: • W(x)1 R(y)0W(y)1 R(x)1 • W(x)1W(y)1R(y)1R(x)1 • W(x)1W(y)1 R(x)1R(y)1 • …. • None violates mutual exclusion

  6. An example distributed shared memory • Each node has a local copy of state • Read from local state • Send writes to the other node, but do not wait

  7. Consistency challenges: example W(x)1 W(y)1 x=1 If y==0 critical section y=1 If x==0 critical section

  8. Does this work? W(x)1 W(y)1 R(x)0 R(y)0 x=1 If y==0 critical section y=1 If x==0 critical section

  9. What went wrong? W(x)1 W(y)1 R(x)0 R(y)0 CPU1 sees: W(y)1 R(x)0 CPU0 sees: W(x)1 R(y)0

  10. Strict consistency • Each operation is stamped with a global wall-clock time • Rules: • Each read gets the latest write value • All operations at one CPU have time-stamps in execution order

  11. W must have timestamp later than R Contradicts rule 1: R must see W(x)1 Strict consistency gives “intuitive” results • No two CPUs in the critical section • Proof: suppose mutual exclusion is violated CPU0: W(x)1 R(y)0 CPU1: W(y)1 R(x)0 • Rule 1: read gets latest write CPU0: W(x)1 R(x)0 CPU1: W(y)1 R(x)0

  12. Sequential consistency • Strict consistency is not practical • No global wall-clock available • Sequential consistency is the closest • Rules: There is a total order of ops s.t. • Each CPUs’ ops appear in order • All CPUs see results according to total order (i.e. reads see most recent writes)

  13. Sequential consistency is also intuitive • Recall our proof for correctness • Enumerate all possible total orders s.t.: • Each CPUs’ ops appear in order • All CPUs see results according to total order (i.e. reads see most recent writes) • Show no total order violates mutual excl

  14. No total order can explain explain this execution Native DSM example gives no sequential consistency W(x)1 W(y)1 R(x)0 R(y)0 CPU1 sees: W(y)1 R(x)0 W(x)1 CPU0 sees: W(x)1 R(y)0 W(y)1

  15. Sequential consistency is easier to implement • There’s no notion of real time • System is free to order concurrent events • However, when the system finishes a write or reveals a read, it commits to certain partial orders

  16. Requirement for sequential consistency • Each processor issues requests in the order specified by the program • Do not issue the next request unless the previous one has finished • Requests to an individual memory location (storage object) are served from a single FIFO queue. • Writes occur in a single order • Once a read observes the effect of a write, it’s ordered behind that write

  17. Native DSM violates R1,R2 W(x)1 W(y)1 R(x)0 R(y)0 • Read from local state • Send writes to the other node, but do not wait R1: a processor issues read before waiting for write to complete R2: 2 processors issue writes concurrently, no single order

  18. Ivy distributed shared memory • What does Ivy do? • Provide a shared memory system across a group of workstations • Why shared memory? • Easier to write parallel programs with than using message passing • We’ll come back to this choice of interface in later lectures

  19. Ivy architecture Each processor’s local memory keeps a subset of all pages If page not found in local memory, request from remote node • Each node caches read pages • Why? • Can a node directly write cached pages?

  20. Ivy aims to provide sequential consistency • How? • Always read a fresh copy of data • Must invalidate all cached pages before writing a page. • This simulates the FIFO queue for a page because once a page is written, all future reads must see the latest value • Only one processor (owner) can write a page at a time

  21. Ivy implementation • The ownership of a page moves across nodes • Latest writer becomes the owner • Why? • Challenge: • how to find the owner of a page? • how to ensure one owner per page? • How to ensure all cached pages are invalidated?

  22. Ivy: centralized manager Page#, copy_set, owner p1, {..}, {A} manager Page#, access p1, read A B C

  23. p1, {C}, {A} 5:RC 2:RQ 3:RF 4:p1 Page#, access p1, read Ivy: read Page#, copy_set, owner • Page fault for p1 on C • C sends RQ(read request) to M • M sends RF(read forward) to A, M adds C to copy_set • A sends p1 to C, C marks p1 as read-only • C sends RC(read confirmation) to M p1, {}, {A} Manager A B C Page#, access p1, read

  24. p1, {}, {B} 3:IV 2:WQ 5:WF 7:WC 4:IC 6:p1 Page#, access p1, nil p1, write p1, nil Ivy: write Page#, copy_set, owner • Page fault for p1 on B • B sends WQ(write request) to M • M sends IV(invalidate) to copy_set = {C} • C sends IC(invalidate confirm) to M • M clears copy_set, sends WF(write forward) to A • A sends p1 to B, clears access • B sends WC(write confirmation) to M p1, {C}, {A} Manager A B C Page#, access Page#, access p1, write p1, read

  25. Ivy properties • Does Ivy work with our example app? • Why does it need RC and WC messages? x=1 If y==0 critical section y=1 If x==0 critical section

  26. How about failures? • How does Ivy recover from failure? • Do Ivy’s invariants hold across failure?

More Related