Deshabilitar Intel Turbo Boost en ubuntu

17

Soy nuevo en Ubuntu y quiero deshabilitar el turbo boost. Lo intenté cpufreqpero no puedo hacerlo funcionar. Hay alguna otra forma de hacerlo.

En Windows fue tan fácil como cambiar la velocidad de la CPU de 100 a 99.

Ivaylo
fuente
¿Cuál es tu modelo de CPU?
Ron
@Ron: es Intel (R) Pentium (R) CPU B960 @ 2.20GHz Obtuve la información del chat al que se mudaron. Creo que realmente no importa, lo que importa es qué controlador de escala se está utilizando. Actualmente (que es diferente al pasado), por defecto será intel_pstate si el procesador lo admite.
Doug Smythies
chicos, intenté: sudo cpupower frequency-set -g powersave y dice: Setting cpu: 0 Setting cpu: 1 Entonces, ¿dónde poner qué núcleo cambiar? :)
Ivaylo
Independientemente del controlador de escala que esté utilizando, turbo habilitado o no es una configuración global, un punto cubre todas las CPU. Yo solo uso comandos primitivos, nunca herramientas de nivel superior como cpupower.
Doug Smythies

Respuestas:

18

Para leer el estado actual del Turbo Boost, necesitamos instalar msr-tools

sudo apt-get install msr-tools

Para saber si la función Turbo Boost está deshabilitada, ejecute:

rdmsr -pi 0x1a0 -f 38:38

1=disabled
0=enabled

Reemplace i con su número de núcleos


NOTA: si obtiene el siguiente error:

rdmsr:open: No such file or directory

luego cargue el módulo "msr" con el siguiente comando:

sudo modprobe msr

Para deshabilitar la función Turbo Boost, se puede configurar todo el registro 0x1a0 MSR en 0x4000850089, como aquí:

wrmsr -pC 0x1a0 0x4000850089

Donde C se refiere a un número central particular

puedes obtener ese número ejecutando

cat /proc/cpuinfo | grep processor

luego, una vez que sepa sus números, debe ejecutar el comando anterior para cada núcleo. en su caso los números serían 0 y 1, por lo que debe hacer

wrmsr -p0 0x1a0 0x4000850089

wrmsr -p1 0x1a0 0x4000850089

La solución representa este blog


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

Un script para deshabilitar / habilitar turbo boost

El siguiente script se puede usar para activar / desactivar el turbo boost:

#!/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

guardar esto en un archivo llamado turbo-boost.sh

Uso: puede copiar el script anterior y guardarlo en un archivo llamado turbo-boost y luego configurarlo para que sea ejecutable:

sudo chmod +x turbo-boost.sh

luego puede usarlo para deshabilitar / habilitar turbo boost:

./turbo-boost.sh disable
./turbo-boost.sh enable
Maythux
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Mitch
$ rdmsr -pi 0x1a0 -f 38:38me da solo una lista de opciones para usar con el comando. por ejemplo: Usage: rdmsr [options] regno --help -h Print this help --version -V Print current version ....¿La sintaxis anterior está desactualizada / no es aplicable de manera general?
Sir Hennihau
30

Si su sistema está utilizando el controlador de escala de frecuencia 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

Luego, puede consultar el estado de turbo habilitado o deshabilitado:

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

Donde 0 significa que el turbo está habilitado y 1 significa que está deshabilitado. Y puede cambiarlo escribiendo (como sudo) en la misma ubicación.

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

Nunca recuerdo la ubicación o cómo hacer correctamente el 'tee', así que prefiero que los scripts se ejecuten como 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
Doug Smythies
fuente
Si tiene problemas con los permisos, intentesudo echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Cirelli94
¿Se puede configurar de forma permanente para permanecer después del reinicio?
Alexey
@Alexey: si quieres que sea permanente, te sugiero que lo hagas en el BIOS. De lo contrario, haga que el set_cpu_turbo_offscript anterior se ejecute durante el inicio.
Doug Smythies
1
@ Cirelli94 - aun así: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
Por alguna razón, esto no tiene ningún efecto para mí en Ubuntu Server 14. sudo wrmsr --all 0x1a0 0x4000850089hace el truco.
sudo
2

Puede intentar establecer el /sys/devices/system/cpu/cpufreq/boostvalor en 0.

echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost
Ron
fuente
1
dice que no hay tal archivo o directorio
Ivaylo
@Ron Recomiendo expandir esta respuesta con una explicación de cómo hacerlo.
Eliah Kagan
2
Estoy de acuerdo con el comentario de Eliah. Es una respuesta correcta si el controlador de escala de frecuencia es acpi-cpufreq.
Doug Smythies