4

我想测量发送方进程和消费者之间的ping时间。
两个进程都在同一个物理主机上运行,​​Linux 64 位。

我目前正在使用clock_gettime(CLOCK_REALTIME, &cur_ts);. 我基本上捕获当前时间戳cur_ts并将其发送到消费者进程;一旦在另一端收到它,我就会clock_gettime(CLOCK_REALTIME, &cur_ts);在第二个过程中再次调用并减去两次。

此过程是否准确测量两个进程之间的ping ?我应该使用不同的东西吗?

谢谢

4

1 回答 1

3

是的

您正在使用正确的界面。这是现代 Loonix 中可用的 Posix 指定的 HRT(高分辨率计时器),您使用的是规范标准。

对于 ping 分辨率,它可能无关紧要,但可以CLOCK_MONOTONIC,特别用于短时间间隔。在其他条件下,CLOCK_REALTIME可能更准确。但是,这些时钟的确切含义并没有被 Posix 指定,而且在 Linux 上,我相信它们都会受到 NTP 调整的影响。至少对于长时间的间隔来说,这是一件好事。

在 Linux 上,要在不调整 NTP 的情况下访问底层硬件时钟,您必须取消 Posix 保留并使用CLOCK_MONOTONIC_RAW.

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

于 2013-03-31T19:20:53.473 回答