有什么区别CLOCK_MONOTONIC& CLOCK_MONOTONIC_RAW?

时间:2013-01-11 01:37:29

标签: linux ubuntu timing

根据Ubuntu下的Linux手册页

CLOCK_MONOTONIC
      Clock that cannot be set and  represents  monotonic  time  since
      some unspecified starting point.

CLOCK_MONOTONIC_RAW (since Linux 2.6.28; Linux-specific)
      Similar  to  CLOCK_MONOTONIC, but provides access to a raw hard‐
      ware-based time that is not subject to NTP adjustments.

根据韦伯斯特在线词典Monotonic的意思是:

  

2:具有永不增加或永不增加的属性   作为自变量或下标的值减少   这些条款的增加。

换句话说,它不会向后跳。我可以看到,如果你计算一些代码,这将是一个重要的属性。

然而,正常版本和原始版本之间的差异尚不清楚。有人可以了解一下NTP如何影响CLOCK_MONOTONIC?

2 个答案:

答案 0 :(得分:30)

CLOCK_MONOTONIC由于NTP时间调整而从未出现过不连续性,但 会随着NTP了解本地振​​荡器与上游服务器之间存在的错误而发生频率变化。

CLOCK_MONOTONIC_RAW只是本地振荡器,不受NTP约束。如果您想针对由于NTP而没有打击您的时钟实现一些其他时间同步算法,这可能非常有用。虽然ntpd(NTP协议的参考实现和最普遍的NTP守护进程)被称为时间调整“温和”,但是对于绝对时间来说它更温和更准确。它愿意将时钟旋转500ppm,如果你能够根据其他标准测量你的时钟频率,这是非常引人注目的。

CLOCK_MONOTONIC_RAW等设施提供使用该时基的选项之前,pthread_timedwait_monotonic的效用将会受到限制。

答案 1 :(得分:2)

如果差异低于某个阈值,

ntpd不会导致时间。而是使用类似adjtime的调整,同时影响CLOCK_MONOTONICCLOCK_REALTIME(但不会影响CLOCK_MONOTONIC_RAW)。