LSE编译指令
在多核、原子锁争抢严重的情况下,在GCC编译选项中添加LSE(Large System Extensions)相关选项,可以减缓锁竞争。
LL/SC(Load-link/Store-condition)原子指令需要把共享变量先load到本核所在的L1 Cache中进行修改,在锁竞争少的情况下性能较好,但在锁竞争激烈时会导致系统性能下降严重。Armv8.1规范中引入了新的原子操作指令扩展LSE,将计算操作放到L3 Cache去做,增大数据共享范围,减少Cache一致性耗时,在锁竞争激烈时可以提升锁的性能。
LL/SC指令(ldaxr&stlxr):
LSE指令(ldaddal):
MySQL源码文件中,CMakeLists.txt文件中使用“-march=armv8-a+lse”编译选项,使用原子操作指令扩展LSE特性,以达到性能优化的目的。
父主题: 原理描述