Linux 中的时钟准确度
本文来自戴尔软件开发高级工程师Stuart Hayes 一个关于计时的问题最近引起了我的关注. 有用户在 Dell 服务器上运行 Linux,并且发现时钟时间(Linux 所报告的)每天误差五秒以上,偏差比较明显. 我们想到的也许是运行 NTP,定期与真实世界同步操作系统的时钟. 但是这样的误差最初是如何产生的? 在Linux运行时,Linux 系统未使用实时时钟”(real time clock - RTC) 硬件来计时. Linux 通常在启动时从RTC 读取时间,然后从该点开始,Linux 使用另一个时钟来源(系统中的另一个计时器/计数器)来计时. 自第 2.6.18 版起,Linux 的内核就使用 CPU 时间戳计数器 (TSC) 作为首选的时钟来源(假设 TSC 以恒定频率运行,以新款的 英特尔 服务器 CPU为例). 但是,尽管读取速度很快且解析度很高,TSC 却不是一个已知的频率. 当内核使启动时,它需要使用频率已知的另一个计时器,对其进行校准. 这样的校准并非天衣无缝(即使用于校准的计时器也是如此),因此把 TSC 作为时钟来源会造成时间误差. 如果减少时间误差对您非常重要,而非若干微秒的调度延迟,则最好使用频率已知的计时器,如大多数 x86 服务器上提供的 HPET(高精度事件计时器). 借助新内核上的参数“clocksource=hpet”可实现这一目标. HPET 计时器以已知、固定的频率运行,Linux 内核可直接从计时器读取时间. 话说回来,尽管 HPET 的精度高于 TSC,运行 NTP 以在 Linux 中实现长期的时钟精度始终是很好的想法. 上述讨论仅适用于运行于裸机的 Linux. 在虚拟机中的问题略微复杂. 戴尔技术社区 本文出自 “Dell企业级技术社区” 博客,请务必保留此出处http://dellhome.blog.51cto.com/2924567/595434 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |