当前位置: 技术问答>linux和unix
关于LINUX时间的一个疑惑
来源: 互联网 发布时间:2016-03-14
本文导语: 我使用gettimeofday以及times函数取出时间和tick,然后统一换算成时间,做了一个长时间的运行测试(几小时到几十小时),结果令人惊讶,两个时间运行长时间以后会有差异,特别是跟系统命令date取出的时间相比差距...
我使用gettimeofday以及times函数取出时间和tick,然后统一换算成时间,做了一个长时间的运行测试(几小时到几十小时),结果令人惊讶,两个时间运行长时间以后会有差异,特别是跟系统命令date取出的时间相比差距更加明显。
1,在同一台机器上纵向比较,gettimeofday和times比较接近,但是也有细微的差别,跟date取出的时间比较相差较大,运行两天后发现有分钟级的差距
2,对两台机器继续横向比较,两台机器的时间区别更是明显
请问,对于同一台机器为什么会有如此大的不同,难道对于一个系统不同时间函数所依赖的底层机制会完全不同?请高手指点一二!
1,在同一台机器上纵向比较,gettimeofday和times比较接近,但是也有细微的差别,跟date取出的时间比较相差较大,运行两天后发现有分钟级的差距
2,对两台机器继续横向比较,两台机器的时间区别更是明显
请问,对于同一台机器为什么会有如此大的不同,难道对于一个系统不同时间函数所依赖的底层机制会完全不同?请高手指点一二!
|
关注!
你是否是在虚拟机或类似的环境下测试的?这些虚拟环境下的时间不准是必然的
你是否是在虚拟机或类似的环境下测试的?这些虚拟环境下的时间不准是必然的
|
有区别是自然的, date 取得的时钟是CMOS时钟, 不依赖于系统的, 系统时间Tick 是由时钟中断引起的, 但系统忙, 来不及处理中断那么就丢了一个Tick, 所以不足为奇的.
|
gettimeofday 自然可以取得CMOS时钟, 但从你输入这个命令, 到这个命令执行, 再返回到控制台 过程中间很难保证到底又流逝了多少秒, 精度10MS 如果负载不是太重的话应该可以保证的, 比如1S= 100Tick 刚好是10ms, 或者可以增加1S 钟内的Tick 数量
|
一般显示的系统时间是要通过网络校时(NTP校时)
cmos的时间是通过tick计时,不同机器会有出入.
cmos的时间是通过tick计时,不同机器会有出入.
|
mark
|
不明LZ在说什么