gpt4 book ai didi

linux - 降低 linux 内核定时器频率

转载 作者:IT王子 更新时间:2023-10-29 00:23:58 25 4
gpt4 key购买 nike

当我使用 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,如果可能甚至更低。虽然它可能会影响 poll/select 和调度程序时间片的交互性和精度,但我准备牺牲这些东西来减少定时器中断,因为它会加速 VM。

当我试图找出必须做的事情时,我在某个地方读到你可以通过更改配置文件来做到这一点,在其他地方我读到在引导参数中添加 divider=10 可以完成工作,在其他地方我读到,如果您可以设置 CONFIG_HIGH_RES_TIMERS 以实现低延迟计时器,即使不增加计时器频率,也不需要任何东西,而无滴答系统 CONFIG_NO_HZ 也是可能的.

我对什么是正确的方法感到非常困惑。

我只想将定时器中断降低到尽可能低的水平。

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

最佳答案

别担心!你的困惑不过是意料之中的。 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),但我会小心。它导致了很多错误,您可能应该使用不同的 Hz 值重新编译。

CONFIG_NO_HZ

这真的没什么用,它是为了省电,这意味着当什么都不执行时滴答将停止(或至少变得不那么频繁)。这可能已经在您的内核上启用。当至少有一个任务可运行时,这没有任何区别。

Frederic Weisbecker 实际上有一个待定的补丁,它将此推广到只有一个任务正在运行的情况,但它还有一点路要走。

关于linux - 降低 linux 内核定时器频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com