更改 Linux 内核定时器

9
我需要运行一个对延迟要求敏感的应用程序,并被要求将计时器分辨率更改为1000 Hz或更高。我在网上搜索了一下,找到了有关CONFIG_HZ等内容的页面。
但是,在文件中似乎还有其他几个相关的设置,因此我想确保不会搞乱这些设置。我在此发布一些输出。
$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 is not set" 是不是意味着不支持1000Hz?我只需要更改CONFIG_HZ而不是CONFIG_HZ-250吗?
PS:我在Geode处理器上使用2.6内核(ubuntu jaunty)。
编辑1:我在我的桌面机和开发机上运行了一些来自http://www.advenage.com/topics/linux-timer-interrupt-frequency.php 的代码。该代码据称可以准确测量系统可以维持多快的定时器。输出大约为183 Hz(在开发机上)。那么改变计时器会有意义吗?
3个回答

16

不要直接编辑.config,除非你是Kbuild专家(如果你问这个问题,你不是Kbuild专家)。相反,运行make menuconfigmake xconfig来加载基于菜单的配置系统。另外,make config将执行一种基于行的配置过程(在此过程中,它会询问您关于要配置什么的几百个问题--不建议使用)。相关选项位于“处理器类型和功能”下的“计时器频率”。

话虽如此,这可能并不必要。现代Linux可以使用高分辨率事件定时器(CONFIG_HIGH_RES_TIMERS)实现低延迟定时器,即使没有增加计时器频率。对于无滴答系统(CONFIG_NO_HZ),计时器频率几乎没有影响。

另一方面,我不确定Geode CPU有什么计时器支持。您可能需要使用各种内核配置运行cyclictest,以查看您需要获取低延迟性能的内容。您运行的测试测试的是最大分派频率,而不是分派延迟,因此与cyclictest结果进行比较将很有趣。如果您需要真正的低延迟,CONFIG_PREEMPT_RT patchset也可能会引起兴趣。


7

要更改计时器设置,您需要重新编译内核。请在某个标准菜单配置工具中更改选项,而不是文本文件。

/boot/config... 文件只告诉您特定内核二进制文件中安装了什么。这不是您可以更改的配置文件。


0
第二行的# CONFIG_HZ_1000 is not set是不是意味着不支持1000Hz?
当配置选项不可用时,它在.config文件中不存在。
例如,这些内核选项:
# CONFIG_HZ_1000 is not set
# CONFIG_HZ_300 is not set

你可以设置它们。

最安全的方法是使用基于菜单的界面,比如make menuconfig
在menuconfig中,如果想要找到一个特定的内核配置参数的位置,请键入/打开搜索框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接