2011-02-10 152 views
7

我必須運行延遲敏感應用程序,並且我被要求將定時器分辨率更改爲1000 Hz或更高。我在網上搜索了一下,發現了關於CONFIG_HZ等的頁面。更改Linux內核定時器

但是,在文件中似乎還有其他幾個相關的設置,所以我想確保我不會弄亂設置向上。我在這裏張貼一些輸出

$cat /boot/config-2.6.28-11-generic | grep HZ 
# CONFIG_HZ_1000 is not set 
# CONFIG_HZ_300 is not set 
CONFIG_MACHZ_WDT=m 
CONFIG_NO_HZ=y 
CONFIG_HZ=250 
# CONFIG_HZ_100 is not set 
CONFIG_HZ_250=y 

如此做第二行,「#CONFIG_HZ_1000未設置」,意思是1000Hz的不支持?我必須只改變CONFIG_HZ而不改變CONFIG_HZ-250嗎? PS:我在Geode處理器上使用2.6內核(ubuntu jaunty)。

EDIT1:我在桌面機器和開發機器上運行了http://www.advenage.com/topics/linux-timer-interrupt-frequency.php的一些代碼。該代碼應該是系統能夠承受的定時器速度的準確度量。輸出約爲183赫茲(在開發機器上)。那麼改變計時器是否有意義?

回答

14

不要直接編輯0​​,除非你是Kbuild專家(如果你問這個問題,你不是Kbuild專家)。請運行make menuconfigmake xconfig加載基於菜單的配置系統。或者,make config將執行一個基於行的配置過程(它向您詢問關於要配置什麼的幾百個問題 - 不推薦)。相關的選項在「處理器類型和功能」下作爲「定時器頻率」。

也就是說,這可能沒有必要。現代Linux可以使用高分辨率事件定時器(CONFIG_HIGH_RES_TIMERS)來實現低延遲定時器,即使不增加定時器頻率。對於無滴答系統(CONFIG_NO_HZ),定時器頻率幾乎沒有影響。

另一方面,我不確定哪些計時器支持Geode CPU。您可能希望運行cyclictest以及各種內核配置,以瞭解您需要獲得低延遲性能。您運行的測試會測試最大調度頻率,而不是調度延遲,因此與循環測試結果比較會很有趣。如果您真的需要低延遲,CONFIG_PREEMPT_RT patchset也可能是感興趣的。

7

要更改計時器設置,您需要重新編譯內核。更改某些標準菜單配置工具中的選項,而不是文本文件。

/boot/config...文件只告訴你在特定的內核二進制文件中安裝了什麼。這不是您可以更改的配置文件。