当我使用Gentoo作为guest虚拟机运行虚拟机时,我发现tick_periodic函数有相当大的开销. (这是每个定时器中断运行的函数.)此函数使用write_seqlocks更新全局jiffy,从而导致开销.
这是一个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也可以这样做.
我非常混淆什么是正确的方法.
所有我想要的是将定时器中断降低到尽可能低.
我可以知道这样做的正确方法吗?