网卡中断对cpu的不同绑定方式对Redis性能的影响

背景:

今天DBA对redis做了一个有趣的测试,使用redis-benmark测试在NUMA 内存架构下网卡中断所在的cpu和redis服务器所在的cpu在同一个NUMA NODE,不同的NUMA NODE,以及均匀分布在所有CPU上的性能

实验数据:

使用get命令获取50字节的key的字符串对应的value的值,key和value长度均为100字节

实验结果:

1.网卡中断队列分布在同一NUMA NODE的不同CPU上,使用redis-benmark测试得到的qps是146890,期间cpu使用率为95%

2.网卡中断队列分布在不同的NUMA NODE上,使用redis-benmark测试得到的qps是146990,期间cpu使用率为93%

3.网卡中断队列均匀分布在所有CPU上,使用redis-benmark测试得到的qps是141240,期间cpu使用率为96%

结论:

可以看到,当网卡中断队列均匀的分布在所有的cpu上时,性能最低,而当网卡中断分布在不同的NUMA NODE、同一NUMA NODE的不同CPU上的性能比较好,这只是实验结果,但是没法从cpu的亲和性的角度解释,仅仅只为了说明当我们讨论redis的性能时,其实和网卡使用的cpu配置是相关的