转发:

​SMP irq affinity与RPS/RFS的调优纪实 - 简书 (jianshu.com)​

https://www.jianshu.com/p/b29e9997c0c0

 

1. mpstat -P ALL 1  或 mpstat -I SUM -P ALL 1(有的机器得用这个命令),

2. sar -n DEV 1         显示 网络读写发生在eth1

3. cat /proc/interrupts | grep eth1    通过这个可以查看网卡队列数目,也可以查看哪个cpu占用的软中断

 

中断分为硬中断和软中断

硬中断 irq,用来收发网络平均分配到cpu上

软中断 rps,协议栈处理,脱离硬件,还不到上层应用。根据四元组hash到cpu上

软中断rfs,根据流信息,用来上层应用和硬件处理在同一个cpu上

思考:

收数据通过网络线程 epoll收数据,通过网卡硬中断触发cpu收数据,如果rfs的话,是不是也能收数据和网络线程使用同一个cpu

发送数据直接是通过工作线程发送数据,工作线程绑定了cpu,也就是 发送数据绑定了这个cpu,最好是使用rfs,rps的话分配到别的cpu上处理,就造成缓存命中下降

 

疑问:发送数据 先从用户态发送到socket缓冲区,然后是cpu先处理还是网卡处理?应该是cpu吧