Estava tentando fazer isso sozinho e veio com isso. Provavelmente, existe uma maneira mais simples, mas é isso que eu criei.
Primeiro, prepare os tubos que serão usados para fazer o programa de benchmarking se comunicar através da conexão SSH.
$ mkfifo /tmp/up /tmp/down
Em seguida, estabeleça uma conexão no modo ControlMaster sem executar nenhum comando remoto. Isso nos permite autenticar interativamente o host. Depois que a conexão for estabelecida, o SSH simplesmente "travará" aqui em primeiro plano.
$ ssh $HOST -N -M -S /tmp/control
Em um terminal paralelo, execute o controle remoto cat
em segundo plano. Será o nosso servidor de eco cuja latência mediremos. As entradas e saídas estão conectadas aos FIFOs:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
E, em seguida, avalie um programa pequeno (envie um byte para o up
FIFO, receba um byte do down
FIFO):
$ python -m timeit -s 'import os' \
'os.write(3, "z"); z=os.read(4, 1); assert z=="z", "got %s" % z' \
3>/tmp/up 4</tmp/down
10 loops, best of 3: 24.6 msec per loop
A medida obviamente mostra a latência de ida e volta. Se você precisar repetir o experimento, execute os dois últimos comandos ( ssh
e python
) novamente.
Se algo parece dar errado, use o -v
sinalizador SSH para obter mais resultados de depuração.