我编写了一个简单的程序来确定我的系统是否可以获得纳秒精度,这是一个RHEL 5.5 VM(内核2.6.18-194)。
REALTIME
示例输出:
MONOTONIC
所以MONOTONIC
给了我当地时间和man clock_gettime
系统的正常运行时间。两个时钟似乎都具有μs精度(999848ns≅1ms),即使grep -R CLOCK_REALTIME_HR /usr/include/ | wc -l
以毫微秒为单位输出,这也令人困惑。
0
州:
CLOCK_REALTIME_HR CLOCK_REALTIME的高分辨率版本。
但是,error: ‘CLOCK_REALTIME_HR’ undeclared (first use in this function)
会返回clock_getres
并尝试在MONOTONIC
中编译结果。
我试图确定我是否可以以纳秒精度获得本地时间,但是我的代码有错误,或者5.5中可能不完全支持此功能(或者VM的HPET已关闭,或者其他内容)。
可以我在这个系统中获得纳秒的本地时间吗?我做错了什么?
修改的
答案似乎是否正确
虽然可以实现纳秒精度,但在这种情况下系统并不能保证纳秒精度(这里有一个明确的APK details差异而非咆哮)。典型的COTS硬件并没有真正处理它(正确方向的另一个answer)。
我仍然很好奇为什么时钟报告相同的REALTIME
分辨率,{{1}}产生的似乎是纳秒值,而{{1}}产生微秒。
答案 0 :(得分:-1)
RHEL5在这一点上真的很古老,你应该考虑升级。在较新的系统(Ubuntu 16.04)上,您的程序会生成:
CLOCK_REALTIME - "Systemwide realtime clock.":
precision: 1ns
value : 1504783164.686220185
CLOCK_MONOTONIC - "Represents monotonic time. Cannot be set.":
precision: 1ns
value : 0000537257.257923964