Намагався зробити це сам і придумав це. Напевно, є більш простий спосіб, але це те, що я придумав.
Спочатку підготуйте труби, які використовуватимуться для того, щоб програма бенчмаркінгу спілкувалася через з'єднання 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, щоб отримати більше результатів налагодження.