在Ubuntu中禁用Intel Turbo Boost


17

我是Ubuntu新手,想禁用Turbo Boost。我尝试过,cpufreq但我无法使其正常工作。还有其他方法可以做到这一点。

在Windows中,就像将CPU速度从100更改为99一样容易。


你的cpu型号是什么?
罗恩

@Ron:是Intel(R)Pentium(R)CPU B960 @ 2.20GHz,我从他们转移到的聊天中获得了信息。我认为这并不重要,重要的是正在使用哪个缩放驱动程序。当前(与过去不同),如果处理器支持,它将默认为intel_pstate。
道格·史密斯

伙计们,我尝试过:sudo cpupower frequency-set -g powersave,它说:设置cpu:0设置cpu:1那么在哪里放置要更改的核心?:)
Ivaylo 2015年

无论您使用哪种缩放驱动程序,是否启用了turbo都是全局设置,一个点覆盖所有CPU。我自己,我只使用原始命令,从不使用更高级别的工具,例如cpupower
道格·史密斯

Answers:


18

要读取Turbo Boost的当前状态,我们需要安装msr-tools

sudo apt-get install msr-tools

要了解是否已禁用Turbo Boost功能,请运行:

rdmsr -pi 0x1a0 -f 38:38

1=disabled
0=enabled

用您的核心号码替换我


注意: 如果出现以下错误:

rdmsr:open: No such file or directory

然后通过以下命令加载“ msr”模块:

sudo modprobe msr

要禁用Turbo Boost功能,可以将整个0x1a0 MSR寄存器设置为0x4000850089,如下所示:

wrmsr -pC 0x1a0 0x4000850089

其中C是指特定的核心号码

你可以通过运行来获得这些数字

cat /proc/cpuinfo | grep processor

然后,一旦知道编号,就必须为每个核心运行以上命令。在您的情况下,数字将为0和1,因此您必须

wrmsr -p0 0x1a0 0x4000850089

wrmsr -p1 0x1a0 0x4000850089

解决方案代表此博客


来自http://notepad2.blogspot.com/2014/11/a-script-to-turn-off-intel-cpu-turbo.html

禁用/启用涡轮增压的脚本

以下脚本可用于关闭/打开涡轮增压:

#!/bin/bash

if [[ -z $(which rdmsr) ]]; then
    echo "msr-tools is not installed. Run 'sudo apt-get install msr-tools' to install it." >&2
    exit 1
fi

if [[ ! -z $1 && $1 != "enable" && $1 != "disable" ]]; then
    echo "Invalid argument: $1" >&2
    echo ""
    echo "Usage: $(basename $0) [disable|enable]"
    exit 1
fi

cores=$(cat /proc/cpuinfo | grep processor | awk '{print $3}')
for core in $cores; do
    if [[ $1 == "disable" ]]; then
        sudo wrmsr -p${core} 0x1a0 0x4000850089
    fi
    if [[ $1 == "enable" ]]; then
        sudo wrmsr -p${core} 0x1a0 0x850089
    fi
    state=$(sudo rdmsr -p${core} 0x1a0 -f 38:38)
    if [[ $state -eq 1 ]]; then
        echo "core ${core}: disabled"
    else
        echo "core ${core}: enabled"
    fi
done

将此保存到名为 turbo-boost.sh

用法:您可以复制以上脚本并将其保存到名为turbo-boost的文件中,然后将其设置为可执行文件:

sudo chmod +x turbo-boost.sh

然后可以使用它来禁用/启用涡轮增压:

./turbo-boost.sh disable
./turbo-boost.sh enable

评论不作进一步讨论;此对话已转移至聊天
米奇

$ rdmsr -pi 0x1a0 -f 38:38仅给我列出了与命令一起使用的选项。例如:Usage: rdmsr [options] regno --help -h Print this help --version -V Print current version ....以上语法是否过时/不适用于一般情况?
亨尼豪爵士

30

如果您的系统正在使用intel_pstate频率缩放驱动程序:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate

然后,您可以查询turbo的启用或禁用状态:

$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0

其中0表示启用涡轮,而1表示禁用涡轮。您可以通过将其写为(sudo)到同一位置来进行更改。

$ echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
1

我不记得位置或如何正确执行“ tee”操作,因此我更喜欢以sudo身份运行脚本:

$ cat set_cpu_turbo_off
#! /bin/bash
echo "1" > /sys/devices/system/cpu/intel_pstate/no_turbo

$ cat set_cpu_turbo_on
#! /bin/bash
echo "0" > /sys/devices/system/cpu/intel_pstate/no_turbo

如果您在权限方面遇到问题,请尝试sudo echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Cirelli94 '16

可以将其设置为永久设置,以在重新启动后保留吗?
阿列克谢

@Alexey:如果您希望它是永久的,那么我建议改为在BIOS中进行。否则,使上述set_cpu_turbo_off脚本在启动期间运行。
Doug Smythies

1
@ Cirelli94-即便如此:sudo echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo 1 tee: /sys/devices/system/cpu/intel_pstate/no_turbo: Operation not permitted

1
由于某种原因,这在Ubuntu Server 14 sudo wrmsr --all 0x1a0 0x4000850089中对我没有任何作用。
sudo

2

您可以尝试将/sys/devices/system/cpu/cpufreq/boost值设置为0。

echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost

1
它说没有这样的文件或目录
Ivaylo,2015年

@Ron我建议使用此方法的解释来扩展此答案。
伊利亚·卡根

2
我同意伊莱亚的评论。如果频率缩放驱动器是acpi-cpufreq,则是正确的答案。
道格·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.