[GTER] RES: Quagga
Breno Lastra
breno.lastra at locaweb.com.br
Tue Mar 31 20:06:34 -03 2009
Pessoal,
A algum tempo atrás fiz alguns testes com afinidade de placa de rede e processadores. Cheguei a algumas conclusões que estão abaixo.
Para escolher quais CPUs a interface vai utilizar para processar o pacote, é necessário utilizar o parâmetro smp_affinity que se encontra dentro do /proc.
Por exemplo, no caso abaixo, para travar a eth1 na cpu0, eth2 na cpu1 e assim por diante:
echo 1 > /proc/irq/1257/smp_affinity
echo 2 > /proc/irq/1251/smp_affinity
echo 4 > /proc/irq/1245/smp_affinity
echo 8 > /proc/irq/1243/smp_affinity
Segue uma fonte de estudo sobre isso: http://www.cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt
É possível utilizar mais de um CPU por interface de rede, porém, isso pode causar perda de performance, ao invés de ganho. A não ser que, em servidores multiprocessados, você garanta que os cores que a interface esteja utilizando são todos do mesmo processador.
Para duas interfaces de rede, em servidor de 2 processadores físicos, utilizando todos os cores, recomendo os comandos abaixo:
echo 55 > /proc/irq/`cat /proc/interrupts | fgrep eth0 | cut -f1 -d:`/smp_affinity
echo aa > /proc/irq/`cat /proc/interrupts | fgrep eth1 | cut -f1 -d:`/smp_affinity
-----Original Message-----
From: gter-bounces at eng.registro.br [mailto:gter-bounces at eng.registro.br] On Behalf Of Antonio Carlos Pina
Sent: terça-feira, 31 de março de 2009 18:11
To: juliano at cyberweb.com.br; Grupo de Trabalho de Engenharia e Operacao de Redes
Subject: Re: [GTER] RES: Quagga
Entretanto, Juliano, Quando você distribui as interrupções, o processo de
salvar o contexto impacta imensamente na performance, fora detalhes como
cache de código.
Travando o affinity a performance é muito superior.
Abs
2009/3/31 Juliano Primavesi - Cyberweb Networks <juliano at cyberweb.com.br>
> Olha
>
> Por experiencia propria, cada nucleo nao cuida de uma porta especifica, mas
> o fato de ser multi-core, faz com que ele distribua as interrupções -> pelo
> menos no Linux. Ex:
>
> cat /proc/interrupts | egrep '(CPU|eth)'
>
> CPU0 CPU1 CPU2 CPU3
> 1243: 3139120 3144146 3139718 3141994 PCI-MSI-edge eth4
> 1245: 3 1 0 1 PCI-MSI-edge eth3
> 1246: 587740232 588829200 587764276 588764654 PCI-MSI-edge
> eth3-rx3
> 1247: 583812591 584894670 583790078 584773312 PCI-MSI-edge
> eth3-rx2
> 1248: 578423426 579435501 578347717 579388820 PCI-MSI-edge
> eth3-rx1
> 1249: 587423840 588457221 587389245 588420938 PCI-MSI-edge
> eth3-rx0
> 1250: 3497023358 3487970919 3497170186 3489171904 PCI-MSI-edge
> eth3-tx0
> 1251: 1 0 2 3 PCI-MSI-edge eth2
> 1252: 1106673229 1108477869 1106661087 1108350283 PCI-MSI-edge
> eth2-rx3
> 1253: 1104001975 1105833067 1103972047 1105684514 PCI-MSI-edge
> eth2-rx2
> 1254: 1117261860 1119095317 1117239069 1119004270 PCI-MSI-edge
> eth2-rx1
> 1255: 1116480078 1118314060 1116423970 1118218673 PCI-MSI-edge
> eth2-rx0
> 1256: 4231997586 4222764274 4232315360 4222978323 PCI-MSI-edge
> eth2-tx0
> 1257: 1 0 3 3 PCI-MSI-edge eth1
> 1258: 1847792271 1851556017 1847647345 1851241045 PCI-MSI-edge
> eth1-rx3
> 1259: 1834505847 1838190091 1834391331 1837924049 PCI-MSI-edge
> eth1-rx2
> 1260: 1828282947 1831951105 1828152953 1831674900 PCI-MSI-edge
> eth1-rx1
> 1261: 1836098669 1839761175 1836001388 1839539093 PCI-MSI-edge
> eth1-rx0
> 1262: 64346955 56302963 64592694 56708652 PCI-MSI-edge
> eth1-tx0
>
> Juliano
>
> Antonio Carlos Pina escreveu:
>
>> SMP não é realmente essencial, mas SMP affinity em um servidor permite que
>> cada núcleo cuide de uma "porta ethernet" independente, trazendo o
>> pc-router
>> para um outro nível de performance.
>>
>> Abs
>> Pina
>>
>>
>> Mais uma vez: SMP nao e' essencial para um roteador. Hoje em dia, ate' a
>>
>>
>>> pilha
>>> tcp/ip pode rodar diretamente nas placas de rede, sem muita interferencia
>>> do
>>> host processor.
>>>
>>>
>>>
>>>
>> --
>> gter list https://eng.registro.br/mailman/listinfo/gter
>>
>>
> --
> gter list https://eng.registro.br/mailman/listinfo/gter
>
--
gter list https://eng.registro.br/mailman/listinfo/gter
More information about the gter
mailing list