Linux上准确的进程间定时器

时间:2013-03-31 19:04:10

标签: c linux gcc system-clock

我想测量发件人流程与消费者之间的 ping 时间 这两个进程都在同一个物理主机Linux 64位上运行。

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

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

由于

1 个答案:

答案 0 :(得分:3)

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

对于ping解决方案,它可能无关紧要,但可以使用CLOCK_MONOTONIC,,尤其是短时间间隔。在其他情况下,CLOCK_REALTIME可能更准确。但是,这些时钟的确切含义并不是由Posix指定的,而在Linux上,我相信所有这些都需要进行NTP调整。这对于长时间间隔来说是件好事,至少。

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

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