启用IOAT但不能用于Linux?

在使用igb版本4.1.2的R610上,我看到了ioatdma模块加载(并加载了lsmod):

ioatdma: Intel(R) QuickData Technology Driver 4.00 ioatdma 0000:00:16.0: irq 80 for MSI/MSI-X ioatdma 0000:00:16.1: irq 81 for MSI/MSI-X ioatdma 0000:00:16.2: irq 82 for MSI/MSI-X ioatdma 0000:00:16.3: irq 83 for MSI/MSI-X ioatdma 0000:00:16.4: irq 84 for MSI/MSI-X ioatdma 0000:00:16.5: irq 85 for MSI/MSI-X ioatdma 0000:00:16.6: irq 86 for MSI/MSI-X ioatdma 0000:00:16.7: irq 87 for MSI/MSI-X 

我们有一个四端口英特尔公司应该支持它:

 07:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 07:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 08:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 08:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 

但是,它看起来不是用于任何networkingstream量:

 [root@or-rtlb01 ~]# cat /sys/class/dma/dma*/bytes* 0 0 0 0 0 0 0 0 

有谁知道如何使它ioat用于networkingstream量?

内核是Linux or-rtlb01.ds.stackexchange.com 3.7.7-1.el6.elrepo.x86_64 #1 SMP Mon Feb 11 22:28:07 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

你发送的数据包有多大? 默认情况下,IOATDMA驱动程序仅用于大数据包大小。 您可以通过以下方式查看当前设置:

 cat /proc/sys/net/ipv4/tcp_dma_copybreak 

如果你想要的值更低,你可以使用sysctl来设置它。 例如,要将数据包大小设置为1,请使用:

 sysctl net.ipv4.tcp_dma_copybreak=1 

开始之前,更新包括硬盘固件在内的BIOS等完整的服务器。

其次,总是使用最新的英特尔networking驱动程序igb 。 只是从源头上编译它。

BIOS启用DCA和IOATDMA。 在Linux中试试这个:

# modprobe ioatdma

# dmesg

你应该看到加载的ioatdma驱动程序。

现在, igb驱动程序与10GBps的ixgbe不同。 由于我根本不使用igb ,所以我可以告诉你尝试停止networking/etc/init.d/network stoprmmod igbmodprobe igb再次查看是否有任何差异和后期结果,如果你可以请。