1 / 39

SNZI: Scalable Non-Zero Indicator

SNZI: Scalable Non-Zero Indicator. Yossi Lev (Brown University & Sun Microsystems Laboratories) Joint work with: Faith Ellen (University of Toronto) Victor Luchangco and Mark Moir (Sun Microsystems Laboratories). Presence Indicator. Threads Arrive and Depart a room

ghita
Download Presentation

SNZI: Scalable Non-Zero Indicator

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. SNZI: ScalableNon-Zero Indicator Yossi Lev (Brown University & Sun Microsystems Laboratories) Joint work with: Faith Ellen (University of Toronto) Victor Luchangco and Mark Moir (Sun Microsystems Laboratories)

  2. Presence Indicator • Threads Arrive and Depart a room • Query: Is there anybody in there? Room

  3. Simple Solution: Counter • Threads Arrive and Depart a room • Query: Is there anybody in there? • Problem: Not Scalable Room 0 1 2 1 0 Counter

  4. Simple Solution: Counter • Problem: Not Scalable • Arrive/Depart nonscalable • Query nonscalable • Observation:Counter Semantics too strong • Answers: how many threads in room • All we asked: are there any threads in room • Task: Exploit weaker semantics to develop A Scalable Non-Zero Indicator (SNZI)

  5. SNZI Specification • State: • Surplus: a nonnegative integer • Operations: • Arrive: increment surplus • Depart: decrement surplus • Query: return whether surplus ≠ 0 • Well Formedness: Surplus ≥ 0

  6. Solution’s Requirements • Linearizable • Lock Free • Query reads a 1-bit indicator in a given word • Update using LL/SC • Captures modifications by the outside world (spurious failures) • Scalability: Minimize modifications to indicator bit

  7. Agenda • Two SNZI solutions • Base solution: Separate indicator and surplus data (Query scalability) • Hierarchical solution: Implement one SNZI using the other (Arrive/Depart scalability) • Applications • Performance

  8. Separate Surplus and Indicator:Naïve Attempt • A simple counter and an indicator bit • Set or UnSet bit after updating counter • 0  1 transition: set the bit • 1  0 transition: unset the bit Room 0 1 2 1 0 Counter Indicator

  9. Separate Surplus and Indicator:Naïve Attempt • A simple counter and an indicator bit • Set or UnSet bit after updating counter • What can go wrong? Zzzz… Oh oh…I’m in the dark! Room 0 1 2 1 0 Zzzz… Counter Indicator

  10. Separate Surplus and Indicator:Naïve Attempt • A simple counter and an indicator bit • Set or UnSet bit after updating counter • What can go wrong? • Delay in setting bit causes unnoticed arrivals • Delay in unsetting bit causes obsolete writes

  11. Separate Surplus and Indicator:Our solution • 1. Add an “Announce” bit to the counter word:Says: “Indicator needed to be set” • Set announce on 0  1 transition • Clearannounce after setting indicator • “Help” setting indicator if announce bit set

  12. Separate Surplus and Indicator:Our solution • 1. Add an “Announce” bit to the counter word:Says: “Indicator needed to be set” • Set announce on 0  1 transition • Clearannounce after setting indicator • “Help” setting indicator if announce bit set 0 false Room 0 1 2 1 Counter &Announce bit Indicator

  13. Separate Surplus and Indicator:Our solution • 1. Add an “Announce” bit to the counter word:Says: “Indicator needed to be set” • Set announce on 0  1 transition • Clearannounce after setting indicator • “Help” setting indicator if announce bit set Zzzz… 1 true Room 0 1 2 1 Counter &Announce bit Indicator

  14. Separate Surplus and Indicator:Our solution • 1. Add an “Announce” bit to the counter word:Says: “Indicator needed to be set” • Set announce on 0  1 transition • Clearannounce after setting indicator • “Help” setting indicator if announce bit set Zzzz… 2 true Room 0 1 2 1 Counter &Announce bit Indicator

  15. Separate Surplus and Indicator:Our solution • 1. Add an “Announce” bit to the counter word:Says: “Indicator needed to be set” • Set announce on 0  1 transition • Clearannounce after setting indicator • “Help” setting indicator if announce bit set Zzzz… 2 false Room 0 1 2 1 Counter &Announce bit Indicator

  16. Separate Surplus and Indicator:Our solution • 2. Prevent obsolete writes:Unset the indicator using LL/SC • Read counter in between, unset only if still 0 1 false Room 0 1 2 1 Counter &Announce bit Indicator

  17. Wasn’t writtenbefore LL Indicatorwasn’t writtenin between Separate Surplus and Indicator:Our solution • 2. Prevent obsolete writes:Unset the indicator using LL/SC • Read counter in between, unset only if still 0 LL( ) Read Counter, If still 0 SC(, false) 0 false Room 0 1 2 1 Counter &Announce bit Indicator

  18. Base SNZI Hierarchical SNZI Hierarchical SNZI • Base SNZI took care of Query Scalability • Hierarchical SNZI: Arrive/Depart Scalability • Implement SNZI using a parent SNZI • Parent surplus > 0 iff a child surplus > 0 • Arrange solution in treeArrive/Depart at leaves, Query the root Filter

  19. Hierarchical SNZI:The Basics • Invariant: Parent surplus > 0 iff child surplus > 0 • Similar to base SNZI, use a counter • 0  1 transition triggers Arrive at parent • 1  0transition triggers Depart at parent • Help arriving at parent during 0  1 transition • Unlike base SNZI • Use intermediate value ½ : 0  ½  1 • Parent is not a bit: it has a surplus • Undo extraarrivals

  20. Hierarchical SNZI Increment Counter • Invariant: Parent surplus > 0 iff child surplus > 0 Room 0 0 Counter Parent SNZISurplus

  21. Hierarchical SNZI Increment Counter: 0  ½ • Invariant: Parent surplus > 0 iff child surplus > 0 Room ½ 0 Counter Parent SNZISurplus

  22. Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Try ½  1 transition • Invariant: Parent surplus > 0 iff child surplus > 0 Room ½ 1 Counter Parent SNZISurplus

  23. Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Try ½  1 transition • Invariant: Parent surplus > 0 iff child surplus > 0 Room 1 1 Counter Parent SNZISurplus

  24. Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Try ½  1 transition • Invariant: Parent surplus > 0 iff child surplus > 0 Room ½ 1 Counter Parent SNZISurplus

  25. Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Read Counter as ½: Help Arrive at Parent • Invariant: Parent surplus > 0 iff child surplus > 0 Room ½ 1 Counter Parent SNZISurplus

  26. Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Read Counter as ½: Help Arrive at Parent Try ½  1 transition • Invariant: Parent surplus > 0 iff child surplus > 0 Room ½ 2 Counter Parent SNZISurplus

  27. Only one succeeds: single contribution to parent per 01 Hierarchical SNZI Increment Counter: 0  ½ Arrive at Parent Try ½  1 transition Undo: Depart at Parent Read Counter as ½: Help Arrive at Parent Try ½  1 transition Update counter for myself • Invariant: Parent surplus > 0 iff child surplus > 0 Room 1 2 1 Counter Parent SNZISurplus

  28. Caveats • Counter must have a version number • Avoid the ABA problem • Also in Base algorithm • Undoing arrives at parent must happen after the executing Arrive incremented the counter • Helper defers undoing an Arrive operation until after incrementing the counter for itself • Otherwise indicator might “flicker” Detailed scenarios in the paper

  29. Applications • Hybrid Transactional Memory (ASPLOS 06) • HW and SW transactions run concurrently • HW transactionspay overhead for conflict detection with SW transactions • Avoid overhead if no SW transactions are running: Are there any SW transactions out there? • Query performance is importantExecuted by HW transactions

  30. Read Indicators • STM: Read OwnershipIs any transaction reading this location? • In addition: • Reset operation: • All readers logically “disappear” • New readers can arrive and depart before old readers departed • Indicator should work as if old readers are not there • Needed because writer invalidate old readers

  31. 1975 SNZI-R • Added an Epoch to the indicator • Indicator set iff someone in room that arrived in the current epoch • Operations: • Reset starts a new epoch • Arrive at current epoch • Depart at the epoch we arrived at • Query returns bit and current epoch Reset 2007 Epoch 1975 Room Indicator

  32. 1975 2007 SNZI-R • Added an Epoch to the indicator • Indicator set iff someone in room that arrived in the current epoch • Operations: • Reset starts a new epoch • Arrive at current epoch • Depart at the epoch we arrived at • Query returns bit and current epoch Epoch 2007 Room Indicator

  33. Evaluation • System: 48-processor Sun FireTM 6800 • Experiment: • Visiting threads: keep arriving and departing. • Query thread: keeps querying the indicator. • Various tree depths • Measured: • Visit (Arrive+Depart) and Query throughput when varying #visiting threads • Compared with a simple counter implementation

  34. Performance: Query Scalability

  35. Performance: Visiting Scalability

  36. Performance: Visiting Scalability • SuperSNZI: Simple counter with a SNZI indicator • Arrive by modifying counter if not contended • Use SNZI otherwise • Depart accordingly

  37. Performance: SuperSNZI • SuperSNZI: Simple counter with a SNZI indicator • Arrive by modifying counter if not contended • Use SNZI otherwise • Depart accordingly

  38. Conclusion • Presence indicator • Can be implemented using a simple counter • Counter semantics too strong  Doesn’t scale • Exploits the weaker semantics we needto provide SNZI: A Scalable Non-Zero IndicatorPerform much better than a simple counter • Useful in practice

  39. Thank You!

More Related