我们有一个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列包含irq和softirq统计信息。 top和htop ; 观察si ,如果将htop更改为CPU的高级显示模式,则可以看到si和hi 。 sysstat ; 获取特定的中断数据请参见sar -I XALL 。 perf 。 由于这很可能是一个驱动程序问题(或NIC失败),我会检查接口上是否有overruns或errors ; 如果没有看到是否有更新的驱动程序。