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

我试图在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 print: .resolution: 999848 nsecs

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

event_handler: tick_handle_periodic ,而不是event_handler: hrtimer_interrupt

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

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

kernel timer interrupt frequency is approx. 766 Hz

我正在研究戴尔Poweredge T710 ,我相信,它确实支持高分辨率计时器(?)

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

谢谢!

我有同样的问题。 原来,我不小心总是启动进入"failsafe"模式,设置了很多内核选项。 其中之一是"highres=off"

检查/proc/cmdline可能是有用的。