我想设置英特尔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/