性能调控器不会将 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 频率锁定在最大值的主要内容,如果未能解决你的问题,请参考以下文章