我想设置英特尔10G NIC使用的RX/TX队列数。让我解释一下原因:

我在Dell R720系统上使用X520类型的Intel 10G NIC。我正在使用ixgbe版本3.6.7-k。 Ubuntu 3.2.0-59中的内核。

我正在计算机的24个内核中的4个上运行我的网络应用程序。目前,NIC正在使用流导向器,因此我有24个TX和RX队列,而大多数IRQ最终都在运行该应用程序的4个内核上运行。

但是,我看到一些IRQ正在其他20个队列上运行(这可能是由于流向 Controller 采样了大约20%的流量,所以有些流量通过常规RSS进行)。现在,我不希望在其他20个内核上运行任何IRQ,因为它们正在执行不同的任务,而该任务已被运行的IRQ损坏。

我尝试将中断的亲和性仅设置为我使用的4个内核,但这不适用于流导向器。我想更好的方法是只使用4个RX/TX队列并将它们分配给专用内核。但是我找不到在ixgbe驱动程序中设置RX/TX队列数量的方法(尽管对于我熟悉的其他10G驱动程序(例如Broadcom的bnx2x)来说,这非常简单)。

任何想法?

最佳答案

使用最新的Linux内核源代码(从3.18.0-rc1开始)中的ixgbe版本(当前为3.19.1-k)是不可能的。

您需要从e1000.sf.net获取最新的ixgbe驱动程序(当前为3.22.3),该驱动程序支持RSS参数。从 modinfo ixgbe :



因此,如果您有一个ixgbe NIC并需要4个队列,则需要在modprobe.conf(或您的发行版中的等效项)中添加以下行:

options ixgbe RSS=4

然后,您将要为/proc/interrupts中与您的NIC相匹配的irq设置/proc/irq/*/smp_affinity cpu掩码。

关于networking - ixgbe : setting the number of RX/TX queues,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23730268/

10-13 08:52