我想测量发件人流程与消费者之间的 ping 时间 这两个进程都在同一个物理主机Linux 64位上运行。
我目前正在使用clock_gettime(CLOCK_REALTIME, &cur_ts);
。
我基本上捕获当前时间戳cur_ts
并将其发送给消费者进程;一旦它被另一端接收,我就会在第二个过程中再次调用clock_gettime(CLOCK_REALTIME, &cur_ts);
并减去两次。
这个程序在两个进程之间测量 ping 是否准确?我应该使用不同的东西吗?
由于
答案 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