Назад | Перейти на главную страницу

IOAT включен, но не используется с Linux?

На наших R610 с igb версии 4.1.2 я действительно вижу загрузку модуля 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

Перед запуском полностью обновите сервер, например BIOS, включая прошивку жесткого диска.

Во-вторых, всегда используйте последнюю версию сетевого драйвера Intel. igb. Просто скомпилируйте его из исходников.

BIOS включает как DCA, так и IOATDMA. В linux попробуйте это:

# modprobe ioatdma

# dmesg

Вы должны увидеть загруженный драйвер ioatdma.

Сейчас igb драйвер отличается от ixgbe что составляет 10 Гбит / с. Поскольку я не использую igb вообще, я могу посоветовать вам попытаться остановить сеть /etc/init.d/network stop и rmmod igb и modprobe igb еще раз, чтобы узнать, есть ли какие-либо различия, и опубликовать результаты, пожалуйста.