关于LINUX时间的一个疑惑

victor_cui 2008-02-05 03:03:49
我使用gettimeofday以及times函数取出时间和tick,然后统一换算成时间,做了一个长时间的运行测试(几小时到几十小时),结果令人惊讶,两个时间运行长时间以后会有差异,特别是跟系统命令date取出的时间相比差距更加明显。
1,在同一台机器上纵向比较,gettimeofday和times比较接近,但是也有细微的差别,跟date取出的时间比较相差较大,运行两天后发现有分钟级的差距
2,对两台机器继续横向比较,两台机器的时间区别更是明显
请问,对于同一台机器为什么会有如此大的不同,难道对于一个系统不同时间函数所依赖的底层机制会完全不同?请高手指点一二!
...全文
174 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kukumouse 2008-04-30
  • 打赏
  • 举报
回复
一般显示的系统时间是要通过网络校时(NTP校时)
cmos的时间是通过tick计时,不同机器会有出入.
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
不明LZ在说什么
hanb99 2008-02-29
  • 打赏
  • 举报
回复
mark
slone 2008-02-29
  • 打赏
  • 举报
回复
gettimeofday 自然可以取得CMOS时钟, 但从你输入这个命令, 到这个命令执行, 再返回到控制台 过程中间很难保证到底又流逝了多少秒, 精度10MS 如果负载不是太重的话应该可以保证的, 比如1S= 100Tick 刚好是10ms, 或者可以增加1S 钟内的Tick 数量
victor_cui 2008-02-29
  • 打赏
  • 举报
回复
如果使用在server上,因为负载可能很高,会不会严重影响其精度,有什么好的替代方案吗,我们期望的精确度在10ms即可
victor_cui 2008-02-29
  • 打赏
  • 举报
回复
那使用gettimeofday是否能够避免tick丢失的问题呢?
slone 2008-02-25
  • 打赏
  • 举报
回复
有区别是自然的, date 取得的时钟是CMOS时钟, 不依赖于系统的, 系统时间Tick 是由时钟中断引起的, 但系统忙, 来不及处理中断那么就丢了一个Tick, 所以不足为奇的.
hzcpig 2008-02-14
  • 打赏
  • 举报
回复
关注!

你是否是在虚拟机或类似的环境下测试的?这些虚拟环境下的时间不准是必然的

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