在需要帧合并(NAPI)以及每帧单个中断就足够时,是否有人可以回答一些数据或基本计算?
我的硬件:IBM BladeServer HS22,Broadcom 5709千兆网卡硬件(MSI-X),具有双至强E5530四核处理器。主要用途是Squid代理服务器。交换机是一个不错的Cisco 6500系列。
我们的基本问题是,在高峰时间(100 Mbps流量,仅10,000 pps)中,延迟和数据包丢失会增加。我已经做了很多调优并将内核升级到2.6.38,它改善了数据包丢失,但延迟仍然很差。ping是零星的;在本地Gbps LAN上甚至跳到200ms。鱿鱼的平均响应从30ms跃升到500 + ms,即使CPU /内存负载很好。
在高峰期间,中断会上升到大约15,000 /秒。Ksoftirqd使用的CPU不多;我安装了irqbalance来平衡所有内核之间的IRQ(eth0和eth1分别为8个),但这并没有太大帮助。
英特尔NIC似乎从未遇到过这类问题,但是刀片系统和固定配置硬件确实存在,我们有点被Broadcoms所困扰。
一切都将NIC视为主要罪魁祸首。我现在最好的想法是尝试减少中断,同时保持较低的延迟和较高的吞吐量。
不幸的是,bnx2不支持自适应rx或tx。
该NAPI VS自适应中断线程的答案提供了中断调整的一大过看法,但是,没有具体的信息如何计算最佳ethtool的聚结给出的解决方法设置。有没有比反复试验更好的方法了?
上述工作量和硬件配置是否甚至需要NAPI?还是应该能够在每个数据包的单个中断中生存?