Отключить масштабирование частоты процессора?

Мне нужно запустить ATLAS на моем ноутбуке с Ubuntu, но программное обеспечение не запустится, если вы не отключите масштабирование частоты процессора. Я попробовал инструкции отсюда http://math-atlas.sourceforge.net/atlas_install/node5.html , но они не работают на моем ноутбуке Toshiba. С включенным частотным масштабированием программное обеспечение становится бесполезным.

Кто-нибудь может помочь?

1
задан 5 July 2019 в 00:52

3 ответа

Я записал cpuf GUI для установки минимальных и максимальных частот по желанию. Можно использовать его незадолго до Математического приложения для установки всех частот на максимум. После запущения Вашего Математического приложения можно сбросить частоты, нормальные в течение долгого ресурса аккумулятора и меньшего тепла.

cpuf - Простой Bash GUI для установки Частоты Минуты/Макса ЦП

Демонстрация

В этой демонстрации cpuf окно идет оставленное и conky информация о системе находится на правой стороне. Это - то, как демонстрация прогрессирует:

  • Демонстрация запускается, пока видео YouTube уже работает
  • Минимальные частоты ЦП по умолчанию / макс. частоты 800 / 3500
  • Переопределите минуту ЦП / макс. к 800 / 800 и использование ЦП переходит к 20%
  • Переопределите минуту ЦП / макс. к 3500 / 3500 и использование ЦП спадает до 10%
  • Демонстрационные циклы назад и запускаются снова

cpuf-demo.gif

С тремя мониторами cpuf может казаться на расстоянии в 10 футов, таким образом используйте параметр 1 --geometry опция поместить его близко к conky:

sudo cpuf --geometry="450x450+4720+80" /home/rick/Pictures/icons/cpu-intel-128.svg
  • Параметр 1 --geometry Ширина окна x Высота + Смещение Ширины + Смещение Высоты
  • Параметр 2 может быть Вашим собственным значком (в этом случае изображение Intel CPU) иначе, это принимает значение по умолчанию к значку компьютера

cpuf Сценарий Bash

Этот раздел требует, чтобы Вы открыли терминал с Ctrl+Alt+T.

Как установить

Для функционирования, cpuf сценарий удара требует:

sudo apt install yad         # from the repository universe
sudo apt install coreutils   # installed by default in most distros

Является самым легким, когда Вы помещаете cpuf сценарий в корневой каталог в Вашем пути поиска. Например: /usr/local/bin.

Создать cpuf сценарий, открытый редактор с sudo -H gedit /usr/local/bin/cpuf.

  • Выделите строки в разделе ниже
  • Щелкните правой кнопкой и выберите "Копию"
  • Переключитесь назад Вашему редактору
  • Щелкните правой кнопкой и выберите "Вставку"
  • Из меню редактора избранное "Сохранение" и затем "Выход"

Сделайте исполняемый файл сценария с sudo chmod a+x /usr/local/bin/cpuf.

cpuf кодируйте для копирования в редактора

#!/bin/bash

# NAME: cpuf (Pronounced SEA-PUFF)
# CALL: sudo cpuf
# PARM: $1 = --geometry=WidthxHeight+VertOffset+HorizOffset
#       $2 = Optional image icon

# DESC: Simple GUI script to set CPU Min and Max Frequency.
#       For Ask Ubuntu Question: https://askubuntu.com/q/1141605/307523
# DATE: May 12, 2019.
# UPDT: No updates yet.
# NOTE: No notes yet.

### Dependancies ###

command -v yad >/dev/null 2>&1 || { echo >&2 \
        "yad package required but it is not installed.  Aborting."; \
        exit 1; }

command -v nproc >/dev/null 2>&1 || { echo >&2 \
        "coreutils package required but it is not installed.  Aborting."; \
        exit 2; }

if [[ $(id -u) != 0 ]]; then # root powers needed to call this script
    echo >&2 Must be called with sudo powers
    exit 3
fi

# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
    notify-send --urgency=critical \
    "$0 cannot be run from GUI without TERM environment variable."
    exit 4
fi

### Program constants ###

## Yad Window parameters
# Hard code Height & Width to suit your screen resolution and scaling factor
GEOMETRY="--width 400 --height 500"
# Pass Parameter 1 with ---geometry="WidxHgt+WidOff+HgtOff" to override
[[ "$1" == --geometry=* ]] && GEOMETRY="$1"

TITLE="cpuf"
TEXT="Set CPU Min/Max Frequencies"
ICON="/usr/share/icons/Adwaita/48x48/devices/computer.png"
# Pass Parameter 2 with icon for window image
# Intel CPU comes from: https://www.gnome-look.org/p/1107932/
[[ ! -z "$2" ]] && ICON="$2"

