Black-box Concurrent Data Structures for NUMA Architectures Irina Calciu (VRG) Siddhartha Sen (MSR) Mahesh Balakrishnan (Yale) Marcos K. Aguilera (VRG)
Concurrent Data Structures (CDS) Used everywhere: kernel, libraries, applications Issues: Difficult to design and • implement Complex and rigid • Assume uniform memory • 2
Non-Uniform Memory Access (NUMA) Cache Cache Cache Cache 3
Goals • Design efficient NUMA-aware CDS • Black-box method: works for any data structure • Application level 4
Transform sequential DS to NUMA-aware CDS e.g. insert(A), remove(B), lookup(C) op (e.g. “insert(X)”) App Sequential Thread 1 data structure resp (e.g. “OK”) App NUMA Node 1 Thread 1 App Thread 2 NUMA-aware op App NUMA Node 2 concurrent Thread 3 resp data structure App Thread 4 5
API Sequential S.ExecuteSeq (op, args) -> Result data structure S NUMA-aware N.Execute (op, args) -> Result concurrent data structure N.IsReadOnly (op) -> Boolean N 6
Our Method: Node Replication (NR) NU NUMA ¡ ¡No Node ¡ ¡1 NUMA ¡ NU ¡No Node ¡ ¡2 Local ¡Replica Local ¡Replica Synchronization between nodes Synchronization Synchronization within a node within a node Sequential data structure 7
Synchronizing Replicas (Cross-node) NU NUMA ¡ ¡No Node ¡ ¡1 NUMA ¡ NU ¡No Node ¡ ¡2 Local ¡Replica Local ¡Replica Shared ¡Log Synchronization between nodes? 8
Synchronizing Replicas (Cross-node) NUMA ¡ NU ¡No Node ¡ ¡1 NUMA ¡ NU ¡No Node ¡ ¡2 Local ¡Replica Local ¡Replica Shared ¡Log A A B C C B D E N remove ¡Z Local ¡Tail Local ¡Tail insert ¡A insert ¡B insert ¡C insert ¡D insert ¡E LogTail insert ¡N 9
Synchronizing Each Replica (Intra-node) NU NUMA ¡ ¡No Node ¡ ¡1 NU NUMA ¡ ¡No Node ¡ ¡2 Local ¡Replica Local ¡Replica Shared ¡Log Consistency of replicas? Access to replica? Access to replica? Flat Combining Flat Combining 10
Access to Replica NUMA ¡ NU ¡No Node Local ¡Replica Local ¡Tail Thread Thread Thread Thread Update ¡req Empty ¡ ¡ ¡ Read ¡req Empty ¡ ¡ ¡ Update ¡req Update ¡req Empty ¡ ¡ ¡ Empty ¡ ¡ ¡ Flat ¡Combining: ¡[Hendler et ¡al., ¡2010] 11
Access to Replica NU NUMA ¡ ¡No Node Local ¡Replica Local ¡Tail R R Thread Thread Thread Thread Update ¡req Empty ¡ ¡ ¡ Read ¡req Empty ¡ ¡ ¡ Update ¡req Read ¡req Empty ¡ ¡ ¡ Empty ¡ ¡ ¡ Flat ¡Combining: ¡[Hendler et ¡al., ¡2010] 12
Putting It All Together NU NUMA ¡ ¡No Node Local ¡Replica Shared ¡Log Local ¡Tail Thread Thread Thread Thread LogTail LogTail 13
Algorithm Summary: Replication, Log, Combining NU NUMA ¡ ¡No Node ¡ ¡1 NU NUMA ¡ ¡No Node ¡ ¡2 Local ¡Replica Local ¡Replica Shared ¡Log Consistency of replicas? Access to replica? Access to replica? Flat Combining Flat Combining 14
Server: 4 NUMA nodes 14 cores/node + hyperthreading (total 112 hardware threads) 15
Skiplist Priority Queue – 10% Updates (RWL) Readers-Writer Lock X (NR) Node Replication (FC+) FC + RWL (SL) Spinlock (FC) Flat Combining (LF) Lock-free X 60 40 ops/us 20 0 1 28 56 84 110 # threads 16
Using Replication in REDIS: 10% Updates (RWL) Readers-Writer Lock X (NR) Node Replication (FC+) FC + RWL (SL) Spinlock (FC) Flat Combining X 6 4 ops/us 2 0 1 28 56 84 110 # threads 17
Rationale • Trade memory + computation for less communication • Compact representation of operations • Limited cross-node synchronization and contention • Enable parallelism • Combiners across nodes • Readers within a node • Readers and the combiner on the same node • Leverage batching and reordering 18
Conclusion: NodeReplication Works Well • Black-box: works for any data structure • Good for small and medium size CDS • Beneficial for contended CDS 19
Thank you! icalciu@vmware.com https://research.vmware.com/
Recommend
More recommend