这是一个HZ的grep和相关的东西在我的内核配置文件.
sharan013@sitmac4:~$cat /boot/config | egrep 'HZ|TIME' # 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 is not set CONFIG_TIMERFD=y CONFIG_HIGH_RES_TIMERS=y CONFIG_X86_CYCLONE_TIMER=y CONFIG_HPET_TIMER=y
很明显,它已将配置设置为1000,但是当我做sysconf(_SC_CLK_TCK)时,我得到100作为我的定时器频率.那么我的系统的定时器频率是多少?
我想做的是将频率降至100,甚至更低.虽然它可能影响轮询/选择和调度器时间片段的交互性和精度,但我可以为更小的定时器中断牺牲这些事务,因为它将加速虚拟机.
当我试图找出需要做的事情时,我会在某些地方阅读,你可以通过更改配置文件来做到这一点,否则我读到那个添加divider = 10到引导参数的作业,否则我读到那个如果您可以将CONFIG_HIGH_RES_TIMERS设置为即使没有增加定时器频率也能够实现低延迟定时器,那么也不需要它们,并且使用无错系统CONFIG_NO_HZ也可以这样做.
我非常混淆什么是正确的方法.
所有我想要的是将定时器中断降低到尽可能低.
我可以知道这样做的正确方法吗?
解决方法
CLK_TCK
Linux没有sysconf系统调用,glibc只是返回常量值100.对不起.
HZ < - 你可能想要什么 配置内核时,您可以选择100Hz,250Hz,300Hz或1000Hz的定时器频率.所有这些都是支持的,虽然1000Hz是默认值,但并不总是最好的. 当他们估计延迟时间(桌面或网络服务器)和价值吞吐量(HPC)的低值时,人们通常会选择高价值. CONFIG_HIGH_RES_TIMERS 这与定时器中断无关,只是一种允许您具有更高分辨率计时器的机制.这基本上意味着像选择一样的呼叫超时可以比1 / HZ秒更准确. 分频器 此命令行选项是Red Hat提供的补丁.你可以使用这个(如果你使用Red Hat或CentOS),但是我会小心的.它引起了很多错误,您应该可以使用不同的Hz值重新编译. CONFIG_NO_HZ 这实际上并没有太多的功能,这是为了省电,这意味着当没有执行任务时,刻度将停止(或至少变得不那么频繁).这可能已经在您的内核上启用了.当至少有一个任务可运行时,它没有任何区别. Frederic Weisbecker实际上有一个补丁挂起,将其概括为只运行一个任务的情况,但还有一点要离开.