知识卡片

高并发场景为何偏爱无锁

专业/工作 · 1107.d

内容

直觉上加锁保护数据代价似乎很小,但当核数达到二三十甚至更多时情况会反过来:锁竞争带来的等待、上下文切换、缓存行在核间来回搬运的开销,往往比数据拷贝本身更伤性能。这也是为什么DPDK在关键路径(如收发包队列)上几乎不用传统锁,而是把重要数据结构挪到像[[无锁环形缓冲区如何免锁]]这样的无锁环境——不是因为无锁理论上更”高级”,而是核数越多锁竞争的边际代价增长越快,无锁结构用更复杂的CAS重试逻辑换掉了这部分随核数恶化的等待成本。

参考来源

《深入浅出DPDK》第4章《同步互斥机制》