[MASOCH-L] RES: Placa de rede PCI-Express em Linux

Henrique de Moraes Holschuh henrique.holschuh at ima.sp.gov.br
Tue Jan 11 09:15:20 BRST 2011


On 10-01-2011 20:04, Rafael M. Koike wrote:
> A própria DELL vende placas PCI-E com chipset broadcom
> http://www1.la.dell.com/br/pt/empresa/Networking/nic_broadcom_5708_toe/pd.as
> px?refid=nic_broadcom_5708_toe&cs=brbsdt1&s=bsd
>
> Abaixo com chipset Intel
> http://www.waz.com.br/_produtos/?p=89891
> http://www.waz.com.br/_produtos/?p=92946
>
> Mas vale lembrar que alem do chipset da placa que pode fazer muita coisa via
> hardware deixando a CPU mais livre para fazer outras tarefas temos também a
> velocidade do barramento PCI-Express que vai de 1x a 16x e isso impacta no
> througput entre interface PCI-E e cpu/memória (Vai dar diferença de
> performance)

Se você vai prestar atenção nisso, as regras são as seguintes:

1. Placa de rede gigabit Intel ET dual, ou ET2 quad, ou as placas
    10G mais novas da Intel.  As placas devem possuir no mínimo 16 filas
    TX/RX para gigabit, e 256 filas TX/RX para 10Gbit.

2. PCIe do MCH ou CPU (nunca use as PCIe do IOH).  Precisa conhecer a
    topologia da placa mãe e escolher a placa mãe certa (está no manual
    da placa mãe).

3. MSI-X ativo e funcional, todas as acelerações de rede ativas, suporte
    muiltiqueue e de RX/TX steering ativo e configurado (kernel 2.6.36+).

4. Nunca virtualizar via Xen/KVM.  Utilizar SR-IOV (o NIC funciona como
    uma switch) e network namespaces (Linux containers/lxc) com veth.  A
    diferença de performance é de 5x a 20x.

5. Utilizar Xeon X5550/X5650+ (ou alguns Core i5/i7 bem específicos).
    No caso dos Xeon, se possuir mais de um processador, lembrar que é
    NUMA e isso IMPLICA em fazer toda a configuração de memória,
    interrupt e application pinning para manter as interrupções e acesso
    a memória local a cada processador.  Placas que prestam vão ter duas
    northbridges, cada uma ligada a um processador via QPI.  Isso também
    deve ser levado em conta na escolha dos slots PCIe para os NIC, e
    no pinning.

6. Desativar qualquer política de QoS e shaper que não seja multiqueue
    (acho que vai sobrar só o PRIO e SFQ).  Reduzir o tamanho da fila
    dos NICs para algo mais decente, para manter a latência sob controle.

7. Remover suporte a ebtables e qualquer outra porcaria que fique no
    caminho dos pacotes.  Quanto menos iptables, melhor.  O certo é
    remover o suporte iptables se puder.

8. Configurar o kernel para manter muita memória *livre* (e não como
    cache ou buffer), aumentar o tamanho da tabela de rotas, etc.

Com isso um servidor dual X5550 com memórias rápidas roteia cerca de
20Gbps em pacotes médios.  O limite é, e vai continuar sendo, PPS...

Chega a 1.5Mpps sem muita dor.  Mais que isso, precisa de bastante 
cuidado trabalho (mas é possível, se o TX/RX steering estiver 
funcionando e existirem fluxos e cores suficientes).

Com pacotes maiores e muitos fluxos, chega aos 40Gbps.

-- 
Henrique de Moraes Holschuh <hmh at ima.sp.gov.br>
IM@ - Informática de Municípios Associados
Engenharia de Telecomunicações
TEL +55-19-3755-6555/CEL +55-19-9293-9464

Antes de imprimir, lembre-se de seu compromisso com o Meio Ambiente
e do custo que você pode evitar.


More information about the masoch-l mailing list