【问题标题】:Is clocksource tsc always unstable when the only other clocksource is jiffies?当唯一的其他时钟源是 jiffies 时,时钟源 tsc 是否总是不稳定?
【发布时间】:2015-07-12 13:29:23
【问题描述】:

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

我得到了类似的错误 Clocksource tsc unstable (delta = -531266231 ns). 然后内核选择了 tsc 以外的 jiffies。 仅有的两个时钟源是 tsc 和 jiffies。 我用 i386 和 x64 尝试了 Linux 内核 2.6 和 3.2。内核说CPU其实支持constant tsc和invariant tsc。

查看Linux源代码后,我发现tsc有一个标志CLOCKSOURCE_MUST_VERIFY,而jiffies没有。我猜如果只有两个时钟源,jiffies 和 tsc,那么 jiffies 将是时钟源看门狗。 但是,与 tsc 相比,jiffies 是一个非常差的时钟源,因此我怀疑这种情况下的 tsc 将始终“不稳定”,因为有一个糟糕的看门狗来验证它。

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

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

【问题讨论】:

  • 今天我用最少的安装测试了 CentOS 6.6 i386 镜像。内核默认具有三个时钟源:tsc、acpi_pm 和 jiffies。 Clocksource tsc 是正在使用的。

标签: linux tsc


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我知道,但是我的团队需要运行一些依赖于这些时钟源的特殊硬件测试。当没有 tsc 时,测试使用 jiffies 但得到不准确的结果。但是,如果 tsc 不稳定,那么测试结果就不可信了。
    • 所以你需要使用clock_gettime(3) 或者clock_getres(3)
    • 谢谢,我明天去公司试试。
    【解决方案3】:

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

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

    我第二次在内核配置中关闭了 ACPI。此时时钟源tsc 在构建的内核映像中不稳定。唯一剩下的时钟源是jiffies

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 2015-10-11
      • 2019-06-10
      • 2012-06-05
      • 2021-07-17
      相关资源
      最近更新 更多