Using ¡Lo Using ¡Lock ¡Ser k ¡Server ers ¡t s ¡to ¡Sc ¡Scale ¡ ale ¡ Re Real-‑
- ‑Time ¡
Using Lo Using Lock Ser k Server ers t s to Sc Scale ale Re - - PowerPoint PPT Presentation
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 ,
2 ¡
1 ¡
7 ¡ 2 ¡ 8 ¡ 3 ¡ 6 ¡ 5 ¡ 4 ¡ 7 ¡
1 ¡ 8 ¡ 6 ¡ 3 ¡ 5 ¡ 4 ¡ 2 ¡ 8 ¡
blocking ¡ ? ¡ ? ¡
C6 ¡= ¡5 ¡ C8 ¡= ¡1 ¡ C8 ¡= ¡2 ¡
8 ¡
3 ¡
4 ¡
# ¡of ¡processors: ¡
Processing ¡capacity ¡lost: ¡ ¡
4 ¡
# ¡of ¡processors: ¡
Processing ¡capacity ¡lost: ¡ ¡
5 ¡
# ¡of ¡processors: ¡
Processing ¡capacity ¡lost: ¡ ¡
5 ¡
# ¡of ¡processors: ¡
Processing ¡capacity ¡lost: ¡ ¡
. ¡. ¡. ¡
6 ¡
MCS: ¡ 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. ¡
mul&processors. ¡Transac/ons ¡on ¡Computer ¡Systems, ¡9(1), ¡1991. ¡ ¡
7 ¡
8 ¡
9 ¡
Socket ¡2 ¡ Socket ¡1 ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L3 ¡(shared ¡on ¡socket) ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L3 ¡(shared ¡on ¡socket) ¡
Cores ¡0-‑17 ¡ Cores ¡18-‑36 ¡
dual-‑socket, ¡ ¡ 18-‑cores-‑per-‑socket ¡ ¡ Intel ¡Xeon ¡E5-‑2699 ¡
L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡
9 ¡
Socket ¡2 ¡ Socket ¡1 ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L3 ¡(shared ¡on ¡socket) ¡ Core ¡18 ¡ L1 ¡Data ¡ L1 ¡Instr. ¡ L2 ¡(shared ¡between ¡two ¡cores) ¡ ¡ L3 ¡(shared ¡on ¡socket) ¡
Cores ¡0-‑17 ¡ Cores ¡18-‑36 ¡
10 ¡
Core ¡8 ¡ Core ¡35 ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Socket ¡1 ¡ Socket ¡2 ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ lock ¡state ¡
10 ¡
Core ¡8 ¡ Core ¡35 ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Socket ¡2 ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ Socket ¡1 ¡
11 ¡
[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. ¡
12 ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
Core ¡8 ¡ Core ¡35 ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ cri&cal ¡sec&on ¡ dequeue ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ enqueue ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ dequeue ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
13 ¡
14 ¡
14 ¡
+ ¡L1 ¡cache ¡affinity ¡
14 ¡
+ ¡L1 ¡cache ¡affinity ¡
15 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Lock ¡Server ¡ enqueue ¡ dequeue ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
15 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
15 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
15 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡
15 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
15 ¡
16 ¡
+ ¡L1 ¡cache ¡affinity ¡
16 ¡
+ ¡L1 ¡cache ¡affinity ¡
cache ¡affinity ¡
16 ¡
+ ¡L1 ¡cache ¡affinity ¡
cache ¡affinity ¡
17 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
17 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡
17 ¡
Core ¡8 ¡ Core ¡35 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ Core ¡0 ¡ Core ¡18 ¡ submit ¡ submit ¡ cri&cal ¡sec&on ¡ request ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L3 ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡ L1 ¡ L1 ¡ . ¡. ¡. ¡
18 ¡
Server ¡1 ¡ Server ¡2 ¡ Global ¡Execu&on ¡ PaSern ¡
1 ¡ 5 ¡ 6 ¡ 7 ¡ 2 ¡ 3 ¡
Reader/reader ¡locking ¡ protocol ¡(R2LP) ¡
4 ¡
18 ¡
Server ¡1 ¡ Server ¡2 ¡ Global ¡Execu&on ¡ PaSern ¡
1 ¡ 5 ¡ 6 ¡ 7 ¡ 2 ¡ 3 ¡
Reader/reader ¡locking ¡ protocol ¡(R2LP) ¡
4 ¡
6 ¡ 5 ¡ 1 ¡ 4 ¡
18 ¡
Server ¡1 ¡ Server ¡2 ¡ Global ¡Execu&on ¡ PaSern ¡
1 ¡ 5 ¡ 6 ¡ 7 ¡ 2 ¡ 3 ¡
Reader/reader ¡locking ¡ protocol ¡(R2LP) ¡
4 ¡
6 ¡ 2 ¡ 7 ¡ 3 ¡ 5 ¡ 1 ¡ 4 ¡
18 ¡
Global ¡Execu&on ¡ PaSern ¡
6 ¡ 2 ¡ 7 ¡ 3 ¡ 5 ¡ 1 ¡
Reader/reader ¡locking ¡ protocol ¡(R2LP) ¡
4 ¡
Original ¡C-‑RNLP ¡bound: ¡ (ci ¡+ ¡1)LMAX ¡
18 ¡
Global ¡Execu&on ¡ PaSern ¡
6 ¡ 2 ¡ 7 ¡ 3 ¡ 5 ¡ 1 ¡
Reader/reader ¡locking ¡ protocol ¡(R2LP) ¡
4 ¡
Original ¡C-‑RNLP ¡bound: ¡ Two-‑server ¡C-‑RNLP ¡bound ¡with ¡R2LP: ¡ (ci ¡+ ¡1)LMAX ¡ (ci,s ¡+ ¡1)(LMAX,1 ¡+ ¡LMAX,2) ¡ LMAX,1 ¡ LMAX,1 ¡ LMAX,2 ¡ LMAX,2 ¡ LMAX,2 ¡ LMAX,1 ¡
19 ¡
+ ¡L1 ¡cache ¡affinity ¡
cache ¡affinity ¡ + ¡L3 ¡cache ¡affinity ¡
19 ¡
+ ¡L1 ¡cache ¡affinity ¡
+ ¡L1 ¡cache ¡affinity ¡
cache ¡affinity ¡ + ¡L3 ¡cache ¡affinity ¡ coordina&on ¡with ¡R2LP, ¡ addi&onal ¡blocking ¡ considera&ons ¡
20 ¡
21 ¡
Global ¡ Local ¡ Sta2c ¡
+ ¡L1 ¡cache ¡affinity ¡
+ ¡L1 ¡cache ¡affinity ¡
Floa2ng ¡ -‑ ¡No ¡guaranteed ¡
cache ¡affinity ¡ + ¡L3 ¡cache ¡affinity ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
No ¡lock ¡server ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Sta&c ¡Global ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Floa&ng ¡Global ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Blocking ¡(microseconds) ¡ Number ¡of ¡tasks ¡
22 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Blocking ¡(microseconds) ¡ Number ¡of ¡tasks ¡
22 ¡
Global ¡ Local ¡ Sta2c ¡
+ ¡L1 ¡cache ¡affinity ¡
+ ¡L1 ¡cache ¡affinity ¡
Floa2ng ¡ -‑ ¡No ¡guaranteed ¡
cache ¡affinity ¡ + ¡L3 ¡cache ¡affinity ¡
23 ¡
24 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
No ¡lock ¡server ¡
24 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Floa&ng ¡Global ¡
24 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Floa&ng ¡Local ¡
24 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
24 ¡
Overhead ¡(microseconds) ¡ Number ¡of ¡tasks ¡
Blocking ¡(microseconds) ¡ Number ¡of ¡tasks ¡
24 ¡
25 ¡
26 ¡
27 ¡
28 ¡
1 ¡ 2 ¡ 5 ¡ 3 ¡ 6 ¡ 4 ¡ 7 ¡ 8 ¡ 5 ¡ 3 ¡ 1 ¡ (ci ¡+ ¡1)LMAX ¡= ¡(7 ¡+1)(5) ¡= ¡40 ¡&me ¡units ¡ 40 ¡&me ¡units ¡
40 ¡&me ¡units ¡ 40 ¡&me ¡units ¡
29 ¡
1 ¡ 2 ¡ 5 ¡ 3 ¡ 6 ¡ 4 ¡ 7 ¡ 8 ¡
Server ¡1: ¡(3 ¡+ ¡1)(5 ¡+ ¡5) ¡= ¡40 ¡ Server ¡2: ¡(3 ¡+ ¡1)(5 ¡+ ¡5) ¡= ¡40 ¡
30 ¡
1 ¡ 2 ¡ 5 ¡ 3 ¡ 6 ¡ 4 ¡ 7 ¡ 8 ¡
32 ¡&me ¡units ¡ 32 ¡&me ¡units ¡
Server ¡1: ¡(3 ¡+ ¡1)(3 ¡+ ¡5) ¡= ¡32 ¡ Server ¡2: ¡(3 ¡+ ¡1)(3 ¡+ ¡5) ¡= ¡32 ¡
36 ¡&me ¡units ¡
31 ¡
1 ¡ 2 ¡ 5 ¡ 3 ¡ 6 ¡ 4 ¡ 7 ¡ 8 ¡
Server ¡1: ¡(1 ¡+ ¡1)(1 ¡+ ¡5) ¡= ¡12 ¡ Server ¡2: ¡(5 ¡+ ¡1)(1 ¡+ ¡5) ¡= ¡36 ¡
12 ¡&me ¡units ¡
32 ¡
36 ¡&me ¡units ¡
Uneven ¡split ¡by ¡cri&cal-‑sec&on ¡length ¡
12 ¡&me ¡units ¡ 40 ¡&me ¡units ¡
Baseline ¡– ¡no ¡lock ¡server ¡
40 ¡&me ¡units ¡ 40 ¡&me ¡units ¡
Arbitrary ¡split ¡
32 ¡&me ¡units ¡ 32 ¡&me ¡units ¡
Even ¡split ¡by ¡cri&cal-‑sec&on ¡length ¡
Server ¡1: ¡ Server ¡2: ¡ Server ¡1: ¡ Server ¡2: ¡ Server ¡1: ¡ Server ¡2: ¡
33 ¡
Global ¡ Local ¡ Sta2c ¡
+ ¡L1 ¡cache ¡affinity ¡
+ ¡L1 ¡cache ¡affinity ¡
Floa2ng ¡ -‑ ¡No ¡guaranteed ¡
cache ¡affinity ¡ + ¡L3 ¡cache ¡affinity ¡
1 ¡ 2 ¡ 5 ¡ 3 ¡ 6 ¡ 4 ¡ 7 ¡ 8 ¡
36 ¡&me ¡units ¡ 12 ¡&me ¡units ¡
Server ¡Coordina&on: ¡R2LP ¡
dx.doi.org/10.4230/DARTS.4.2.2 ¡
34 ¡
35 ¡
four-‑socket, ¡6-‑cores-‑per-‑socket ¡ Intel ¡Xeon ¡L7455 ¡ L1 ¡data: ¡32KB ¡ L1 ¡instruc&on: ¡32KB ¡ L2: ¡3MB ¡ L3: ¡12MB ¡
36 ¡
automo&ve ¡benchmarks ¡for ¡free. ¡WATERS ¡2015. ¡
37 ¡
lightweight ¡event ¡tracing ¡toolkit. ¡OSPERT ¡2007. ¡
nes&ng ¡depth ¡ percent ¡of ¡lock ¡requests ¡
89.054 ¡ 8.643 ¡ 2.288 ¡0.015 ¡
¡ Non-‑nested ¡lock ¡request ¡
¡ With ¡Dynamic ¡Group ¡Locks ¡(DGLs) ¡
38 ¡
lock(A) lock(B) //critical section unlock(B) unlock(A) lock(A) //critical section unlock(A) lock(A) //critical section unlock(A) lock(A,B) //critical section unlock(A,B)
¡ Nested ¡lock ¡request ¡
39 ¡
40 ¡
mul&processor ¡real-‑&me ¡systems. ¡ ¡ECRTS ¡2012. ¡
Sequen&al ¡resource ¡acquisi&on: ¡cri&cal-‑sec&on ¡length ¡O(mD) ¡ Dynamic ¡group ¡locks: ¡no ¡worst-‑case ¡cri&cal-‑sec&on ¡infla&on, ¡ ¡ same ¡asympto&c ¡bounds ¡
nested ¡spin ¡locks. ¡RTCSA ¡1995. ¡