性能调控器不会将 CPU 频率锁定在最大值

Posted

技术标签:

【中文标题】性能调控器不会将 CPU 频率锁定在最大值【英文标题】:Performance governor doesn't locks the CPU frequency at max 【发布时间】:2012-10-09 18:18:41 【问题描述】:

我正在专用 X3440 服务器上运行实时应用程序,我想知道为什么应用程序性能比我以前的 VPS 机器更差。然后我下载http://i7z.googlecode.com/svn/trunk/i7z_64bit执行,正常使用情况下(top 10% cpu左右),所有CPU核心都只停留在900Mhz~1200Mhz左右,波动很快,而且不稳定。

然后我尝试将调节器从按需设置为性能(回显性能 > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor),我的应用程序性能更好,因为现在所有 CPU 内核都保持在 1700 ~ 1900Mhz 左右(仍然在波动),但应用程序性能仍然没有达到我的标准。

我试图通过键入“service cpuspeed stop”来完全禁用任何缩放,但它仍然显示与性能调节器相同的结果。我想知道为什么性能调控器没有将 CPU 频率锁定在最大值。

然后我尝试在每个内核中运行 4 个独立的虚拟低优先级任务: 百胜安装gcc

nano dummy.c

内容:

int main() 
    while(1);

gcc dummy.c -o dummy

nice taskset -c 0 ./dummy & nice taskset -c 1 ./dummy & nice taskset -c 2 ./dummy & nice taskset -c 3 ./dummy &

这样,所有 4 个内核都将保持在 2533mhz 并且不再波动(无论调节器设置如何),现在我的应用程序性能非常出色,没有任何抱怨。但是,我不喜欢这些任务浪费资源的方式,尽管它不会干扰主应用程序,因为它处于低优先级。

我的问题: 在我的家用台式 Windows 计算机中,不知何故,我的 CPU 速度始终以最大频率稳定。但是为什么在这个 CentOS 6 2.6.32 x86_64 专用服务器上没有发生呢?有什么方法可以在不使用任何低优先级任务的情况下将所有 cpu 内核设置为最大频率?

【问题讨论】:

【参考方案1】:

一个简短的谷歌会话给我带来了这个article,这表明需要重新启动 cpuspeed 服务而不是停止它。

【讨论】:

以上是关于性能调控器不会将 CPU 频率锁定在最大值的主要内容,如果未能解决你的问题,请参考以下文章

限制cpu频率

Linux 开启CPU高性能

如何降低CPU最大频率?

android如何强制cpu核心离线(关闭核心)

在 linux 内核空间中获取最大支持的 cpu 频率

怎样计算一个CPU支持的最大内存频率?