Em geral, o "ping" do Linux deve ser mais rápido que o "hrping" do Windows?

Em geral, o "ping" do Linux deve ser mais rápido que o "hrping" do Windows?

Estou usando o HP DL360p Gen8. Instalei o Windows Server 2008 R2 e o RHEL7 de inicialização dupla. Em ambos os sistemas configurei LACP e VLANs. Portanto, este é o mesmo servidor, mesmo hardware, mesma rede, mesmas tabelas de rotas, etc.

Preocupo-me com a latência, incluindo a latência da rede, porque estou usando este servidor para negociação de HFT.

Agora eu esperava que, se eu executasse ping no mesmo host do Windows e do Linux, o Linux deveria ser um pouco melhor. Surpreendentemente, não é nada melhor. Na verdade, é até cerca de 5 a 10 microssegundos pior do que o Windows, quando faço ping no mesmo host.

  • estou usando hrpingno Windows e pingno Linux
  • no Windows usei o utilitário HP para formação de equipes, no RHEL 7 usei "teaming" integrado (não ligação)

Eu esperava que o Linux fosse melhor, porque:

  • suponho que a implementação da rede RHEL 7 seja mais rápida que o Windows Server 2008 R2
  • suponho que a implementação de equipes/LACP/VLANs do RHEL 7 seja mais rápida que o Windows Server 2008 R2/HP one

Minhas perguntas:

  1. se esse número existir: quantos microssegundos de ping mais rápido do RHEL 7 do que do Windows Server 2008 R2?
  2. se isso indicar um problema potencial que o Linux pingé 5 a 10 microssegundos mais lento ou devo simplesmente ignorar esse fato?
  3. o que posso fazer/diagnosticar/solucionar problemas para tornar o ping do Linux mais rápido que o Windows

É claro que na vida real eu me preocupo mais com a latência do tráfego real, como TCP/UDP, mas estou usando pingcomo primeiro passo. Provavelmente pingmostra os mesmos números porque é "simples", mas no tráfego TCP/UDP real o Linux será muito mais rápido?

Responder1

Existem vários fatores. A primeira é a máquina em que você está executando. Se o Windows e o Linux estivessem em hardware diferente, a medição não teria sentido.

Claro que você tem que medir o ping médio depois de muitas tentativas, os primeiros pings podem incluir outros atrasos.

Os pacotes precisam passar pelo kernel (pilha de IP e driver de dispositivo de rede) e entrar novamente quando a resposta for recebida. Nesta fase, pode haver muitos fatores que influenciam a diferença:

  1. o que é realmente cronometrado: duas implementações diferentes de ping poderiam fazer mais ou menos trabalho padrão entre iniciar o cronômetro e realmente enviar a coisa (e o mesmo no caminho de recebimento).
  2. existência de filtros: firewalls e afins, podem introduzir etapas extras
  3. granularidade do clock: com que precisão os processos são multiplexados pelo kernel? Mesmo entre diferentes níveis de Linux, o comprimento do tick pode variar muito, ou o kernel pode estar mais ou menos sem ticks (executando sem interrupções se houver apenas um processo em execução).
  4. gerenciamento de processos: com que rapidez e de que forma o processo é ativado quando o pacote volta? Windows e Linux fazem isso de maneiras completamente diferentes.
  5. O que o resto do sistema está fazendo? Há IO pesado acontecendo ao mesmo tempo que deixaria o kernel ocupado? Há alguma mudança se você fizer niceo ping para uma prioridade mais alta?
  6. Escala de frequência: o gerenciamento da frequência da CPU pode variar muito: o Linux tem muitos “governadores” que fazem as coisas de maneira diferente. Portanto, é possível que o Linux esteja rodando em velocidade de clock mais baixa quando ocioso - além disso, um momento de mudança de frequência tem latência extra.
  7. A implementação e compilação do pingutilitário também podem ter alguns efeitos menores (embora a latência no kernel seja provavelmente a principal contribuição).

O kernel do Linux é conhecido por atingir o limite no rendimento da rede emNível de 10 gigabits. Então... não deveria fazer muita diferença em velocidades de microssegundos. Provavelmente é uma questão de agendamento, latências do sistema operacional e assim por diante. E a latência do ping não representa o desempenho real sob carga. Você não deve considerar essa medida como um fator ao decidir qualquer coisa. Você precisa de muitos outros benchmarks, especialmente sob cargas realistas.

E, finalmente, as configurações do kernel Linux podem influenciar bastante o desempenho - projetos em tempo real precisam de um kernel dedicado para funcionar em um nível ideal. Você encontrará mais variações entre configurações diferentes (em ambas as plataformas) do que nessas duas tentativas.

informação relacionada