Sanidhya Kashyap * Irina Calciu Xiaohe Cheng Changwoo Min Taesoo Kim 1
Operations / second # threads 2
Operations / second # threads 3
Operations / second # threads 4
5
1 socket > 1 socket Oversubscribed ● Operations / second # threads Stock 6
1 socket > 1 socket Oversubscribed ● Operations / second # threads Stock 7
1 socket > 1 socket Oversubscribed ● Operations / second ● # threads Stock 8
1 socket > 1 socket Oversubscribed ● Operations / second ● # threads Stock 9
● ○ ○ ● ○ ○ ● 10
● 1 socket > 1 socket Oversubscribed Operations / second ● # threads Stock CST 11
● 1 socket > 1 socket Oversubscribed Operations / second ● # threads Stock CST 12
● 1 socket > 1 socket Oversubscribed Operations / second ● # threads Stock CST 13
● 1 socket > 1 socket Oversubscribed Operations / second ● # threads Stock CST 14
Locks’ memory footprint Stock # threads 18 140 CST ● 15
820 Locks’ memory footprint ● 140 18 # threads Stock CST Hierarchical lock 16
820 Locks’ memory footprint ● 140 18 # threads Stock CST Hierarchical lock 17
18
19
t1 Socket ID shuffler: waiter’s qnode: tail 20
t1 t2 Socket ID shuffler: waiter’s qnode: tail 21
t1 t2 t3 t4 Socket ID shuffler: waiter’s qnode: tail 22
t1 t2 t3 t4 Socket ID shuffler: waiter’s qnode: tail 23
t1 t2 t3 t4 ● → 24
25
26
27
28
29
30
● ○ ○ 31
● ○ ○ lock(): unlock(): 32
33
● ○ ○ ★ ● ○ 34
t0 Socket ID unlocked shuffler: waiter’s qnode: locked tail 35
t0 t0 Socket ID unlocked shuffler: waiter’s qnode: locked tail 36
t0 t2 t3 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 37
t0 t2 t3 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 38
t0 t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 39
t0 t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 40
t0 t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 41
t0 t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 42
t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 43
t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 44
t1 t3 t2 t4 t1 Socket ID unlocked shuffler: waiter’s qnode: locked tail 45
t1 t3 t2 t4 t1 t1 t3 t2 t4 Socket ID unlocked shuffler: waiter’s qnode: locked tail 46
● ○ ○ ● ○ ● ○ ○ https://github.com/sslab-gatech/shfllock 47
● ○ ○ 48
1 socket > 1 socket Oversubscribed ● Operations / second # threads Stock CST S HFL L OCK 49
1 socket > 1 socket Oversubscribed ● Operations / second ● ○ # threads Stock CST S HFL L OCK 50
1 socket > 1 socket Oversubscribed ● Operations / second ● ○ ● ○ # threads Stock CST S HFL L OCK 51
1 socket > 1 socket Oversubscribed ● Operations / second ● ○ ● ○ ● # threads ○ Stock CST S HFL L OCK 52
Locks’ memory footprint Stock # threads 18 140 CST 11 S HFL L OCK ● ➢ ➢ 53
Locks’ memory footprint Stock # threads 18 140 CST 11 S HFL L OCK ● ➢ ➢ 54
Improves throughput by Messages / second up to 1.5x Lock’s memory Decreases memory footprint up to 93% # threads # threads Stock CST S HFL L OCK 55
Improves throughput by Messages / second up to 1.5x Lock’s memory Decreases memory footprint up to 93% # threads # threads Stock CST S HFL L OCK 56
● ○ ○ ● ○ ● ○ ○ 57
● ○ ○ ● ○ ● ○ ○ 58
Recommend
More recommend