## Virtual File System directories
      CPU0_DIR=/sys/devices/system/cpu/cpu0/cpufreq
    PSTATE_DIR=/sys/devices/system/cpu/intel_pstate
 CURR_MIN_FREQ="$CPU0_DIR/scaling_min_freq"
 CURR_MAX_FREQ="$CPU0_DIR/scaling_max_freq"
ALLOW_MIN_FREQ="$CPU0_DIR/cpuinfo_min_freq"
ALLOW_MAX_FREQ="$CPU0_DIR/cpuinfo_max_freq"

OLD_IFS=$IFS            # Save current Input File Separtor (IFS)
declare -a Arr          # Array for YAD Window input
NumCPU=$(nproc --all)   # Number of CPUs (nproc from coreutils)

### Error Message Functions ###

Abend () {
    # Abnormal Ending - Parameter 1 = message to display, Parameter 2=exit code

    yad --image "dialog-error" --image-on-top --title "$TITLE - Fatal Error" \
        "$GEOMETRY" --button=gtk-ok:0 --text "$1" 2>/dev/null
    exit "$2"

} # Abend

ErrMsg () {
    # Parmater 1 = message to display

    yad --image "dialog-error" --title "$TITLE - Logical Error" \
        "$GEOMETRY" --button=gtk-ok:0 --text "$1" 2>/dev/null

    fErrMsgForceContinue=true

} # ErrMsg

### Initialize Variables ###

InitVars () {

    [[ ! -e "$ALLOW_MIN_FREQ" ]] && Abend "$ALLOW_MIN_FREQ not found" 11
    AllowMinFreq=$(cat "$ALLOW_MIN_FREQ")
    AllowMinFreq="${AllowMinFreq::-3}"  # Chop off three decimals at end

    [[ ! -e "$ALLOW_MAX_FREQ" ]] && Abend "$ALLOW_MAX_FREQ not found" 12
    AllowMaxFreq=$(cat "$ALLOW_MAX_FREQ")
    AllowMaxFreq="${AllowMaxFreq::-3}"

    [[ ! -e "$CURR_MIN_FREQ" ]] && Abend "$CURR_MIN_FREQ not found" 13
    CurrMinFreq=$(cat "$CURR_MIN_FREQ")
    CurrMinFreq="${CurrMinFreq::-3}"
    NewMinFreq="$CurrMinFreq"

    [[ ! -e "$CURR_MAX_FREQ" ]] && Abend "$CURR_MAX_FREQ not found" 14
    CurrMaxFreq=$(cat "$CURR_MAX_FREQ")
    CurrMaxFreq="${CurrMaxFreq::-3}"
    NewMaxFreq="$CurrMaxFreq"

    if [[ -e "$PSTATE_DIR" ]] ; then
        NumPstates=$(cat "$PSTATE_DIR/num_pstates")
        if [[ $(cat "$PSTATE_DIR/no_turbo") -eq 0 ]] ; then
            TurboBoost="Enabled"
        else
            TurboBoost="Disabled"
        fi
    else
        NumPstates="Not found"
        TurboBoost="Not found"
    fi

    if [[ -e "$CPU0_DIR/scaling_governor" ]] ; then
        Governor=$(cat "$CPU0_DIR/scaling_governor")
    else
        Governor="Not found"
    fi

    if [[ -e "$CPU0_DIR/scaling_cur_freq" ]] ; then
        CurrFreq=$(cat "$CPU0_DIR/scaling_cur_freq")
        # Chop off three decimals at end
        CurrFreq="${CurrFreq::-3}"
    else
        CurrFreq="Not found"
    fi

} # InitVars

### Paint / repaint window and get new frequencies ###

