编辑:问题已解决。有问题的队列已用于流量控制数据包。为什么 igb 驱动程序会传播 FC 数据包以将它们丢弃(并计数)是另一个问题。但解决方案是,没有任何东西会以数据丢失的方式丢失。
非常感谢syneicon-dj,您的指点dropwatch是金币!
===原始问题供进一步参考===
我们有以下情况:
系统:有问题的服务器是带有 4 个四核氙气 cpu、128GB ECC RAM 并且运行 debian linux 的戴尔 poweredge。内核是 3.2.26。
所讨论的接口是具有四个接口的特殊 iSCSI 卡,每个接口都使用 Intel 82576 千兆位以太网控制器。
背景:在我们的一台服务器上,许多 NAS(Thecus N5200 和 Thecus XXX)使用 iSCSI 连接到专用 1GB/s 接口。我们有 5 张卡,每张卡有 4 个端口。NAS 文件管理器直接连接,之间没有切换。
两周前,我们设法清除了四个 NAS 文件管理器,并使用它们使用 mdadm 构建了一个 raid6。使用 LVM,我们可以为各种项目动态创建、缩小和/或增加存储,而不是时不时地搜索所有 NAS 文件管理器以获取可用空间。
然而,我们几乎在每个接口上都出现了大量超限,并且大量数据包被丢弃。调查表明,必须增加网络堆栈的默认设置。我使用 sysctl 调整所有设置,直到不再发生超限。
不幸的是,用于 NAS 突袭的接口仍然会丢弃大量数据包,但只有 RX。
在搜索(这里,google,metager,intel,任何地方,任何地方)之后,我们发现有关 intel igb 驱动程序的信息存在一些问题,必须完成一些工作。
因此,我下载了最新版本(igb-4.2.16),编译了具有 LRO 和单独队列支持的模块,并安装了新模块。
使用此驱动程序的所有 20 (!) 个接口现在都有 8 个 RxTx 队列(未配对)并启用了 LRO。具体的选项行是:
options igb …Run Code Online (Sandbox Code Playgroud)