C Linux上的精确进程间计时器

C Linux上的精确进程间计时器,c,linux,gcc,system-clock,C,Linux,Gcc,System Clock,我想测量发送者进程和使用者之间的ping时间。 这两个进程运行在同一个物理主机上,即Linux 64位 我目前正在使用clock\u gettime(clock\u REALTIME,&cur\ts)。 我基本上捕获当前的时间戳cur\u ts,并将其发送给消费者进程;一旦在另一端收到它,我就调用clock\u gettime(clock\u REALTIME,&cur\ts)并减去两次 该程序对测量两个过程之间的ping是否准确?我应该使用不同的东西吗 谢谢是的 您正在使用正确的界面。这是一个

我想测量发送者进程和使用者之间的ping时间。
这两个进程运行在同一个物理主机上,即Linux 64位

我目前正在使用
clock\u gettime(clock\u REALTIME,&cur\ts)。
我基本上捕获当前的时间戳
cur\u ts
,并将其发送给消费者进程;一旦在另一端收到它,我就调用
clock\u gettime(clock\u REALTIME,&cur\ts)并减去两次

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

谢谢

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

对于ping分辨率来说,这可能并不重要,但是可以使用
时钟单调,
尤其是对于短时间间隔。在其他条件下,
CLOCK\u REALTIME
可能更精确。然而,Posix并没有指定这些时钟的确切含义,在Linux上,我相信它们都会受到NTP调整的影响。至少对于长时间间隔来说,这是件好事

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