GetParameters () {

    # +------------------------------------------+
    # |  cpuf - Set CPU Min/Max Frequencies      |
    # +------------------------------------------+
    # |                                          |
    # |  Turbo Boost:            Enabled         |
    # |                                          |
    # |  Number of pstates:      99              |
    # |  Speed Governor Used:    powersave       |
    # |  Current CPU0 frequency: 9999 Mhz        |
    # |                                          |
    # |  Current Minimum Freq.:  9999 Mhz        |
    # |  Current Maximum Freq.:  9999 Mhz        |
    # |                                          |
    # |  New Minimum Frequency   9999            |
    # |  New Maximum Frequency   9999            |
    # |                                          |
    # +------------------------------------------+

    IFS="|"
    Arr=($(yad "$GEOMETRY" --form \
        --title "$TITLE" --text "$TEXT" \
        --window-icon="$ICON" --image="$ICON" \
        --field="Turbo Boost:":RO "$TurboBoost" \
        --field="Number of pstates:":RO "$NumPstates" \
        --field="Speed Governor:":RO "$Governor" \
        --field="Current Frequency:":RO "$CurrFreq MHz" \
        --field="Allowable Minimum Frequency:":RO "$AllowMinFreq MHz" \
        --field="Allowable Maximum Frequency:":RO "$AllowMaxFreq MHz" \
        --field="Current Minimum Frequency:":RO "$CurrMinFreq MHz" \
        --field="Current Maximum Frequency:":RO "$CurrMaxFreq MHz" \
        --field="New Minimum Frequency" "$NewMinFreq" \
        --field="New Maximum Frequency" "$NewMaxFreq" 2>/dev/null))

    Return="$?"
    NewMinFreq="${Arr[8]}"
    NewMaxFreq="${Arr[9]}"

} # GetParameters

###################################
#            MAINLINE             #
###################################

ALL_PREFIX="/sys/devices/system/cpu/cpu"
MIN_SUFFIX="/cpufreq/scaling_min_freq"
MAX_SUFFIX="/cpufreq/scaling_max_freq"

while true ; do

    InitVars
    GetParameters
    [[ ! "$Return" -eq 0 ]] && break ; # Exit on Cancel=1 or Close Window=252

    # Sanity checks
    fErrMsgForceContinue=false
    [[ $NewMinFreq -lt $AllowMinFreq ]] && ErrMsg "Minimum frequency too low"
    [[ $NewMaxFreq -gt $AllowMaxFreq ]] && ErrMsg "Maximum frequency too high"
    [[ $NewMinFreq -gt $NewMaxFreq ]]   && ErrMsg "Minimum frequency greater than Maximum Frequency"
    [[ $fErrMsgForceContinue == true ]] && continue

    # Set new Min/Max frequencies
    for (( i=0 ; i<NumCPU ; i++ )) ; do
        # If New Min > Curr Max, set Max first then Min
        if [[ $NewMinFreq -gt $CurrMaxFreq ]] ; then
            echo "$NewMaxFreq""000" > "$ALL_PREFIX$i$MAX_SUFFIX"
            echo "$NewMinFreq""000" > "$ALL_PREFIX$i$MIN_SUFFIX"
        else
            echo "$NewMinFreq""000" > "$ALL_PREFIX$i$MIN_SUFFIX"
            echo "$NewMaxFreq""000" > "$ALL_PREFIX$i$MAX_SUFFIX"
        fi
    done


done

IFS="$OLD_IFS"
exit 0
1
ответ дан 7 December 2019 в 15:00

Регулятор значения по умолчанию замены с производительностью в следующих файлах:

/etc/init.d/cpufrequtils

/etc/default/cpufrequtils 

Отключить ondemand сервис

sudo update-rc.d ondemand disable

затем выполненный

update-initramfs -u -k all 

затем перезагрузка

Подробнее: Как я могу отключить частотное масштабирование ЦП и установить систему на производительность?

https://wiki.debian.org/HowTo/CpuFrequencyScaling

https://wiki.archlinux.org/index.php/CPU_frequency_scaling

0
ответ дан 7 December 2019 в 15:00

Читатели должны понять, что это, ATLAS, который является раздражающим здесь. Знайте, что с современными процессорами ЦП уменьшит масштаб частоты самостоятельно и как функции состояний ожидания, в которые это входит если не занятый, даже в режиме производительности. Если Вы хотите "прикрепить" частоты ЦП в максимуме, затем отключают все состояния ожидания> = 0, в дополнение к установке режима производительности.

Примечание: Это создаст большое сбросное тепло от Вашего процессора, удостоверяются, что Ваша система может обработать его.

Пример:

Стартовые условия:

doug@s15:~/idle$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_cpufreq
intel_cpufreq
intel_cpufreq
intel_cpufreq
intel_cpufreq
intel_cpufreq
intel_cpufreq
intel_cpufreq
doug@s15:~/idle$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance
performance
performance
performance
performance
performance
performance
performance

Шаг 1: Сколько состояний ожидания моя система имеет?

