Investigating Split Locks on x86-64
3 days ago
- #multithreading
- #split-locks
- #cpu-performance
- 分裂锁是指跨越缓存行的原子操作,它会引发总线锁定,从而干扰其他核心的运行,导致性能下降。
- 现代CPU能够捕获分裂锁;Linux利用这一机制引入延迟,以减轻‘喧闹邻居’效应,但也会对性能造成影响。
- 在不同CPU上的测试显示,分裂锁的延迟差异很大:从对较老的AMD Piledriver架构影响较小,到对AMD Zen 2/Zen 5和Intel Arrow Lake架构影响严重。
- 分裂锁主要影响L1/L2缓存之外的缓存未命中,其性能损失体现在内存延迟和带宽上,具体取决于架构设计。
- Linux默认的分裂锁缓解机制引入了毫秒级延迟,这对于消费级系统可能过度,并可能损害用户体验。
- 程序员应避免使用分裂锁,因其性能低下且会影响其他应用程序;需要进行硬件优化来解决此问题。
- 术语‘总线锁’已过时;其实现方式因CPU设计而异,在不同系统中表现出不同的行为影响。