Точный межпроцессный таймер в Linux

Я хотел бы измерить время проверки связи между процессом отправителя и потребителем.
Оба процесса работают на одном физическом хосте, Linux 64 bit.

Я сейчас пользуюсь clock_gettime(CLOCK_REALTIME, &cur_ts);, Я в основном фиксирую текущую метку времени cur_ts и отправить его в потребительский процесс; как только он получен на другом конце, я призываю clock_gettime(CLOCK_REALTIME, &cur_ts); снова во втором процессе и вычтите два раза.

Является ли эта процедура точной для измерения пинга между двумя процессами? Должен ли я использовать что-то другое?

Спасибо

1 ответ

Решение

да

Вы используете правильный интерфейс. Это определенный по Posix HRT (Таймер высокого разрешения), который доступен в современном Loonix, и ваше использование является каноническим стандартом.

Для разрешений пинга это, вероятно, не имеет значения, но возможно использовать CLOCK_MONOTONIC, особенно на короткие промежутки времени. При других условиях CLOCK_REALTIME может быть более точным. Однако точное значение этих часов не указано в Posix, а в Linux, я думаю, все они подлежат настройке NTP. Это хорошо для длительных интервалов, по крайней мере.

В Linux, чтобы получить доступ к базовым аппаратным часам без настроек NTP, вам нужно отключить резервирование Posix и использовать CLOCK_MONOTONIC_RAW.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html

Другие вопросы по тегам