我们有一个 Intel 82598EB 10GBE NIC。网络负载由大量小型 UDP 数据包组成。为了模拟 DDoS,我们从另一台服务器推送了 ~100k pps 小型 UDP 数据包(仅几兆比特的带宽)。当我们这样做时,%soft CPU 使用率会达到 100%,导致服务器无法使用并丢弃数据包。
内核是 3.8.5,ixgbe 3.13.10 我们已经做了一些调整来降低中断率(rx-usecs:300),但问题并没有解决。有没有办法检查为什么软中断会占用这么多 CPU,即使中断率不高?
谢谢你!
答案1
我知道这已经过时了;但我主要是为了回复遇到类似问题的用户。
有几种方法可以检查中断:
cat /proc/interrupts
记录每个 CPU 和 IO 设备的中断。grep cpu /proc/stat
第 6 列和第 7 列包含irq
统计softirq
数据。top
和htop
;观察si
,如果您将 htop 更改为 CPU 的高级显示模式,您可以看到si
和hi
。- 要获取历史数据请安装
sysstat
;要获取特定中断数据请参见sar -I XALL
。 - 您也可以使用
perf
。
因为这很可能是驱动程序问题(或者 NIC 出现故障),所以我会检查接口上是否有任何overruns
或errors
;如果没有,请查看驱动程序是否有更新。