在为我公司产品的BIOS调试不稳定的tsc问题之后,我怀疑当唯一的其他clockource是jiffies时,tsc可能总是不稳定.
我得到了错误
Clocksource tsc不稳定(delta = -531266231 ns).然后内核选择了除tsc之外的jiffies.
只有两个时钟源是tsc和jiffies.
我用i386和x64尝试了Linux内核2.6和3.2.内核说CPU实际上支持常量tsc和不变tsc.
检查Linux源代码后,我发现tsc有一个标志CLOCKSOURCE_MUST_VERIFY而jiffies没有.我想如果只有两个clockources,jiffies和tsc,jiffies将成为clocksource监视器.
然而,与tsc相比,jiffies是一个非常差的时钟源,因此我怀疑在这种情况下tsc总是“不稳定”,因为有一个坏的监视器来验证它.
我还检查了其他一些工作良好的系统,并发现他们有其他时钟源,如Hpet或acpi_pm.
因此,我如何判断tsc不稳定是由于jiffies还是其他地方的错误造成的?
解决方法:
今天我用最少的安装测试了CentOS 6.6 i386映像.内核默认有三个时钟源:tsc acpi_pm jiffies. Clocksource tsc是正在使用的那个.
然后我尝试了acpi = off选项,发现只有两个clockources,tsc jiffies.但是,tsc并不稳定,仍然用作主要的时钟源.因此看门狗jiffies并不总是否认tsc.
我在戴尔桌面上进行了上述实验.然而,使用我公司的BIOS在另一台计算机上使用完全相同的硬盘驱动器时,tsc仍然不稳定(也只有两个时钟源:tsc和jiffies,但使用的是jiffies).我怀疑有一些关于BIOS的问题.我知道我的BIOS还不支持acpi,但我不确定这是什么原因.
因此它跳到了另一个问题:BIOS中的某些配置会导致不稳定的tsc吗?我的BIOS支持Intel CPU,并且已禁用CPU电源管理.