降低Linux内核定时器的频率(Lowering linux kernel timer freque

2019-08-17 00:34发布

当我运行我的虚拟机使用Gentoo作为嘉宾,我发现有来自未来相当大的开销tick_periodic功能。 (这是运行在每个定时器中断功能)。此功能更新了全球jiffy使用write_seqlocks导致的开销。

下面是一个grep的HZ及相关的东西,在我的内核配置文件。

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,甚至更低如果可能的话。 虽然它可能影响的交互性和精确度poll / select和调度时间片,我豁出去了这些东西较少定时器中断,因为这将加快VM。

当我试图找出哪些必须做我在一些地方,你可以在配置文件中改变,这样做阅读别的地方,我读了加分频= 10到引导参数做工作,别的地方我读了如果你可以设置需要它没有一个CONFIG_HIGH_RES_TIMERS到acheive低延时定时器,即使不增加计时器频率和同样是可能的空循环系统CONFIG_NO_HZ

我extermely困惑什么是正确的做法。

我想要的是打倒定时器中断来尽可能低。

我知道这样做的正确方法吗?

Answer 1:

别担心! 你的困惑是什么,但预期。 Linux的定时器中断是非常混乱,有一个漫长而非常激动人心的历史。

CLK_TCK

Linux没有sysconf系统调用和glibc刚刚返回恒定值100。对不起。

HZ < -你可能想要什么

在配置你的内核,你可以选择为100Hz,250Hz的,为300Hz或1000Hz的的计时器频率。 所有这些都支持,虽然1000Hz的是默认它并不总是最好的。

人们一般会选择高值时,他们更看重的等待时间(台式机或网络服务器)和低值时,他们更看重吞吐量(HPC)。

CONFIG_HIGH_RES_TIMERS

这有没有关系定时器中断,它只是一种机制,它可以让你有更高的分辨率计时器。 这基本上意味着在诸如呼叫超时select可以比1 / HZ秒更精确。

分频器

此命令行选项是由Red Hat提供的补丁。 你也许可以使用这个(如果你使用的Red Hat或CentOS的),但我会小心。 它造成大量的漏洞,你应该可能只是用不同的赫兹值重新编译。

CONFIG_NO_HZ

这真的没有做太多,它是节能,它意味着,蜱将停止(或至少变得不那么频繁)时,没有被执行。 这可能已经在你的内核启用。 它不会使任何差异,当至少一个任务是可运行的。

弗雷德里克Weisbecker实际上有一个补丁未决推广了这其中只有一个任务正在运行的情况下,但它是一个小的路要走呢。



文章来源: Lowering linux kernel timer frequency