当只有其他clockource是jiffies时,clocksource tsc总是不稳定吗?

时间:2015-05-02 23:10:32

标签: linux tsc

在为我公司产品的BIOS调试不稳定的tsc问题后,我怀疑当唯一的其他clockource是jiffies时,tsc可能总是不稳定。

我得到的错误就像 Clocksource tsc unstable (delta = -531266231 ns).然后内核选择了除tsc之外的jiffies。 只有两个时钟源是tsc和jiffies。 我用i386和x64尝试了Linux内核2.6和3.2。内核说CPU实际上支持常量tsc和不变tsc。

检查Linux源代码后,我发现tsc有一个标志CLOCKSOURCE_MUST_VERIFY而jiffies没有。{1}}我想如果只有两个clockources,jiffies和tsc,jiffies将成为clocksource监视器。 然而,与tsc相比,jiffies是一个非常差的时钟源,因此我怀疑在这种情况下tsc总是“不稳定”,因为有一个坏的监视器来验证它。

我还检查了其他一些运行良好的tsc系统,并发现它们有其他时钟源,如Hpet或acpi_pm。

因此,我如何判断tsc不稳定是由于jiffies还是其他地方的错误造成的?

3 个答案:

答案 0 :(得分:2)

今天我用最少的安装测试了CentOS 6.6 i386映像。内核默认有三个时钟源:Card。 Clocksource tsc是正在使用的。

然后我尝试了tsc acpi_pm jiffies选项,发现只有两个clockources acpi=off。但是,tsc并不稳定,仍然用作主要的时钟源。因此看门狗jiffies并不总是否认tsc。

我在戴尔桌面上进行了上述实验。然而,使用我公司的BIOS在另一台计算机中使用完全相同的硬盘驱动器,tsc仍然不稳定(也只有两个时钟源:tsc和jiffies,但使用的是jiffies)。我怀疑有一些关于BIOS的问题。我知道我的BIOS还不支持acpi,但我不确定这是什么原因。

因此它跳到了另一个问题:BIOS中的某些配置是否会导致tsc不稳定?我的BIOS支持Intel CPU,并且已禁用CPU电源管理。

答案 1 :(得分:1)

在Linux上 - 在用户应用程序中 - 阅读time(7)并且不要直接使用 TSC,而是使用clock_gettime(2)(可能使用CLOCK_REALTIME)。< / p>

如果计算机已连接到Internet,请安装一些NTPD客户端守护程序。

答案 2 :(得分:0)

经过一些实验,我得出了一个临时结论:tsc稳定性与ACPI设置有关。我测试了Aptio BIOS版本2.15.1236和标准Linux内核3.2.68。

首先,我在内核配置中打开了ACPI并构建了一个bzImage,其tsc结果运行良好(与其他clocksource acpi_pmhpet)。此外,即使我尝试在内核命令行中使用acpi=off来禁用acpi,clockource tsc仍然可以与clocksource jiffies一起使用。

我第二次关闭内核配置中的ACPI。在这段时间内,clocksource tsc在构建的内核映像中不稳定。唯一剩下的其他时钟源是jiffies

经过一些其他实验后,我怀疑当BIOS和内核都支持ACPI时,tsc只是稳定的。我检查了一些论坛,并被告知即使在Linux启动命令行中使用acpi=off,ACPI也没有完全关闭。我公司自己的BIOS在ACPI表上有一些错误,因此无法在Linux内核映像中维护稳定的tsc。

然而,这只是我的猜测。我希望有专家告诉我,我是对还是错。我将尝试修复我公司BIOS的ACPI表错误并更新我的进一步实验的结果。