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

Я использую Ubuntu MATE 16.04.3 LTS на Thinkpad T430 (двухъядерный процессор Core i7, номинальная тактовая частота 2,9 ГГц, 8 ГБ ОЗУ, внутренняя батарея на 9 ячеек и батарея Slice на 9 ячеек). У меня отличное время автономной работы - до 10 часов нормальной работы при полном заряде.

Недавно у меня были проблемы с производительностью при игре в игру (космическая программа Kerbal) с питанием от сети переменного тока, и я обнаружил, что компьютер остался в режиме энергосбережения, из-за чего процессор работал на более низкой тактовой частоте, чем необходимо, когда я не пытаясь агрессивно экономить энергию. Это, вероятно, произошло до того, как я приобрел расширенные батареи, когда я пытался агрессивно увеличить срок службы батареи с помощью оригинальной 6-элементной батареи.

Я могу легко переключить ЦП обратно в режим «Производительность» с помощью виджета «Монитор масштабирования частоты ЦП», который я смонтировал на системной панели (который, по-видимому, отдельно управляет синхронизацией для двух реальных и двух виртуальных ядер) - но я Я изучил окно Power системных настроек и не вижу способа заставить ОС автоматически переключаться между режимами энергосбережения (что мне нужно, когда питание от батареи) и производительностью (что я предпочел бы, когда питание от сети) .

Я надеюсь, что мне просто не хватает чего-то очевидного; Я довольно новичок в 16.04 и в MATE, только что получил эту машину (и очистил установленную Ubuntu, неохотно сохраняя Windows 10 на двойной загрузке) пару месяцев назад.

Поиск похожих вопросов обнаружил этот , который кажется похожим, но относится к Ubuntu 14.10, теперь EOL, и может, а может и не быть правильным для моего точного оборудования, хотя я не уверен как узнать, есть ли у меня процессор Sandy Bridge).

0
задан 3 December 2017 в 03:12

2 ответа

Я провел некоторое исследование. Его результаты ниже.

Я использую Ivy Bridge i7-3537U на ПОМОЩНИКЕ с тем же виджетом. Мой другой ЦП является Haswell i7-4790. Согласно sysfs у них есть только два регулятора

$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_g‌​overnors
performance powersave

Это использует новый intel_pstate драйвер.

Более старым ЦП, таким как мой Clarksfield i7-740QM управляют acpi-cpufreq драйвер, это имеет 5 регуляторов (conservative ondemand userspace powersave performance).

Формирователь тока может быть проверен cpufreq-info -d (от cpufrequtils пакет).

Можно проверить ЦП с lscpu. Я думаю, что можно контролировать ЦП фактические частоты с i7z или i7z_GUI (устанавливаемый с sudo apt-get install i7z i7z-gui) или powertop (sudo apt-get install powertop, посмотрите вкладку статистики Частоты).

На другом потоке объяснено, как выключить intel_pstate драйвер. Я попробовал так своими центральными процессорами Haswell и Ivy Bridge, но я получаю очень близкие результаты в тесте LINPACK Intel.

Я могу завершить следующее:

  • intel_pstate регулятор powersave эквивалентен старому acpi-cpufreq ondemand один;
  • кажется, что Вы уже получили пиковую производительность от своего ЦП.
0
ответ дан 3 December 2017 в 03:12

1- создайте файл /opt/system_cupmode.sh с помощью sudo

2- запустите следующую команду, чтобы дать ему необходимые разрешения

sudo chmod +x /opt/system_cupmode.sh

3- откройте файл и добавьте следующее code:

#!/bin/bash
# This script will switch cpu mode to performance on charging automatically
# Author: @saleh_awal

tFile=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
if on_ac_power; then
    # charging on
    if grep -qi "powersave" $tFile; then
        echo performance | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    else
        echo "already updated to performance"
    fi
else
    # charging off
    if grep -qi "performance" $tFile; then
        echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    else
        echo "already updated to powersave"
    fi
fi

4- добавьте cronjob для вашего пользователя root следующим образом:

sudo crontab -e

затем добавьте эту строку внизу файла, которая будет запускать код каждые 10 секунд

*/10 * * * * /opt/system_cupmode.sh
0
ответ дан 28 January 2021 в 11:31

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

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