Linux上准确的进程间定时器

4
我希望测量发送进程和接收进程之间的延迟时间(ping时间)。这两个进程在同一台Linux 64位物理主机上运行。
我目前正在使用“clock_gettime(CLOCK_REALTIME, &cur_ts)”函数。基本上,我捕获当前时间戳“cur_ts”,然后将其发送到消费者进程;一旦在另一个进程中接收到它,我就会再次调用“clock_gettime(CLOCK_REALTIME, &cur_ts)”函数,并相减来计算出两个时间的差异。
这种方法准确吗?还应该使用其他方法吗?
谢谢
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接