在我们带有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
我们有一个四端口Intel nic应该支持它:
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)
但是,它似乎没有用于任何网络流量:
[root@or-rtlb01 ~]# cat /sys/class/dma/dma*/bytes* 0 0 0 0 0 0 0 0
有谁知道如何制作它所以ioat用于网络流量?
内核是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