46

根据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.

根据韦伯斯特在线词典单调意味着:

2:随着自变量的值或项的下标的增加,具有从不增加或从不减少的性质。

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

但是,普通版和原始版之间的区别尚不清楚。有人可以阐明 NTP 如何仍然影响 CLOCK_MONOTONIC 吗?

4

2 回答 2

39

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

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

The utility of CLOCK_MONOTONIC_RAW is going to be limited until facilities like pthread_timedwait_monotonic offer an option to use that timebase.

于 2013-01-11T01:51:23.840 回答
2

ntpd如果差异低于某个阈值,则不会导致时间跳跃。而是使用了类似 adjtime 的调整,同时影响CLOCK_MONOTONICCLOCK_REALTIME(但CLOCK_MONOTONIC_RAW显然不是)。

于 2013-01-11T01:43:33.637 回答