一尘不染

CLOCK_MONOTONIC和CLOCK_MONOTONIC_RAW有什么区别?

linux

根据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吗?


阅读 998

收藏
2020-06-03

共1个答案

一尘不染

CLOCK_MONOTONIC永远不会由于NTP时间调整而经历中断,但是它 确实会
改变频率,因为NTP了解本地振​​荡器和上游服务器之间存在什么错误。

CLOCK_MONOTONIC_RAW只是本地振荡器,不受NTP约束。如果您想针对由于NTP而无法解决问题的时钟实施其他时间同步算法,这可能非常有用。尽管ntpd(NTP协议的参考实现和最广泛的NTP守护程序)被称为具有时间调整功能的“温和”,但准确地说是绝对时间比较温和。它愿意将时钟摆幅降低500ppm,如果您能够相对于其他标准来测量时钟频率,那将是非常惊人的。

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

2020-06-03