Estaba tratando de hacer esto yo mismo y se me ocurrió esto. Probablemente hay una manera más simple, pero esto es lo que se me ocurrió.
Primero, prepare las tuberías que se utilizarán para que el programa de evaluación comparativa se comunique a través de la conexión SSH.
$ mkfifo /tmp/up /tmp/down
Luego establezca una conexión en modo ControlMaster sin ejecutar ningún comando remoto. Esto nos permite autenticarnos con el host de forma interactiva. Una vez establecida la conexión, SSH simplemente se "colgará" aquí en primer plano.
$ ssh $HOST -N -M -S /tmp/control
En una terminal paralela, ejecute remoto cat
en segundo plano. Será nuestro servidor de eco cuya latencia mediremos. Las entradas y salidas están conectadas a FIFOs:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
Y luego compara un pequeño programa (envía un byte a up
FIFO, recibe un byte de 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
La medida obviamente muestra la latencia de ida y vuelta. Si necesita repetir el experimento, ejecute los dos últimos comandos ( ssh
y python
) nuevamente.
Si algo parece salir mal, use el -v
indicador SSH para obtener más resultados de depuración.