Wyłączanie Intel Turbo Boost w Ubuntu

17

Jestem nowy w Ubuntu i chcę wyłączyć doładowanie turbo. Próbowałem z, cpufreqale nie mogę go uruchomić. czy jest na to inny sposób?

W systemie Windows było to tak proste, jak zmiana szybkości procesora ze 100 na 99.

Ivaylo
źródło
jaki jest twój model procesora?
Ron
@Ron: jest to procesor Intel® Pentium® B960 @ 2,20 GHz Dostałem informacje z czatu, do którego się przeprowadzili. Myślę, że to naprawdę nie ma znaczenia, ważne jest, który sterownik skalowania jest używany. Obecnie (który jest inny niż w przeszłości) domyślnie będzie ustawiony na intel_pstate, jeśli procesor go obsługuje.
Doug Smythies
chłopaki, próbowałem: sudo cpupower zestaw częstotliwości częstotliwość -g powersave i mówi: Ustawienie procesora: 0 Ustawienie procesora: 1 Więc gdzie umieścić rdzeń, który chcesz zmienić? :)
Ivaylo
Bez względu na to, jakiego sterownika skalowania używasz, turbo włączone lub nie jest ustawieniem globalnym, jedno miejsce obejmuje wszystkie procesory. Sam używam tylko prymitywnych poleceń, nigdy narzędzi na wyższym poziomie, takich jak cpupower.
Doug Smythies

Odpowiedzi:

18

Aby odczytać aktualny stan Turbo Boost, musimy zainstalować narzędzia msr

sudo apt-get install msr-tools

Aby wiedzieć, czy funkcja Turbo Boost jest wyłączona, uruchom:

rdmsr -pi 0x1a0 -f 38:38

1=disabled
0=enabled

Zamień i na swój numer rdzenia


UWAGA: Jeśli pojawi się następujący błąd:

rdmsr:open: No such file or directory

następnie załaduj moduł „msr” następującą komendą:

sudo modprobe msr

Aby wyłączyć funkcję Turbo Boost, można ustawić cały rejestr MSR 0x1a0 na 0x4000850089, jak tutaj:

wrmsr -pC 0x1a0 0x4000850089

Gdzie C oznacza konkretny numer rdzenia

możesz uzyskać ten numer, uruchamiając

cat /proc/cpuinfo | grep processor

wtedy gdy poznasz swoje liczby, musisz uruchomić powyższe polecenie dla każdego rdzenia. w twoim przypadku numery będą wynosić 0 i 1, więc musisz to zrobić

wrmsr -p0 0x1a0 0x4000850089

wrmsr -p1 0x1a0 0x4000850089

Rozwiązanie oznacza ten blog


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

Skrypt do wyłączania / włączania turbo boost

Poniższego skryptu można użyć do wyłączenia / włączenia doładowania turbo:

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

zapisz to w pliku o nazwie turbo-boost.sh

Użycie: Możesz skopiować powyższy skrypt i zapisać go w pliku o nazwie turbo-boost, a następnie ustawić go jako wykonywalny:

sudo chmod +x turbo-boost.sh

możesz go następnie użyć do wyłączenia / włączenia doładowania turbo:

./turbo-boost.sh disable
./turbo-boost.sh enable
Maythux
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Mitch
$ rdmsr -pi 0x1a0 -f 38:38daje mi tylko listę opcji do użycia z poleceniem. np .: Usage: rdmsr [options] regno --help -h Print this help --version -V Print current version ....Czy powyższa składnia jest nieaktualna / nie ma zastosowania w sposób ogólny?
Sir Hennihau,
30

Jeśli twój system używa sterownika skalowania częstotliwości 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

Następnie możesz zapytać o status turbo włączony lub wyłączony:

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

Gdzie 0 oznacza włączenie turbo, a 1 oznacza wyłączenie. Możesz to zmienić, pisząc (jako sudo) w tej samej lokalizacji.

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

Nigdy nie pamiętam lokalizacji ani sposobu prawidłowego wykonania polecenia „tee”, dlatego wolę, aby skrypty były uruchamiane jako 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
źródło
Jeśli masz problemy z uprawnieniami, spróbujsudo echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Cirelli94
Czy można to ustawić na stałe, aby pozostało po ponownym uruchomieniu?
Alexey,
@Alexey: Jeśli chcesz, aby był stały, sugerowałbym zamiast tego zrobić to w BIOS-ie. W przeciwnym razie wykonaj powyższy set_cpu_turbo_offskrypt, aby był uruchamiany podczas uruchamiania.
Doug Smythies,
1
@ Cirelli94 - mimo to: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
Z jakiegoś powodu nie ma to dla mnie żadnego wpływu na Ubuntu Server 14. sudo wrmsr --all 0x1a0 0x4000850089robi to samo.
sudo
2

Możesz spróbować ustawić /sys/devices/system/cpu/cpufreq/boostwartość na 0.

echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost
Ron
źródło
1
nie ma takiego pliku ani katalogu
Ivaylo
@ Ron Polecam poszerzyć tę odpowiedź o wyjaśnienie, jak to zrobić.
Eliah Kagan
2
Zgadzam się z komentarzem Eliasza. To poprawna odpowiedź, jeśli sterownik skalowania częstotliwości to acpi-cpufreq.
Doug Smythies