We explore the design of scalable synchronization primitives for disaggregated shared memory. Porting existing synchronization primitives to disaggregated shared memory results in poor scalability with the number of application threads because they layer synchronization primitives atop cache-coherence substrates, which engenders redundant inter-core communications. Substantially higher cache-coherence latency ($\mu$s) with substantially lower bandwidths in state-of-the-art disaggregated shared memory designs amplifies the impact of such redundant communications and precludes scalability. In this work, we argue for a co-design for the cache-coherence and synchronization layers for better performance scaling of multi-threaded applications on disaggregated memory. This is driven by our observation that synchronization primitives are essentially a generalization of cache-coherence protocols in time and space. We present GCS as an implementation of this co-design. GCS employs wait queues and arbitrarily-sized cache lines directly at the cache-coherence protocol layer for temporal and spatial generalization. We evaluate GCS against the layered approach for synchronization primitives: the pthread implementation of reader-writer lock, and show that GCS improves in-memory key-value store performance at scale by 1 - 2 orders of magnitude.
翻译:我们探索用于分解共享记忆的可缩放同步原始件的设计。 将现有同步原始件移植到分解共享记忆中, 导致与应用线索数量不相称, 因为它们在分解记忆的多读应用程序的性能缩放中将原始件相匹配, 从而导致重复的跨核心通信。 大量提高缓存- 一致性( $\ mu$), 在最新分类共享记忆设计中, 带带宽大大较低 的缓存- 粘合性( $\ mu$) 放大了这种多余通信的影响, 并排除了可缩放性。 在这项工作中, 我们主张对缓存和同步层层进行共同设计, 以更好地缩放分解记忆中多读应用程序的性能缩放。 驱动这一设计的原因是, 我们观察到原始件的同步基本上是时间和空间的缓存- 一致协议协议的一般化。 GCS 使用等待队列和任意大小的缓存线直接在缓存协议层进行时间和空间一般化。 我们用GCS 来对照分层方法评估同步原始程序: 智能级执行GSlovey- sload- slocal- slodal- sal- sal- sloveyal- lavedal- sal- laveildal- lavedal- sal- sal- lavedal- sal- sal- sal- sal- sal- sal- sal- sal- slodal- sal- sal- slodaldal- sal- smaldal- smaldaldal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal- sal_