Пытался сделать это сам и придумал это. Возможно, есть более простой способ, но это то, что я придумал.
Во-первых, подготовьте каналы, которые будут использоваться для обеспечения связи программы бенчмаркинга через соединение SSH.
$ mkfifo /tmp/up /tmp/down
Затем установите соединение в режиме ControlMaster, не выполняя никаких удаленных команд. Это позволяет нам проходить аутентификацию на хосте в интерактивном режиме. После того, как соединение установлено, SSH просто «зависнет» здесь на переднем плане.
$ ssh $HOST -N -M -S /tmp/control
В параллельном терминале выполните удаленное управление cat
в фоновом режиме. Это будет наш эхо-сервер, задержку которого мы будем измерять. Входы и выходы подключены к FIFO:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
Затем выполните тестирование небольшой программы (отправьте байт в up
FIFO, получите байт из 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
Мера явно показывает задержку туда и обратно. Если вам нужно повторить эксперимент, запустите последние две команды ( ssh
и python
) еще раз.
Если что-то идет не так, используйте -v
флаг SSH, чтобы получить больше результатов отладки.