在使用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 stop
和rmmod igb
和modprobe igb
再次查看是否有任何差异和后期结果,如果你可以请。