在ixgbe的高负载情况下,CPU占用率高%

我们有一个Intel 82598EB 10GBE网卡。 networking负载由很多小型的UDP数据包组成。 为了模拟一个DDoS,从另一个服务器我们推送了〜100k pps的小UDP包(只有几Mbit的带宽)。 当我们这样做,%软CPU使用率达到100%,使服务器不可用和丢弃数据包。

内核是3.8.5,ixgbe 3.13.10我们已经做了一些调整来降低中断率(rx-usecs:300),但没有解决问题。 有没有办法来检查为什么softirqs使用这么多CPU即使中断率不高?

谢谢!

我知道这是旧的; 但我主要是回答用户来这里有类似的问题。

有几种方法来检查中断:

  • cat /proc/interruptslogging每个CPU和IO设备的中断。
  • grep cpu /proc/stat 6和第7列包含irqsoftirq统计信息。
  • tophtop ; 观察si ,如果将htop更改为CPU的高级显示模式,则可以看到sihi
  • 要获取历史数据,请安装sysstat ; 获取特定的中断数据请参见sar -I XALL
  • 你也可以使用perf

由于这很可能是一个驱动程序问题(或NIC失败),我会检查接口上是否有overrunserrors ; 如果没有看到是否有更新的驱动程序。