2011-12-22 98 views
2

我試圖在2.6.39.1 64位Linux上啓用高分辨率定時器支持。爲此,我首先在.config中設置CONFIG_HIGH_RES_TIMERS=y64位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 – user745878 2011-12-22 22:47:22

+0

調度程序只運行每隔一段時間,所以很自然不看到預期的精度。 – 2011-12-22 22:51:34

回答

2

我有同樣的問題。原來我意外地總是啓動進入"failsafe"模式,這個模式設置了很多內核選項。其中之一是"highres=off"

只是爲了確定可能對檢查/proc/cmdline有用。