一句话:提出 NIC 与 KVS 协同设计的 C-4,通过区分并分别处理独立写与依赖写,在写密集负载下降低尾延迟并提升吞吐。
键值存储是在线服务的基础设施,但现有高性能设计主要针对读多写少、偏斜负载。生产环境写密集型负载增多,论文将 KVS 负载分为四类,指出当前设计仅够支持两类。瓶颈在并发控制:按线程分区写入避免同步、提升吞吐,却随核数和写比例造成负载不均。作者提出 NIC 与 KVS 软件协同的 C-4,将写分为可均衡的独立写与须排队的依赖写:NIC 动态分区独立写,软件层将依赖写合批。评估显示,写密集型负载下 C-4 将 99 分位尾延迟降低 1.3-5 倍,吞吐最高提升 1.7 倍。
Key-Value Stores (KVS) are foundational infrastructure components for online services. Due to their latency-critical nature, today’s best-performing KVS contain a plethora of full-stack optimizations commonly targeting read-mostly, popularity-skewed workloads. Motivated by production studies showing the increased prevalence of write-intensive workloads, we break down the KVS workload space into four distinct classes, and argue that current designs are only sufficient for two of them. The reason is that KVS concurrency control protocols expose a fundamental tradeoff: avoiding synchronization by partitioning writes across threads is mandatory for high throughput, but necessarily creates load imbalance that grows with core count and write fraction. We break this tradeoff with C-4, a co-design between NIC hardware and KVS software that judiciously separates write requests into two classes: independent ones that can be balanced across threads, and dependent ones which must be queued. C-4 dynamically partitions independent writes with the NIC to increase the load balancing flexibility of current KVS designs, and adds a software layer to the KVS to compact dependent writes into batches. Our evaluation shows that for write-intensive workloads, C-4 reduces 99th% tail latency by 1.3−5× and improves throughput by up to 1.7×.