IOAT ativado mas não sendo usado com o Linux?

11

Em nossos R610s com igb versão 4.1.2, vejo o carregamento do módulo ioatdma (e carregado com 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

Temos uma porta quádrupla Intel nic que deve suportá-la:

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)

No entanto, parece que não está sendo usado para nenhum tráfego de rede:

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

Alguém sabe como fazer com que o ioat seja usado para tráfego de rede?

O kernel é 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

    
por Kyle Brandt 14.02.2013 / 19:05

2 respostas

4

Qual o tamanho dos pacotes que você está enviando? Por padrão, o driver IOATDMA é usado apenas em tamanhos grandes de pacotes. Você pode ver a configuração atual com:

cat /proc/sys/net/ipv4/tcp_dma_copybreak

Se você quiser que o valor seja menor, você pode configurá-lo usando sysctl. Por exemplo, para definir o tamanho do pacote como 1, use:

sysctl net.ipv4.tcp_dma_copybreak=1
    
por 21.07.2014 / 16:52
2

Antes de iniciar, atualize o servidor completo, como o BIOS, incluindo o firmware do disco rígido.

Em segundo lugar, use sempre o mais recente driver de rede Intel igb . Apenas compile a partir da fonte.

O BIOS ativa o DCA e o IOATDMA. No linux tente isto:

# modprobe ioatdma

# dmesg

Você deve ver o driver ioatdma carregado.

Agora, o driver igb é diferente de ixgbe , que é de 10 GBps. Como eu não uso igb , posso dizer-lhe para tentar parar novamente a rede /etc/init.d/network stop e rmmod igb e modprobe igb para ver se existem diferenças e postar resultados se você puder pls.

    
por 04.01.2014 / 18:06