近期处理redhat6系统时候需要两个问题,困扰许久,经过多次排查修改参数终于验证正常,业务恢复稳定,现简单记录下处理过程中遇到的两个问题

关键字:网卡队列\CPU亲和\(%soft值高)

问题1:网卡丢包,通过ifconfig命令查看dropped值不断升高.

网卡丢包验证&cpu的irqsoft值不均衡_隔离cpu

网卡丢包验证&cpu的irqsoft值不均衡_网卡丢包_02

网卡丢包验证&cpu的irqsoft值不均衡_隔离cpu_03

解决方法 : 添加网络的队列--缓存后丢包消,默认队列长度1000

网卡丢包验证&cpu的irqsoft值不均衡_隔离cpu_04

临时添加网卡队列命令:ethtool -G eth6 rx 4096 tx 4096

命令行:ethtool -G 网卡名称 rx 4096 tx 4096
例如:ethtool -G eth6 rx 4096 tx 4096
  • 1.
  • 2.

在配置文件中配置:ETHTOOL_OPTS="-G eth5 rx 4096 tx 4096"

网卡丢包验证&cpu的irqsoft值不均衡_网卡丢包_05



名词解释:cpu的亲和和隔离

      高性能的应用需要做任务和cpu核心的绑定, 即设置CPU亲和性,绑定之后就可以让这个任务尽可能在这个核心上长时间运行,而不被切换到其他核心上去.

      为什么要设置亲和性? 要想让程序高性能运行,必须利用好高速缓存,而像L1,L2这类高速缓存,在进行定时切换任务的时候,必然会失效,从而影响程序的性能;另外减少了调度,也提升了此任务的实时性。

     亲和性也只是尽力保证任务长时间在这个核心上运行,比如一个cpu一个核心,如果一个任务绑定了核心,那岂不是其他任务就不要执行了,还有个办法就是做CPU核心的隔离。隔离CPU核心即这些CPU不再被用户空间的进程使用,内核仍然可以用,从而禁止用户空间的进程(除非手动设置affinity)调度到DPDK的核心上去.


问题2现象:通过mpstat 查看cpu软锁中断值,发现逻辑cpu编号14和15号的soft值异常高,相对其他平均不到0.5%.idle值很低.

网卡丢包验证&cpu的irqsoft值不均衡_cpu亲和_06

解决方法:开启irqbalence服务,重启主机后恢复正常.

网卡丢包验证&cpu的irqsoft值不均衡_网卡丢包_07