[GTER] Ethernet Hyper Threading...
Henrique de Moraes Holschuh
henrique.holschuh at ima.sp.gov.br
Thu Sep 6 15:13:00 -03 2012
On 06-09-2012 13:20, Lucas Willian Bocchi wrote:
> Me corrija se eu estiver errado, mas na documentação do Kernel
> (http://www.mjmwired.net/kernel/Documentation/IRQ-affinity.txt) não
> encontrei nenhuma referência que as placas necessitem ser MSI/MSI-X
> para funcionar o balancamento de IRQ, tanto que uso esse recurso a
> muito tempo e em placas PCI desde que saiu a série 2.6 do kernel.
Como eu disse, em MSI só round-robin dentro da mascara de affinity, e é
só um vetor por placa (problema do Linux, não do MSI. Pode ser que
FreeBSD consiga alocar um bloco maior de MSIs). Se enviar o trabalho
via soft-irq para outros cores, vai ter um custo nada pequeno da IPI,
fora risco maior de causar flush de TLB e os assuntos de cache.
> Que eu sabia a questão do MSI-X serve para fazer Receive Size
> Scaling, no qual você tem os recursos de multiqueue e que você pode
MSI-X de cara vai separar interrupções de gerenciamento das interrupções
das filas de TX/RX, ou dependendo do NIC, de TX e RX separadamente, e já
vai entregar isso em cores diferentes. Depende do driver o que é
mapeado por padrão para cada fila de RX quando não há configuração
explícita (RSS, etc).
Não lembro se dá para escalar quase-linearmente a comutação de pacotes
com o número de cores sem usar MSI-X. Algo me diz que não.
> Tenho os dois exemplos para citar
>
> 127: 2 0 0 0 8 0 0 0
> IR-PCI-MSI-edge eth4-0 128: 277818 0 0 175031325
> 0 85584 0 0 IR-PCI-MSI-edge eth4-1 129: 1313843
> 0 254801505 0 0 0 0 380766 IR-PCI-MSI-edge
> eth4-2 130: 297185 0 0 0 86806 0
> 0 170717410 IR-PCI-MSI-edge eth4-3 131: 302735 0
> 0 0 0 556734022 0 79142
> IR-PCI-MSI-edge eth4-4
(desculpe, o thunderbird destruiu a formatação)
Isso aí é MSI-X. Se fosse MSI, ia ter uma só interrupção para a placa
de rede inteira, e só poderia entregar em vários cores ou via
round-robin, ou via softirq para outro core (que resulta em queda de
performance comparado ao MSI-X, e pode até resultar em queda de
performance comparado a round-robin no APIC/IOMMU).
O kernel escreve PCI-MSI porque é um chato. Vai ver não aprovaram o
patch para diferenciar MSI e MSIX se o 3.5 ainda está escrevendo MSI :-)
O lspci -v que você postou comprova que é MSI-X.
É possível ter várias MSI por dispositivo (sempre foi, o Linux que nunca
implementou). Isso não está disponível em kernel normal e é de
utilidade discutível (estão exatamente discutindo isso para o AHCI :p).
> driver: 3c59x
Vade Retro!
--
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 gter
mailing list