我试图在2.6.39.1 64位Linux上启用高分辨率定时器支持。为此,我首先在.config中设置CONFIG_HIGH_RES_TIMERS=y。64位Linux上的高分辨率定时器支持
而且,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跑实验,我显然没有看到结果纳秒的精度。
我也尝试运行C程序提到的here这应该有助于确定Linux内核定时器中断频率。运行C程序的结果如下:
kernel timer interrupt frequency is approx. 766 Hz
我工作的Dell Poweredge T710其中,我认为,确实有高精度计时器硬件支持
我错过了(?)任何一步?我哪里错了?
谢谢!
+0
仔细检查您启动的内核配置是否与您认为自己构建的配置相匹配。 'zcat /proc/config.gz | grep的CONFIG_HIGH_RES_TIMERS' –
2011-12-22 22:13:20
+0
@BrianCain:'/启动>猫配置-2.6.39.1 | grep的HIGH_RES' CONFIG_HIGH_RES_TIMERS = Y –
2011-12-22 22:47:22
+0
调度程序只运行每隔一段时间,所以很自然不看到预期的精度。 –
2011-12-22 22:51:34