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

11

На наших 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

Кайл Брандт
источник
Редхат 6 правильно?
mdpc
@mdpc: CentOS 6.3, попробовал гораздо более новое ядро, чтобы посмотреть, поможет ли это, но это не помогло. Это была вторичная проблема, обнаруженная при высоком значении si% на ksoftirqd с трафиком ipsec (не то, чтобы я ожидал разгрузки на самом трафике ipsec, но казалось бы, что вообще нет ioatdma.
Кайл Брандт,
2
Есть ли в чипсете материнской платы поддержка IOAT? IOAT включен в BIOS системы? Видите ли вы "Intel (R) I / OAT DMA Engine найден" в dmesg? Это указало бы, что NIC, который поддерживает IOAT, был найден. Вы видите "DCA отключен в BIOS" в dmesg? Это указывает на отсутствие поддержки или включения BIOS для DCA.
СУПРЯМИ
Когда я последний раз спрашивал Dell (несколько лет назад), они сказали, что BIOS R610 не поддерживает DCA и не планирует добавлять поддержку для него.
Крейг
2
Правильно, как заявили ребята, что показывает "dmesg | grep DCA"?
Данила Ладнер

Ответы:

4

Насколько велики пакеты, через которые вы отправляете? По умолчанию драйвер IOATDMA используется только для пакетов большого размера. Вы можете просмотреть текущие настройки с помощью:

cat /proc/sys/net/ipv4/tcp_dma_copybreak

Если вы хотите, чтобы значение было ниже, вы можете установить его с помощью sysctl. Например, чтобы установить размер пакета в 1, используйте:

sysctl net.ipv4.tcp_dma_copybreak=1
Боско
источник
2

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

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

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

# modprobe ioatdma

# dmesg

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

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

Эндрю Смит
источник