IOAT enabled but not being used with Linux?

On our R610s with igb version 4.1.2 I do see the ioatdma module loading (and loaded with 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

We have a quad port Intel nic that should support it:

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)

However, it looks like it isn't being used for any network traffic:

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

Does anyone know how to make it so ioat is used for network traffic?

Kernel is 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


Solution 1:

How big are the packets you're sending through? By default the IOATDMA driver is only used on large packet sizes. You can view the current setting with:

cat /proc/sys/net/ipv4/tcp_dma_copybreak

If you want the value to be lower, you can set it using sysctl. For example, to set the packet size to 1, use:

sysctl net.ipv4.tcp_dma_copybreak=1

Solution 2:

Before starting, update complete server like BIOS including hard drive firmware.

Secondly, always use latest Intel Network Driver igb. Just compile it from the source.

BIOS enable both DCA and IOATDMA. In linux try this:

# modprobe ioatdma

# dmesg

You should see the ioatdma driver loaded.

Now, the igb driver is different to ixgbe which is 10GBps one. Since I dont use igb at all, I can tell you to try to stop network /etc/init.d/network stop and rmmod igb and modprobe igb again to see if there are any differences and post results if you can pls.