Управление питанием с помощью tlp (настройка производительности)
Утилита tlp поможет настроить максимальную производительность для ПК и ноутбуков, а для последних добавит возможность перейти на энергосберегающий режим при питании от батареи. Советую ставить tlp и настраивать абсолютно на всех устройствах.
Не важно, ноутбук у вас или стационарный компьютер, по умолчанию manjaro использует энергосберегающую схему(регулятор) энергопотребления процессора powersave на системах с Intel. В других случаях обычно используется регулятор ondemand. Сравнение планировщиков вы можете посмотреть, например, на данном ресурсе.
Узнать подробнее про CPU регуляторы вы можете по ссылке.
Установка и настройка 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
Вы должны настроить, какие параметры вы хотите использовать, а также какой регулятор, в режиме зарядки(AC) и работе от батареи(BAT).
Доступные CPU регуляторы, вы можете узнать, введя команду:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Я приведу свой конфигурационный файл, с пометкой #! для обозначения внимания, который подойдет как для ПК, так и для ноутбуков, настроенный на максимальную производительность при работе от сети и энергосбережении при работе от батареи:
# ------------------------------------------------------------------------------ # 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 будет автоматический запускаться с системой. Также вы можете запустить его, не перезагружаясь:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Вы увидите планировщик который вы указали при питании от сети, в моем случае — performance, либо же powersave при работе от батареи.
Полный вывод утилиты tlp, включающий отчет по всем устройствам, можно узнать с помощью команды: