为了调查这个问题,我发现了这种差异,这可以解释我的时钟问题:
root@n1:~# zgrep Detected /var/log/dmesg*/var/log/dmesg:[ 0.004000] Detected 2400.110 MHz processor./var/log/dmesg.0:[ 0.004000] Detected 2383.579 MHz processor./var/log/dmesg.1.gz:[ 0.004000] Detected 2400.036 MHz processor./var/log/dmesg.2.gz:[ 0.004000] Detected 2400.298 MHz processor./var/log/dmesg.3.gz:[ 0.004000] Detected 2400.165 MHz processor./var/log/dmesg.4.gz:[ 0.004000] Detected 2400.410 MHz processor.
请注意,在最后一次引导(有问题的引导)中,检测到的cpu频率是一个明确的异常值.在没有异常值的情况下,检测到的频率相对于标称频率的误差和标准偏差是0.15MHz±0.25MHz.对于有问题的启动,我的误差为-16.4 Mhz,大约是预期的100倍.
我的问题:
>这种类型的错误会导致ntp时间规则不稳定/无法使用吗?这是我时钟问题的原因吗?
>这种行为是否是硬件硬件的症状?服务器应该进行hw维护吗?
更新
一些有用的数据:
>内核是2.6.32-5-amd64(Debian 2.6.32-48squeeze4)
> current_clocksource是tsc
> lpj的错误(当然)与cpu频率上的错误一致
上面grep的一些上下文行
[ 0.000000] hpet clockevent registered[ 0.000000] Fast TSC calibration using PIT[ 0.004000] Detected 2400.110 MHz processor.[ 0.000008] Calibrating delay loop (skipped),value calculated using timer frequency.. 4800.22 BogoMIPS (lpj=9600440)解决方法 我确信自己的问题是错误识别的 time stamp counter(TSC)频率.
显然内核正在针对programmable interval timer(PIT)校准TSC.通常,识别的cpu频率为2400.204±0.134MHz,这相当于约56ppm的精度.在有问题的启动之后,cpu频率估计为2383.579 MHz,这相当于约6900 ppm的误差,ntpd无法补偿.事实上,在功能的第一个10h30m期间,系统时钟增加了大约4m30s,大约是7000ppm.
由于TSC频率中的误差对应于系统时钟的漂移,因此我得出结论,异常时钟行为是由错误的TSC校准引起的.
但是我从未见过这么大的问题:我仍然想知道这个错误校准的可能原因(hw,sw?).
总结以上是内存溢出为你收集整理的硬件 – Linux内核检测错误的处理器频率全部内容,希望文章能够帮你解决硬件 – Linux内核检测错误的处理器频率所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)