CLOCK_MONOTONIC和CLOCK_MONOTONIC_RAW有什么区别?

Mat*_*att 35 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.
Run Code Online (Sandbox Code Playgroud)

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

2:随着独立变量的值或术语的下标的增加,具有永不增加或永不减少的属性.

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

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

Ben*_*son 33

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

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

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

  • @Dolda2000答案看起来与我一致.`CLOCK_MONOTONIC`受时钟*速率*变化(通过`adjtimex`)影响,但不受跳跃影响.另一个答案只谈到非跳案. (2认同)