背景
之前开发分布式追踪系统x-apm的时候,确认了2个目标:
- x-apm的异常绝不能影响业务系统
- x-apm应该尽可能的少暂用系统资源的前提下,尽可能的快(实时)
针对第2点,用来暂存追踪数据的数据结构碰到了伪共享的问题,导致收集发送的效率不够高,所以使用的缓存行填充。
这里记录下伪共享和缓存行填充的相关内容。
基础简介
cpu cache
一个典型的cpu cache架构:
访问速度:寄存器<L1 cache<L2 cache<L3 cache<主存
所以,充分利用它的结构和机制,可以有效的提高程序的性能
这里需要注意:一个cpu中的多核共享L3 cache,而L1、L2 cache是每个核心各自拥有的;一个缓存行一般缓存64byte大小的数据