Я надеюсь найти существующий инструмент Linux для измерения задержки:
Я пытаюсь диагностировать, сколько задержки моя ОС и карта NIC добавляют к задержке TCP в Linux. Я посмотрел на следующие инструменты, но все (по крайней мере, на уровне поверхности) измеряли пропускную способность (Мбит / с), а не задержку (наносекунды для передачи 1 пакета размером x).
Nttcp Nutcp Netperf Iperf
Если бы я написал собственный тест, он, вероятно, сделал бы следующее:
Клиент:
- Создайте поддельное сообщение указанной длины с некоторым дополнением для увеличивающегося идентификатора. Откройте TCP-соединение (с правым
такие параметры, как TCP_NODELAY и т. д.) - Цикл и отправка сообщений, содержащих инкрементный идентификатор. Сохраните текущее системное время (в нано), связанное с идентификатором.
- Прослушайте ответы, запишите текущее время и запишите задержку этого идентификатора асинхронно
сервер
- Прослушай связь
- Эхо обратно любое сообщение получено
Предполагая, что оба блока имеют одинаковую настройку (конфиги, карты, ОС, ЦП и т.д.), Относительно близки друг к другу в сети, и примерно известно значение задержки в сети, можно получить приблизительную оценку вклада OS + NIC и начать тестирование различных конфигураций.
Можно также получить более точную картину задержки, используя сетевой анализатор и отслеживая линии между двумя хостами, вычисляя задержку между двумя сторонами для идентификатора, а затем вычитая ее из внутренней задержки.
Итак, кто-нибудь знает инструмент или даже некоторый шаблонный код для тестирования такого рода вещей?