转发:
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吧