babylon

Use concurrent counter optimize bvar

原理

brpc的bvar在实现高并发计数器时,核心机制是采用『可遍历的线程局部变量』去除了多线程计数间的竞争。但是计数线程和收集线程之间依然存在竞争场景,尽管收集任务运行频率非常低,但为了完备性和正确性,这个竞争依然需要被合理解决。bvar在这个问题上使用了两种解法

但是对于上面几个计数器场景,理论上可以进一步进行针对性优化

示例构成

性能演示

计数性能

AMD EPYC 7W83 64-Core Processor bvar babylon
adder 12.51 ns 7.68 ns
maxer 12.53 ns 8.21 ns
int_recorder 15.48 ns 9.82 ns
latency_recorder 132.36 ns 28.66 ns