降低linux内核定时器频率

前端之家收集整理的这篇文章主要介绍了降低linux内核定时器频率前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我使用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也可以这样做.

我非常混淆什么是正确的方法.

所有我想要的是将定时器中断降低到尽可能低.

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

解决方法

别担心你的混乱只不过是预料之中. Linux定时器中断非常混乱,历史悠久而令人兴奋.

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实际上有一个补丁挂起,将其概括为只运行一个任务的情况,但还有一点要离开.

猜你在找的Linux相关文章