什么networking负载需要网卡轮询vs中断?
有没有人有一些数据或基本的计算,可以回答帧合并(NAPI)是否需要时,并且每帧一个中断足够? 我的硬件:IBM BladeServer HS22,Broadcom 5709千兆网卡硬件(MSI-X),带有双至强E5530四核处理器。 主要目的是Squid代理服务器。 交换机是一个不错的思科6500系列。 我们的基本问题是,在高峰时段(100 Mbps的stream量,只有10,000 pps),延迟和丢包增加。 我已经做了很多调整和内核升级到2.6.38,它已经改善了数据包丢失,但延迟仍然很差。 坪是零星的; 在本地Gbps局域网上跳到200ms。 即使CPU /内存负载很好,Squid的平均响应也会从30ms跳到500 + ms。 在高峰期间,中断会上升到大约15,000 /秒。 Ksoftirqd没有使用太多的CPU; 我已经安装了irqbalance来平衡IRQ(eth0和eth1各8个)在所有内核之间的平衡,但这并没有多大帮助。 英特尔的网卡看起来从来没有遇到过这样的问题,但是要做到刀片系统和固定configuration硬件的事实,我们对于Broadcom来说是坚持不懈的。 一切都指向NIC是主要的罪魁祸首。 我现在最好的想法是尝试减less中断,同时保持低延迟和吞吐量高。 bnx2不幸的是不支持adaptive-rx或者tx。 NAPI与自适应中断线程应答提供了一个很好的中断调整的概况,但是没有关于如何计算给定解决方法的最佳ethtool coalesce设置的具体信息。 有没有更好的方法,然后只是试错? 上述工作负载和硬件configuration是否需要NAPI? 或者它应该能够在每个数据包的单个中断上生存?