当我使用 Gentoo 作为来宾运行我的虚拟机时,我发现 tik_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
。
我对什么是正确的方法感到非常困惑。
我想要的只是将定时器中断降低到尽可能低。
我能知道这样做的正确方法吗?
谢谢,夏兰