64位Linux上的高分辨率计时器支持

时间:2011-12-22 20:05:12

标签: linux timer 64-bit linux-kernel

我正在尝试在2.6.39.1 64位Linux上启用高分辨率计时器支持。为此,我首先在.config中设置CONFIG_HIGH_RES_TIMERS=y

此外,grep HZ .config的输出为:

# CONFIG_RCU_FAST_NO_HZ is not set
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_MACHZ_WDT=m

但是,重新编译内核后,以下命令的输出不是预期的1 nsec

cat /proc/timer_list |grep resolution打印:.resolution: 999848 nsecs

此外,cat /proc/timer_list |grep handler输出:

event_handler: tick_handle_periodic,而不是event_handler: hrtimer_interrupt

当我使用hrtimer进行实验时,我显然没有看到结果的纳秒精度。

我还尝试运行提到here的C程序,它有助于确定Linux内核定时器中断频率。运行C程序的结果如下:

kernel timer interrupt frequency is approx. 766 Hz

我正在研究Dell Poweredge T710,我相信它确实有高分辨率计时器的硬件支持(?)

我错过了任何一步吗?我哪里出错?

谢谢!

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。事实证明,我意外地始终进入"failsafe"模式,该模式设置了相当多的内核选项。其中一个是"highres=off"

检查/proc/cmdline以确定是否有用。