Diferenças de desempenho de taxa de transferência tcp Localhost

6

Eu tenho usado o psping para medir estatísticas de largura de banda no host local em computadores diferentes: laptops, computadores domésticos e servidores . Todos eles chegam entre 100 e 200 MB / s , mas meu PowerPc no trabalho consegue chegar a 800 MB / s .

O que pode causar essas grandes diferenças se comunicando com o host local? O PowerPc supera todos os outros dispositivos que testei com um fator 4 a 8 .

Configuração do PowerPc

  • Windows 7
  • CPU Intel (R) Xeon (R) E3-1240 v3 @ 3.40GHz [Modelo 6 Família 60 Pisando 3]
  • 3.78 GFLOPS / core
  • Symantec SEP

Uma configuração de computador doméstico

  • Windows 8.1
  • CPU Intel (R) Core (TM) i7 920 a 2,67 GHz [Família Intel64 6 Modelo 26 Pisando 5] 4
  • 2.64 GFLOPS / core
  • BitDefender

comando psping

psping -4 -b -l 8k -n 20000 localhost:1234

Algumas perguntas que espero receber e gostaria de abordar de antemão

Eu posso estar bem distante, mas isso mostra meu entendimento atual das coisas, fique à vontade para me esclarecer.
  1. Antivírus relacionados
    Eu virei do componente antivírus do meu computador doméstico sem qualquer diferença perceptível. Além disso, capturei um traçado WPA ( XperfScripts) e os módulos que têm mais atividade relacionada à CPU são ntoskrnl.exe, netio.sys, tcpip.sys, ndis.sys e afd.sys. O primeiro módulo AV que aparece na imagem relacionado à CPU é o avcuf32.dll, responsável por 0,17% do total da CPU.

  2. Localhost vs. 127.0.0.1
    Eu tentei os dois e obtive os mesmos resultados em todos os computadores testados.

  3. Drivers atualizados | Os drivers no meu computador doméstico estão atualizados. Os drivers no PowerPc são gerenciados por nossa equipe de TI e atrasam um pouco, mas não muito (e o PowerPc é 4x mais rápido nos testes de qualquer maneira)

  4. netsh int tcp mostra global
    Existem algumas diferenças entre os dois PCs. Chimney Offload State e NetDMA State no meu Computador de Casa estão desabilitados enquanto no PowerPc eles são automáticos e habilitados.
    Minha rede de contatos não é boa o suficiente para saber se isso poderia explicar as diferenças, mas ler sobre o assunto, eu duvido que seja.

Editar

Detalhes da RAM PowerPC

  capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128

Detalhes da RAM Computador doméstico

    capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
   4194304    33         11          8         8       4096
    
por Lieven Keersmaekers 27.12.2014 / 23:23

1 resposta

5

Eu acredito que a razão pela qual o PowerPC no Windows 7 é muito mais rápido no localhost throughput de loopback, é porque ele pode usar o NetDMA.

O artigo da Microsoft NetDMA (drivers do Windows) define NetDMA como:

The NetDMA interface provides a generic interface for memory-to-memory direct memory access (DMA) transfers. Although the interface is designed to copy packets that are received from high-performance network interface cards (NICs), you can also use the interface for other applications. There is no direct relationship between NetDMA and NDIS.

Ao usar o loopback do host local, é lógico que operações de cópia de memória são o principal fator de rendimento, como os quadros são copiados da memória do aplicativo de origem e, em seguida, entre as camadas TCP e finalmente para a memória da aplicação-alvo.

O NetDMA pode ter um impacto, pois permite que os adaptadores de rede transfiram dados diretamente para o seu aplicativo, talvez reduzindo o número de cópias de memória mesmo para o adaptador de loopback trivial.

A ativação do NetDMA pode ser feita de duas maneiras:

  1. Insira netsh int tcp set global netdma=enabled no prompt de comando (cmd) que é executado como administrador e, em seguida, reinicialize.
  2. Regedit para HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters e crie um novo item DWORD chamado EnableTCPA com o valor 1 e, em seguida, reinicialize.

No entanto, existem dois pré-requisitos para ativar o NetDMA:

  1. O artigo da Microsoft Habilitando o NetDMA tem o seguinte:

NetDMA must be enabled in the BIOS before performing this procedure. NetDMA support is often labeled IOAT support.

  1. O artigo da Microsoft NetDMA (drivers do Windows) tem esta nota:

The NetDMA interface is not supported in Windows 8 and later.

Colocando esses dois requisitos juntos, posso arriscar que, como o NetDMA é uma função do BIOS, ele não foi implementado em UEFI , que é usado no Windows 8/2012.

A Microsoft teve, portanto, de melhorar o loopback do host local rendimento de outra maneira, especialmente para usar em Hyper-V, e, portanto, criado no Windows 8/2012 o Fast TCP Loopback , definido como:

TCP Loopback Fast Path is a new feature introduced in Windows Server 2012 and Windows 8. If you use the TCP loopback interface for inter-process communications (IPC), you may be interested in the improved performance, improved predictability, and reduced latency the TCP Loopback Fast Path can provide. This feature preserves TCP socket semantics and platform capabilities including the Windows Filtering Platform (WFP), and works on both non-virtualized and virtualized operating system instances.

The TCP loopback interface provides a simple local IPC mechanism for processes on the same operating system instance, and it can easily be switched to a remote IPC mechanism by simply changing the destination IP address.

Infelizmente, o Fast TCP Loopback não é transparente, exigindo que aplicativos emitir uma chamada do sistema WSAIoctl nos soquetes para o remetente e o receptor, portanto, não sendo retrocompatível com aplicativos de medição de largura de banda existentes como PsPing e PCATTCP .

Nos meus próprios testes no Windows 7, eu não compreendi todos os mistérios que cercam o NetDMA, mas eu consegui ligá-lo brevemente, com o benefício imediato de dobrar minha largura de banda medida pelo PsPing. Mas como NetDMA não sobreviveu a um reboot nesse computador, Eu não recomendo depender dele para rendimento em computadores que, teoricamente, o suportam.

    
por 03.01.2015 / 11:36