doug@s15:~/idle$ ls -l -d /sys/devices/system/cpu/cpu*/cpuidle/state*
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu0/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu0/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu0/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu0/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu0/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu1/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu1/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu1/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu1/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu1/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu2/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu2/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu2/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu2/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu2/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu3/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu3/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu3/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu3/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu3/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu4/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu4/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu4/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu4/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu4/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu5/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu5/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu5/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu5/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu5/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu6/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu6/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu6/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu6/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu6/cpuidle/state4
drwxr-xr-x 2 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu7/cpuidle/state0
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu7/cpuidle/state1
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu7/cpuidle/state2
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu7/cpuidle/state3
drwxr-xr-x 3 root root 0 Jul  3 11:41 /sys/devices/system/cpu/cpu7/cpuidle/state4

Хорошо. У меня есть 5 состояний ожидания, 0-4:

Шаг 2: Отключите состояния 1-4 (я использую скрипты, запущенные в качестве sudo):

doug@s15:~/idle$ cat idle_1-4_disable
#! /bin/bash
echo "idle disable states 1-4:"

/home/doug/idle/idle_state1_disable
/home/doug/idle/idle_state2_disable
/home/doug/idle/idle_state3_disable
/home/doug/idle/idle_state4_disable

doug@s15:~/idle$ cat idle_state1_disable
#! /bin/bash
echo "idle state 1: before:"
cat /sys/devices/system/cpu/cpu*/cpuidle/state1/disable

for file in /sys/devices/system/cpu/cpu*/cpuidle/state1/disable; do echo "1" > $file; done

echo "idle state 1: after:"
cat /sys/devices/system/cpu/cpu*/cpuidle/state1/disable

Получающийся в:

doug@s15:~/idle$ sudo ./idle_1-4_disable
idle disable states 1-4:
idle state 1: before:
0
0
0
0
0
0
0
0
idle state 1: after:
1
1
1
1
1
1
1
1
idle state 2: before:
0
0
0
0
0
0
0
0
idle state 2: after:
1
1
1
1
1
1
1
1
idle state 3: before:
0
0
0
0
0
0
0
0
idle state 3: after:
1
1
1
1
1
1
1
1
idle state 4: before:
0
0
0
0
0
0
0
0
idle state 4: after:
1
1
1
1
1
1
1
1
doug@s15:~/idle$

И если мы наблюдаем все это с турбостатом:

doug@s15:~/idle$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,GFXWatt,IRQ --interval 15
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt GFXWatt
0.02    2743    438     30      3.75    0.12
0.02    2753    406     29      3.75    0.12
0.02    2806    402     29      3.75    0.12
0.02    2764    436     29      3.75    0.12
58.62   3500    70887   50      30.75   0.12  <<<< ilde state 1-4 disabled
100.00  3500    120240  55      50.39   0.12  <<<< tubostat counts idle state 0 as busy
100.00  3500    120243  58      50.95   0.12  <<<< The system is actually still idle.
100.00  3500    120241  60      51.38   0.12
100.00  3500    120248  62      51.91   0.12
100.00  3500    120241  64      52.58   0.12
100.00  3500    120244  65      52.88   0.12
100.00  3500    120252  67      53.13   0.12
100.00  3500    120251  68      53.29   0.12
100.00  3500    120242  68      53.46   0.12
100.00  3500    120268  68      53.56   0.12
100.00  3500    120260  68      53.63   0.12
100.00  3500    120267  70      53.69   0.12

Если температура процессора добирается до высокого, то ограничьте свой верхний предел частоты ЦП. Пример Intel Pstate:

doug@s15:~/idle$ echo 60 | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
60

получающийся в:

100.00  3500    120267  70      53.96   0.12
100.00  3500    120274  71      53.92   0.12
100.00  3500    120256  70      53.95   0.12
100.00  3500    120277  70      53.93   0.12
100.00  3500    120326  70      53.95   0.12
34.97   3500    42719   48      21.53   0.12
0.02    2712    378     45      4.00    0.12
0.02    2754    396     42      3.96    0.12
0.02    2724    504     40      3.92    0.12
0.02    2816    378     39      3.89    0.12
94.33   3500    113569  60      48.59   0.12
100.00  3500    120242  63      51.88   0.12
100.00  3500    120240  65      52.64   0.12
100.00  3500    120280  68      53.08   0.12
100.00  3500    120333  68      53.32   0.12
100.00  1713    120348  55      20.29   0.12  <<< Had to toggle to powersave governor
100.00  2201    120280  57      26.31   0.12  <<< And then back to performance governor
100.00  2300    120239  56      27.58   0.12  <<< Now new max is in effect.
100.00  2300    120237  56      27.53   0.12  <<< And processor temp is less
100.00  2300    120237  55      27.46   0.12
100.00  2300    120232  54      27.42   0.12
0
ответ дан 7 December 2019 в 15:00

Другие вопросы по тегам:

Похожие вопросы: