26338
Управление питанием с помощью tlp (настройка производительности)
Утилита tlp поможет настроить максимальную производительность для ПК и ноутбуков, а для последних добавит возможность перейти на энергосберегающий режим при питании от батареи. Советую ставить tlp и настраивать абсолютно на всех устройствах.
Не важно, ноутбук у вас или стационарный компьютер, по умолчанию manjaro использует энергосберегающую схему(регулятор) энергопотребления процессора powersave на системах с Intel. В других случаях обычно используется регулятор ondemand. Сравнение планировщиков вы можете посмотреть, например, на данном ресурсе.
Узнать подробнее про CPU регуляторы вы можете по ссылке.
Настроить автозапуск сервисов, выполнив следующие команды по очереди:
Далее необходимо настроить конфигурационный файл tlp:
Вы должны настроить, какие параметры вы хотите использовать, а также какой регулятор, в режиме зарядки(AC) и работе от батареи(BAT).
Доступные CPU регуляторы, вы можете узнать, введя команду:
Подробную инструкцию по настройке tlp вы можете прочитать здесь: http://linrunner.de/en/tlp/docs/tlp-configuration.html
Также может пригодиться:
https://wiki.archlinux.org/index.php/TLP
Я приведу свой конфигурационный файл, с пометкой #! для обозначения внимания, который подойдет как для ПК, так и для ноутбуков, настроенный на максимальную производительность при работе от сети и энергосбережении при работе от батареи:
После настройки, tlp будет автоматический запускаться с системой. Также вы можете запустить его, не перезагружаясь:
Чтобы проверить его работу, достаточно выполнить
Вы увидите планировщик который вы указали при питании от сети, в моем случае — performance, либо же powersave при работе от батареи.
Полный вывод утилиты tlp, включающий отчет по всем устройствам, можно узнать с помощью команды:
Не важно, ноутбук у вас или стационарный компьютер, по умолчанию manjaro использует энергосберегающую схему(регулятор) энергопотребления процессора powersave на системах с Intel. В других случаях обычно используется регулятор ondemand. Сравнение планировщиков вы можете посмотреть, например, на данном ресурсе.
Узнать подробнее про CPU регуляторы вы можете по ссылке.
Установка и настройка tlp:
sudo pacman -S tlp
Настроить автозапуск сервисов, выполнив следующие команды по очереди:
sudo systemctl disable systemd-rfkill.service
sudo systemctl mask systemd-rfkill.socket systemd-rfkill.service
sudo systemctl enable tlp.service
sudo systemctl enable tlp-sleep.service
Далее необходимо настроить конфигурационный файл tlp:
sudo nano /etc/default/tlp
Вы должны настроить, какие параметры вы хотите использовать, а также какой регулятор, в режиме зарядки(AC) и работе от батареи(BAT).
Доступные CPU регуляторы, вы можете узнать, введя команду:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Подробную инструкцию по настройке tlp вы можете прочитать здесь: http://linrunner.de/en/tlp/docs/tlp-configuration.html
Также может пригодиться:
https://wiki.archlinux.org/index.php/TLP
Я приведу свой конфигурационный файл, с пометкой #! для обозначения внимания, который подойдет как для ПК, так и для ноутбуков, настроенный на максимальную производительность при работе от сети и энергосбережении при работе от батареи:
# ------------------------------------------------------------------------------
# tlp - Parameters for power save
# See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html
# Hint: some features are disabled by default, remove the leading # to enable
# them.
# !
# Set to 0 to disable, 1 to enable TLP.
TLP_ENABLE=1
# Operation mode when no power supply can be detected: AC, BAT
# Concerns some desktop and embedded hardware only.
TLP_DEFAULT_MODE=AC
# Seconds laptop mode has to wait after the disk goes idle before doing a sync.
# Non-zero value enables, zero disables laptop mode.
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
# Dirty page values (timeouts in secs).
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
# Hint: CPU parameters below are disabled by default, remove the leading #
# to enable them, otherwise kernel default values are used.
# !
# Select a CPU frequency scaling governor:
# ondemand, powersave, performance, conservative
# Intel Core i processor with intel_pstate driver:
# powersave, performance
# Important:
# You *must* disable your distribution's governor settings or conflicts will
# occur. ondemand is sufficient for *almost all* workloads, you should know
# what you're doing!
CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_SCALING_GOVERNOR_ON_BAT=powersave
# Set the min/max frequency available for the scaling governor.
# Possible values strongly depend on your CPU. For available frequencies see
# tlp-stat output, Section "+++ Processor".
# CPU_SCALING_MIN_FREQ_ON_AC=0
# CPU_SCALING_MAX_FREQ_ON_AC=0
# CPU_SCALING_MIN_FREQ_ON_BAT=0
# CPU_SCALING_MAX_FREQ_ON_BAT=0
# !
# Set Intel P-state performance: 0..100 (%)
# Limit the max/min P-state to control the power dissipation of the CPU.
# Values are stated as a percentage of the available performance.
# Requires an Intel Core i processor with intel_pstate driver.
CPU_MIN_PERF_ON_AC=50
CPU_MAX_PERF_ON_AC=100
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
# !
# Set the CPU "turbo boost" feature: 0=disable, 1=allow
# Requires an Intel Core i processor.
# Important:
# - This may conflict with your distribution's governor settings
# - A value of 1 does *not* activate boosting, it just allows it
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
# !
# Minimize number of used CPU cores/hyper-threads under light load conditions
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
# Kernel NMI Watchdog:
# 0=disable (default, saves power), 1=enable (for kernel debugging only)
NMI_WATCHDOG=0
# Change CPU voltages aka "undervolting" - Kernel with PHC patch required
# Frequency voltage pairs are written to:
# /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
# CAUTION: only use this, if you thoroughly understand what you are doing!
# PHC_CONTROLS="F:V F:V F:V F:V"
# !
# Set CPU performance versus energy savings policy:
# performance, normal, powersave
# Requires kernel module msr and x86_energy_perf_policy from linux-tools
ENERGY_PERF_POLICY_ON_AC=performance
ENERGY_PERF_POLICY_ON_BAT=powersave
# Hard disk devices; separate multiple devices with spaces (default: sda).
# Devices can be specified by disk ID also (lookup with: tlp diskid).
DISK_DEVICES="sda sdb"
# !
# Hard disk advanced power management level: 1..254, 255 (max saving, min, off)
# Levels 1..127 may spin down the disk; 255 allowable on most drives.
# Separate values for multiple devices with spaces.
DISK_APM_LEVEL_ON_AC="255 255"
DISK_APM_LEVEL_ON_BAT="192 192"
# Hard disk spin down timeout:
# 0: spin down disabled
# 1..240: timeouts from 5s to 20min (in units of 5s)
# 241..251: timeouts from 30min to 5.5 hours (in units of 30min)
# See 'man hdparm' for details.
# DISK_SPINDOWN_TIMEOUT_ON_AC="0 0"
# DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"
# Select IO scheduler for the disk devices: noop, deadline, cfq (Default: cfq);
# Separate values for multiple devices with spaces.
# DISK_IOSCHED="cfq cfq"
# !
# SATA aggressive link power management (ALPM):
# min_power, medium_power, max_performance
SATA_LINKPWR_ON_AC=max_performance
SATA_LINKPWR_ON_BAT=min_power
# !
# PCI Express Active State Power Management (PCIe ASPM):
# default, performance, powersave
PCIE_ASPM_ON_AC=performance
PCIE_ASPM_ON_BAT=powersave
# Radeon graphics clock speed (profile method): low, mid, high, auto, default;
# auto = mid on BAT, high on AC; default = use hardware defaults.
# (Kernel >= 2.6.35 only, open-source radeon driver explicitly)
RADEON_POWER_PROFILE_ON_AC=high
RADEON_POWER_PROFILE_ON_BAT=low
# Radeon dynamic power management method (DPM): battery, performance
# (Kernel >= 3.11 only, requires boot option radeon.dpm=1)
RADEON_DPM_STATE_ON_AC=performance
RADEON_DPM_STATE_ON_BAT=battery
# Radeon DPM performance level: auto, low, high; auto is recommended.
RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=auto
# WiFi power saving mode: 1=disable, 5=enable; not supported by all adapters.
WIFI_PWR_ON_AC=1
WIFI_PWR_ON_BAT=5
# Disable wake on LAN: Y/N
WOL_DISABLE=Y
# Enable audio power saving for Intel HDA, AC97 devices (timeout in secs).
# A value of 0 disables, >=1 enables power save.
SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=1
# Disable controller too (HDA only): Y/N
SOUND_POWER_SAVE_CONTROLLER=Y
# Set to 1 to power off optical drive in UltraBay/MediaBay when running on
# battery. A value of 0 disables this feature (Default).
# Drive can be powered on again by releasing (and reinserting) the eject lever
# or by pressing the disc eject button on newer models.
# Note: an UltraBay/MediaBay hard disk is never powered off.
BAY_POWEROFF_ON_BAT=0
# Optical drive device to power off (default sr0).
BAY_DEVICE="sr0"
# Runtime Power Management for PCI(e) bus devices: on=disable, auto=enable
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto
# Runtime PM for *all* PCI(e) bus devices, except blacklisted ones:
# 0=disable, 1=enable
RUNTIME_PM_ALL=1
# Exclude PCI(e) device adresses the following list from Runtime PM
# (separate with spaces). Use lspci to get the adresses (1st column).
# RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6"
# Exclude PCI(e) devices assigned to the listed drivers from Runtime PM
# (should prevent accidential power on of hybrid graphics' discrete part).
# Default is "radeon nouveau"; use "" to disable the feature completely.
# Separate multiple drivers with spaces.
RUNTIME_PM_DRIVER_BLACKLIST="radeon nouveau"
# Set to 0 to disable, 1 to enable USB autosuspend feature.
USB_AUTOSUSPEND=1
# Exclude listed devices from USB autosuspend (separate with spaces).
# Use lsusb to get the ids.
# Note: input devices (usbhid) are excluded automatically (see below)
# USB_BLACKLIST="1111:2222 3333:4444"
# WWAN devices are excluded from USB autosuspend:
# 0=do not exclude / 1=exclude
USB_BLACKLIST_WWAN=1
# Include listed devices into USB autosuspend even if already excluded
# by the driver or WWAN blacklists above (separate with spaces).
# Use lsusb to get the ids.
# USB_WHITELIST="1111:2222 3333:4444"
# Set to 1 to disable autosuspend before shutdown, 0 to do nothing
# (workaround for USB devices that cause shutdown problems).
# USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1
# !
# С помощью данного параметра, вы можете восстановить состояние
# беспроводных сетей, с предыдущей сессии
# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
# on system startup: 0=disable, 1=enable.
# Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
# are ignored when this is enabled!
RESTORE_DEVICE_STATE_ON_STARTUP=1
# Radio devices to disable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
# DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"
# Radio devices to enable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
# DEVICES_TO_ENABLE_ON_STARTUP="wifi"
# Radio devices to disable on shutdown: bluetooth, wifi, wwan
# (workaround for devices that are blocking shutdown).
# DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan"
# Radio devices to enable on shutdown: bluetooth, wifi, wwan
# (to prevent other operating systems from missing radios).
# DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan"
# Radio devices to enable on AC: bluetooth, wifi, wwan
# DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan"
# Radio devices to disable on battery: bluetooth, wifi, wwan
# DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan"
# Radio devices to disable on battery when not in use (not connected):
# bluetooth, wifi, wwan
# DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan"
# Battery charge thresholds (ThinkPad only, tp-smapi or acpi-call kernel module
# required). Charging starts when the remaining capacity falls below the
# START_CHARGE_TRESH value and stops when exceeding the STOP_CHARGE_TRESH value.
# Main / Internal battery (values in %)
# START_CHARGE_THRESH_BAT0=75
# STOP_CHARGE_THRESH_BAT0=80
# Ultrabay / Slice / Replaceable battery (values in %)
# START_CHARGE_THRESH_BAT1=75
# STOP_CHARGE_THRESH_BAT1=80
# ------------------------------------------------------------------------------
# tlp-rdw - Parameters for the radio device wizard
# Possible devices: bluetooth, wifi, wwan
# Hints:
# - Parameters are disabled by default, remove the leading # to enable them.
# - Separate multiple radio devices with spaces.
# Radio devices to disable on connect.
# DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
# DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan"
# DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi"
# Radio devices to enable on disconnect.
# DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"
# DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT=""
# DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""
# Radio devices to enable/disable when docked.
# DEVICES_TO_ENABLE_ON_DOCK=""
# DEVICES_TO_DISABLE_ON_DOCK=""
# Radio devices to enable/disable when undocked.
# DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
# DEVICES_TO_DISABLE_ON_UNDOCK=""
После настройки, tlp будет автоматический запускаться с системой. Также вы можете запустить его, не перезагружаясь:
sudo tlp start
Чтобы проверить его работу, достаточно выполнить
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Вы увидите планировщик который вы указали при питании от сети, в моем случае — performance, либо же powersave при работе от батареи.
Полный вывод утилиты tlp, включающий отчет по всем устройствам, можно узнать с помощью команды:
sudo tlp-stat
17 комментариев
DISK_APM_LEVEL_ON_BAT
Когда я использовал ноут с обычным HDD (не SSD), при работе от батареи с TLP, жесткий диск начинал часто щелкать (парковал головки). Победить это помогло изменение значения DISK_APM_LEVEL_ON_BAT с 128 на 192:
DISK_APM_LEVEL_ON_BAT=«192»
Для владельцев SSD может иметь место потеря производительности. Тогда можно отрубить APM:
DISK_APM_LEVEL_ON_BAT=«255»
Конечно же это все есть по ссылке на мануал по конфигурированию TLP (http://linrunner.de/en/tlp/docs/tlp-configuration.html).
Если не ошибаюсь SSD даже при отключенном APM все равно не должен много кушать батарейку, по сравнению с тем же HDD. Поэтому для HDD важнее данная настройка.
Приятно, что все можно под себя настроить в этом TLP.
я на своём ноуте почти за год пользования, ни каких конфликтов не замечал.
В строке ниже написано, как определить ID диска к которому будут применяться данные манипуляции (tlp diskid). По ссылке на linruner в разделе Disks and Controllers тоже, что-то в этом роде:
Device Assignment
DISK_DEVICES=«sda sdb»
Defines the disk devices the following parameters are effective for. Multiple devices are separated with blanks.
When using a 2nd disk in a swappable drive slot or the Ultrabay, the assignment of device names by the kernel (sda/sdb) can change possibly. In this case it is advisable to do the device assignment using IDs:
DISK_DEVICES=«ata-INTEL_SSDSA2M160G2GC_XZY123456890 ata-HITACHI_HTS541612J9SA00_XZY123456890»
The command
tlp diskid
shows the IDs of all attached disks.
К сожалению знания английского не достаточно, что бы понять точно разработчика, только поверхностно. Я прописываю ID диска. Что скажете?
ID дисков лучше прописывать в том случае, если вы их часто отсоединяете — к примеру, сейчас ваш второй диск определяется как /dev/sdb, вы его переприсоединили — ядро определило его как /dev/sdc (хотя на практике наблюдал подобное только с флешками), и TLP этот диск уже не контролирует.
этот режим нужно включать и настраивать.
Яндекс по запросу: «технология intel_pstate + tlp», среди прочих выдал ссылочку где описывается настройка энергосбережения в Линукс с помощью intel_pstate и thermald. Почти в самом конце статьи есть такая строчка:
и если верить Гуглопереводу, то получается:
У меня тоже P-State:
[sudo] пароль для ramash:
/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu2/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu3/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/intel_pstate/min_perf_pct = 100
/sys/devices/system/cpu/intel_pstate/max_perf_pct = 100
/sys/devices/system/cpu/intel_pstate/no_turbo = 0
толко я с ним не заморачивался, tlp достаточно, может в будущем как-нибудь.
Да, вот ещё, кусок моего конфига где есть настройки для этого pstate:
# powersave, performance
# Important:
# You *must* disable your distribution"s governor settings or conflicts will
# occur. ondemand is sufficient for *almost all* workloads, you should know
# what you're doing!
CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_SCALING_GOVERNOR_ON_BAT=pewersave
++++++++++++++++++++++++++++++++++++++++++++++++++
# Set Intel P-state performance: 0..100 (%)
# Limit the max/min P-state to control the power dissipation of the CPU.
# Values are stated as a percentage of the available performance.
# Requires an Intel Core i processor with intel_pstate driver.
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
Если у Вас Manjaro-Xfce-15.12-x64, сервис tlp предустановлен. Можно ставить вопрос по другому: стоит ли удалять? :)
З.Ы. у меня комментарии на параметрах (О_о)
быстрые простые правильные (иногда) ответы здесь t.me/ManjaroRu