我想测量发送者进程和消费者进程之间的ping时间。
两个进程运行在同一个物理主机上,Linux 64位。
我目前使用clock_gettime(CLOCK_REALTIME, &cur_ts);
。我基本上捕获当前时间戳cur_ts
并将其发送到消费者进程;一旦它被另一端接收,我就在第二个进程中再次调用clock_gettime(CLOCK_REALTIME, &cur_ts);
,并减去两次。
此程序在两个过程之间测量ping是否准确?我应该用别的东西吗?
谢谢
是
您正在使用正确的接口。这是posix指定的HRT(高分辨率定时器),在现代Loonix中可用,您的使用是规范标准。
对于ping分辨率,这可能无关紧要,但是可以使用CLOCK_MONOTONIC,
,特别是在短时间间隔内。在其他条件下,CLOCK_REALTIME
可能更准确。然而,这些时钟的确切含义并不是由Posix指定的,在Linux上,我相信它们都受到NTP调整的影响。至少对于长时间间隔来说,这是一件好事。
在Linux上,要在没有NTP调整的情况下访问底层硬件时钟,您必须放弃Posix保留并使用CLOCK_MONOTONIC_RAW.