Ferramentas de linha de comando do Linux para analisar a latência de TCP do SO + NIC

3

Espero encontrar uma ferramenta Linux existente para medir a latência:

Estou tentando diagnosticar a latência que meu sistema operacional e placa NIC estão adicionando à latência do TCP no Linux. Eu olhei para as seguintes ferramentas, mas todas (pelo menos no nível da superfície) mediram a largura de banda (Mbps / seg) em vez da latência (nanossegundos para a transmissão de 1 pacote de tamanho x).

nttcp nuttcp netperf iperf

Se eu fosse escrever um teste personalizado, provavelmente faria o seguinte:

Cliente:

  1. Crie uma mensagem falsa com o comprimento especificado com algum preenchimento para um identificador incremental. Abra uma conexão TCP (com o direito de parâmetros como TCP_NODELAY, etc)
  2. Faz um loop e envia mensagens contendo um identificador incremental. Armazene a hora atual do sistema (em nanos) associada ao identificador.
  3. Ouça as respostas, registre a hora atual e registre a latência desse identificador de forma assíncrona

Servidor

  1. Ouça uma conexão
  2. Repetir qualquer mensagem recebida

Supondo que ambas as caixas tinham a mesma configuração (configurações, placas, SO, CPU, etc), estão relativamente próximas umas das outras na rede, e uma pessoa conhece aproximadamente a contribuição de latência da rede, pode obter uma estimativa aproximada do sistema operacional + Contribuição da NIC e começar a testar várias configurações.

Também é possível obter uma imagem mais precisa da latência usando um sniffer de rede e snooping nas linhas entre os dois hosts, calculando a latência entre os dois lados para um ID e subtraindo-o da latência medida internamente.

Então, alguém conhece uma ferramenta ou até mesmo algum código clichê para testar esse tipo de coisa?

    
por AnArcticPuffin 14.09.2011 / 23:21

4 respostas

2

Existe uma ferramenta chamada qperf que pode fornecer essas estatísticas. No entanto, é obrigado a pacotes OFED / RDMA.

# qperf -v xx.xx.xx.xx tcp_lat udp_lat
tcp_lat:
    latency        =  29.2 us
    msg_rate       =  34.2 K/sec
    loc_cpus_used  =    41 % cpus
    rem_cpus_used  =  11.5 % cpus
udp_lat:
    latency        =  24.8 us
    msg_rate       =  40.4 K/sec
    loc_cpus_used  =    34 % cpus
    rem_cpus_used  =     4 % cpus
    
por 22.10.2012 / 16:51
1

Você estava procurando por ping por acaso?

    
por 14.09.2011 / 23:30
0

Dê uma olhada na ferramenta de desempenho do kernel (ferramentas / perf). Pode pelo menos fornecer alguns dados na parte da NIC .

Há também a suíte LTTng com suporte a rastreamento de rede e syscall. O que você precisa no lado do software é o tempo entre inserir sys_write () e a saída da função no final da cadeia de chamada start_xmit (), então você pode ter que inserir seu próprio pontos de rastreio .

    
por 15.09.2011 / 00:32
0

Acabei de encontrar quase exatamente o que estou procurando (menos o seqüenciamento que eu posso fazer referência cruzada com um sniffer, mas tudo bem): link

    
por 16.09.2011 / 01:08