Kernel 内核rt的hrtimer分辨率不可接受

Kernel 内核rt的hrtimer分辨率不可接受,kernel,real-time,Kernel,Real Time,我正在运行Centos 6.5 我安装了一个实时内核 找到对应内核版本 Linux lx rttargets 3.0.9-rt26.46.el6rt.x86_64 1 SMP PREEMPT RT周三1月25日09:38:18 CET 2012 x86_64 x86_64 GNU/Linux 我从CERN的科学Linux存储库中安装了rt内核: 它声称使用tsc作为时钟源: cat/sys/devices/system/clocksource/clocksource0/current\u cl

我正在运行Centos 6.5

我安装了一个实时内核

找到对应内核版本 Linux lx rttargets 3.0.9-rt26.46.el6rt.x86_64 1 SMP PREEMPT RT周三1月25日09:38:18 CET 2012 x86_64 x86_64 GNU/Linux

我从CERN的科学Linux存储库中安装了rt内核:

它声称使用tsc作为时钟源:

cat/sys/devices/system/clocksource/clocksource0/current\u clocksource tsc

但我没有得到hrtimer的支持

cat/proc/timer|U列表| grep分辨率| uniq .决议:999848 nsecs

当我运行cyclictest时,它有一个函数check_timer调用clock_getres clock_MONOTONIC,&ts,它失败导致cyclictest报告警告:高分辨率计时器不可用

cyclictest的输出非常糟糕,这是我第一次注意到的

我得到了非常糟糕的结果:

/周期测试-smp-p95-f-B2000 通常为许多CPU提供超过1000的平均值

有人知道发生了什么事吗。我已经为此工作了好几天,但在网上找不到任何帮助


谢谢。

解决方案:经过几天的讨论,我发现在启动时删除acpi=off-kernel参数似乎可以解决这个问题。有人知道为什么吗?!我认为TSC不能触发中断,只能报告当前时间。因此Linux需要一个单独的中断源。如果没有ACPI,您可能没有高分辨率的中断源,因此它依赖于标准的系统计时器。因此,您的调度粒度变为1/HZ,对于amd64系统,默认为1ms,即使您有更准确的时间报告。@crosstalk您应该将此作为答案添加。这对我帮助很大。