A latência entre dois hosts Linux é de cerca de 0,23 ms. Eles estão conectados por um switch. Ping & Wireshark confirmam o número de latência. Mas, eu não tenho nenhuma visibilidade do que está causando essa latência. Como posso saber se a latência é devido à placa de rede no host A ou B ou no switch ou nos cabos?
ATUALIZAÇÃO: A latência de 0,23 ms é ruim para o meu aplicativo existente, que envia mensagens com uma frequência muito alta e estou tentando ver se ele pode ser reduzido para .1ms
Respostas:
Geralmente, você pode usar alguns dos switches avançados do utilitário iperf para obter uma visão do desempenho da rede entre sistemas, especificamente latência e jitter ...
É um fluxo de mensagens baseado em UDP ou TCP?
Comentei acima sobre a necessidade de mais informações sobre sua configuração. Se esse é um aplicativo de mensagens de baixa latência, existe um mundo inteiro de técnicas de ajuste e otimização que abrangem ajustes de hardware, driver e sistema operacional. Mas, realmente, precisamos de mais informações.
Editar:
Ok, então essa é a mensagem TCP. Você modificou algum
/etc/sysctl.conf
parâmetro? Como são seus buffers de envio / recebimento? Usar um kernel em tempo real por si só não fará muito, mas se você passar para o ponto em que vincula interrupções às CPUs, alterar a prioridade em tempo real do aplicativo de mensagens (chrt
) e possivelmente modificar otuned-adm
perfil do sistema pode ajudar ...Parece ser um sistema EL6 genérico, portanto, uma maneira fácil de definir uma linha de base de ajuste de desempenho envolve alterar o perfil de desempenho do sistema para outro disponível na estrutura ajustada . Então construa a partir daí.
No seu caso:
Uma matriz rápida mostrando as diferenças:
Você pode nos falar sobre o hardware? Tipos de CPU, NIC, memória?
Portanto, pode ser interessante testar seu link ... Experimente este teste iperf ...
Em um sistema, inicie um ouvinte do iperf UDP. Por outro lado, abra uma conexão com o primeiro ... Um teste rápido de qualidade da linha.
No meu caso, baixa instabilidade e baixo tempo de ping:
Eu verificaria o hardware e as interfaces quanto a erros. Se desejar, elimine a alternância entre sistemas e veja como é uma conexão direta. Você não deseja alta variação (variação), então verifique isso.
Mas, honestamente, mesmo com os tempos de ping que você está recebendo na sua configuração atual, isso não deve ser suficiente para matar seu aplicativo. Eu seguiria o caminho de ajustar seus buffers de envio / recebimento. Veja:
net.core.rmem_max
,net.core.wmem_max
e seus padrões ...Algo como o seguinte em
/etc/sysctl.conf
(por favor, sintonize a gosto):fonte
tuned-adm
perfil.