[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