Using ¡Lo Using ¡Lock ¡Ser k ¡Server ers ¡t s ¡to ¡Sc ¡Scale ¡ ale ¡ Re Real-‑ -‑Time ¡ ¡Locking ¡ ¡Pro rotocols: ¡ ¡ Chasing ¡Ever-‑Increasing ¡Core ¡Counts C ATHERINE ¡E. ¡N EMITZ , ¡T ANYA ¡A MERT , ¡J AMES ¡H. ¡A NDERSON
ContenIon-‑SensiIve ¡Access C 8 ¡= ¡2 ¡ 8 ¡ C 6 ¡= ¡5 ¡ 7 ¡ 6 ¡ 6 ¡ ? ¡ 5 ¡ 5 ¡ ? ¡ 4 ¡ blocking ¡ 4 ¡ C 8 ¡= ¡1 ¡ 8 ¡ 3 ¡ overhead ¡ 3 ¡ 2 ¡ 8 ¡ 2 ¡ &me ¡ 8 ¡ 1 ¡ 7 ¡ 1 ¡ A ¡ B ¡ A ¡ B ¡ 2 ¡
Using ¡Lo Using ¡Lock ¡Ser k ¡Server ers ¡t s ¡to ¡Sc ¡Scale ¡ ale ¡ Re Real-‑ -‑Time ¡ ¡Locking ¡ ¡Pro rotocols: ¡ ¡ Chasing ¡Ever-‑Increasing ¡Core ¡Counts 3 ¡
Challenge: ¡Blocking ¡Chains # ¡of ¡processors: ¡ m=4 ¡ Processing ¡capacity ¡lost: ¡ ¡ 75% ¡ A ¡ B ¡ C ¡ D ¡ E ¡ 4 ¡
Challenge: ¡Blocking ¡Chains # ¡of ¡processors: ¡ m=4 ¡ Processing ¡capacity ¡lost: ¡ ¡ 75% ¡ A ¡ B ¡ C ¡ D ¡ E ¡ 4 ¡
Challenge: ¡Blocking ¡Chains # ¡of ¡processors: ¡ m=32 ¡ Processing ¡capacity ¡lost: ¡ ¡ 97% ¡ A ¡ B ¡ C ¡ D ¡ . ¡. ¡. ¡ 5 ¡
Challenge: ¡Blocking ¡Chains # ¡of ¡processors: ¡ m=32 ¡ Processing ¡capacity ¡lost: ¡ ¡ 97% ¡ . ¡. ¡. ¡ A ¡ B ¡ C ¡ D ¡ . ¡. ¡. ¡ 5 ¡
Cost ¡of ¡low ¡blocking: ¡high ¡overhead C-‑RNLP: ¡ C. ¡JarreS, ¡B. ¡Ward, ¡and ¡J. ¡Anderson. ¡A ¡conten&on-‑sensi&ve ¡fine-‑grained ¡locking ¡protocol ¡for ¡ mul&processor ¡real-‑&me ¡systems. ¡ RTNS ¡2015 . ¡ J. ¡Mellor-‑Crummey ¡and ¡M. ¡ScoS. ¡Algorithms ¡for ¡scalable ¡synchroniza&on ¡of ¡shared-‑memory ¡ MCS: ¡ mul&processors. ¡ Transac/ons ¡on ¡Computer ¡Systems , ¡9(1), ¡1991. ¡ ¡ 6 ¡
Pr Propo posed ¡So sed ¡SoluIo luIon: ¡Lo n: ¡Lock ¡Ser k ¡Server ers s 7 ¡
Four ¡lock ¡server ¡paradigms • ImplementaIon • EvaluaIon Lock ¡server ¡coordinaIon ¡protocol Con Contri ribuIon ons s 8 ¡
PlaQorm ¡DescripIon Socket ¡1 ¡ Socket ¡2 ¡ dual-‑socket, ¡ ¡ 18-‑cores-‑per-‑socket ¡ ¡ Intel ¡Xeon ¡E5-‑2699 ¡ Cores ¡0-‑17 ¡ Cores ¡18-‑36 ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L3 ¡(shared ¡on ¡socket) ¡ L3 ¡(shared ¡on ¡socket) ¡ 9 ¡
PlaQorm ¡DescripIon Socket ¡1 ¡ Socket ¡2 ¡ Cores ¡0-‑17 ¡ Cores ¡18-‑36 ¡ Core ¡18 ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L3 ¡(shared ¡on ¡socket) ¡ L3 ¡(shared ¡on ¡socket) ¡ 9 ¡
Standard ¡C-‑RNLP Core ¡8 ¡ request ¡ lock ¡state ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ Socket ¡2 ¡ L3 ¡ L3 ¡ Socket ¡1 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 10 ¡
Standard ¡C-‑RNLP Core ¡8 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ Socket ¡2 ¡ L3 ¡ L3 ¡ Socket ¡1 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 10 ¡
The ¡Idea ¡ Remote ¡Core ¡Locking ¡ ◦ used ¡to ¡reduce ¡cri&cal-‑sec&on ¡lengths ¡[1] ¡ ¡ We ¡developed: ¡lock ¡servers ¡ ◦ used ¡to ¡reduce ¡overhead ¡ Lock ¡server: ¡a ¡process ¡dedicated ¡to ¡ performing ¡lock ¡and ¡unlock ¡func&ons ¡ [1] ¡J. ¡Lozi, ¡F. ¡David, ¡G. ¡Thomas, ¡J. ¡Lawall, ¡and ¡G. ¡Muller. ¡Remote ¡core ¡locking: ¡migra&ng ¡cri&cal-‑ sec&on ¡execu&on ¡to ¡improve ¡the ¡performance ¡of ¡mul&threaded ¡applica&ons. ¡ USENIX ¡ATC ¡2012 . ¡ 11 ¡
Lock ¡Server ¡Paradigms locality ¡ Global ¡ Local ¡ #1 ¡ Sta2c ¡ mobility ¡ Floa2ng ¡ 12 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ enqueue ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ enqueue ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ submit ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ submit ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ submit ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ dequeue ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ request ¡ Lock ¡Server ¡ submit ¡ enqueue ¡ cri&cal ¡sec&on ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ submit ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ Lock ¡Server ¡ enqueue ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ enqueue ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ Lock ¡Server ¡ enqueue ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ submit ¡ cri&cal ¡sec&on ¡ dequeue ¡ 13 ¡
Paradigm ¡#1: ¡StaIc ¡Global Core ¡0 ¡ Core ¡8 ¡ Lock ¡Server ¡ enqueue ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ dequeue ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L3 ¡ Core ¡35 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ request ¡ Disadvantage: ¡lose ¡a ¡core ¡ submit ¡ cri&cal ¡sec&on ¡ submit ¡ 13 ¡
Lock ¡Server ¡Paradigms locality ¡ Global ¡ Local ¡ #1 ¡ Sta2c ¡ mobility ¡ #2 ¡ Floa2ng ¡ 14 ¡
Lock ¡Server ¡Paradigms locality ¡ Global ¡ Local ¡ -‑ ¡Lose ¡1 ¡core ¡ Sta2c ¡ + ¡L1 ¡cache ¡affinity ¡ mobility ¡ #2 ¡ Floa2ng ¡ 14 ¡
Lock ¡Server ¡Paradigms locality ¡ Global ¡ Local ¡ -‑ ¡Lose ¡1 ¡core ¡ Sta2c ¡ Key ¡insight: ¡blocked ¡requests ¡are ¡busy-‑wai&ng, ¡using ¡CPU ¡ + ¡L1 ¡cache ¡affinity ¡ mobility ¡ #2 ¡ Floa2ng ¡ 14 ¡
Recommend
More recommend