TLP:一個可以延長 Linux 筆記本電池壽命的高級電源管理工具

TLP:一個可以延長 Linux 筆記本電池壽命的高級電源管理工具

多年來,Linux 在電池優化方面取得了很大進步,但我們仍然需要做一些必要的事情來改善 Linux 中筆記本電腦的電池壽命。

-- Magesh Maruthamuthu(作者)

筆記本電池是針對 Windows 操作系統進行了高度優化的,當我在筆記本電腦中使用 Windows 操作系統時,我已經意識到這一點,但對於 Linux 來說卻不一樣。

多年來,Linux 在電池優化方面取得了很大進步,但我們仍然需要做一些必要的事情來改善 Linux 中筆記本電腦的電池壽命。

當我考慮延長電池壽命時,我沒有多少選擇,但我覺得 TLP 對我來說是一個更好的解決方案,所以我會繼續使用它。

在本教程中,我們將詳細討論 TLP 以延長電池壽命。

我們之前在我們的網站上寫過三篇關於 Linux 筆記本電池節電工具 的文章: PowerTOP 和 電池充電狀態 。

TLP

TLP 是一款自由開源的高級電源管理工具,可在不進行任何配置更改的情況下延長電池壽命。

由於它的默認配置已針對電池壽命進行了優化,因此你可能只需要安裝,然後就忘記它吧。

此外,它可以高度定製化,以滿足你的特定要求。TLP 是一個具有自動後臺任務的純命令行工具。它不包含GUI。

TLP 適用於各種品牌的筆記本電腦。設置電池充電閾值僅適用於 IBM/Lenovo ThinkPad。

所有 TLP 設置都存儲在 /etc/default/tlp 中。其默認配置提供了開箱即用的優化的節能設置。

以下 TLP 設置可用於自定義,如果需要,你可以相應地進行必要的更改。

TLP 功能

  • 內核筆記本電腦模式和髒緩衝區超時
  • 處理器頻率調整,包括 “turbo boost”/“turbo core”
  • 限制最大/最小的 P 狀態以控制 CPU 的功耗
  • HWP 能源性能提示
  • 用於多核/超線程的功率感知進程調度程序
  • 處理器性能與節能策略(x86_energy_perf_policy)
  • 硬盤高級電源管理級別(APM)和降速超時(按磁盤)
  • AHCI 鏈路電源管理(ALPM)與設備黑名單
  • PCIe 活動狀態電源管理(PCIe ASPM)
  • PCI(e) 總線設備的運行時電源管理
  • Radeon 圖形電源管理(KMS 和 DPM)
  • Wifi 省電模式
  • 關閉驅動器托架中的光盤驅動器
  • 音頻省電模式
  • I/O 調度程序(按磁盤)
  • USB 自動暫停,支持設備黑名單/白名單(輸入設備自動排除)
  • 在系統啟動和關閉時啟用或禁用集成的 wifi、藍牙或 wwan 設備
  • 在系統啟動時恢復無線電設備狀態(從之前的關機時的狀態)
  • 無線電設備嚮導:在網絡連接/斷開和停靠/取消停靠時切換無線電
  • 禁用 LAN 喚醒
  • 掛起/休眠後恢復集成的 WWAN 和藍牙狀態
  • 英特爾處理器的動態電源降低 —— 需要內核和 PHC-Patch 支持
  • 電池充電閾值 —— 僅限 ThinkPad
  • 重新校準電池 —— 僅限 ThinkPad

如何在 Linux 上安裝 TLP

TLP 包在大多數發行版官方存儲庫中都可用,因此,使用發行版的 包管理器 來安裝它。

對於 Fedora 系統,使用 DNF 命令 安裝 TLP。

$ sudo dnf install tlp tlp-rdw

ThinkPad 需要一些附加軟件包。

$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

$ sudo dnf install http://repo.linrunner.de/fedora/tlp/repos/releases/tlp-release.fc$(rpm -E %fedora).noarch.rpm

$ sudo dnf install akmod-tp_smapi akmod-acpi_call kernel-devel

安裝 smartmontool 以顯示 tlp-stat 中 S.M.A.R.T. 數據。

$ sudo dnf install smartmontools

對於 Debian/Ubuntu 系統,使用 APT-GET 命令 或 APT 命令 安裝 TLP。

$ sudo apt install tlp tlp-rdw

ThinkPad 需要一些附加軟件包。

$ sudo apt-get install tp-smapi-dkms acpi-call-dkms

安裝 smartmontool 以顯示 tlp-stat 中 S.M.A.R.T. 數據。

$ sudo apt-get install smartmontools

當基於 Ubuntu 的系統的官方軟件包過時時,請使用以下 PPA 存儲庫,該存儲庫提供最新版本。運行以下命令以使用 PPA 安裝 TLP。

$ sudo apt-get install tlp tlp-rdw

對於基於 Arch Linux 的系統,使用 Pacman 命令 安裝 TLP。

$ sudo pacman -S tlp tlp-rdw

ThinkPad 需要一些附加軟件包。

$ pacman -S tp_smapi acpi_call

安裝 smartmontool 以顯示 tlp-stat 中 S.M.A.R.T. 數據。

$ sudo pacman -S smartmontools

對於基於 Arch Linux 的系統,在啟動時啟用 TLP 和 TLP-Sleep 服務。

$ sudo systemctl enable tlp.service

$ sudo systemctl enable tlp-sleep.service

對於基於 Arch Linux 的系統,你還應該屏蔽以下服務以避免衝突,並確保 TLP 的無線電設備切換選項的正確操作。

$ sudo systemctl mask systemd-rfkill.service

$ sudo systemctl mask systemd-rfkill.socket

對於 RHEL/CentOS 系統,使用 YUM 命令 安裝 TLP。

$ sudo yum install tlp tlp-rdw

安裝 smartmontool 以顯示 tlp-stat 中 S.M.A.R.T. 數據。

$ sudo yum install smartmontools

對於 openSUSE Leap 系統,使用 Zypper 命令 安裝 TLP。

$ sudo zypper install TLP

安裝 smartmontool 以顯示 tlp-stat 中 S.M.A.R.T. 數據。

$ sudo zypper install smartmontools

成功安裝 TLP 後,使用以下命令啟動服務。

$ systemctl start tlp.service

使用方法

顯示電池信息

$ sudo tlp-stat -b

$ sudo tlp-stat --battery

--- TLP 1.1 --------------------------------------------

+++ Battery Status

/sys/class/power_supply/BAT0/manufacturer = SMP

/sys/class/power_supply/BAT0/model_name = L14M4P23

/sys/class/power_supply/BAT0/cycle_count = (not supported)

/sys/class/power_supply/BAT0/energy_full_design = 60000 [mWh]

/sys/class/power_supply/BAT0/energy_full = 48850 [mWh]

/sys/class/power_supply/BAT0/energy_now = 48850 [mWh]

/sys/class/power_supply/BAT0/power_now = 0 [mW]

/sys/class/power_supply/BAT0/status = Full

Charge = 100.0 [%]

Capacity = 81.4 [%]

顯示磁盤信息

$ sudo tlp-stat -d

$ sudo tlp-stat --disk

--- TLP 1.1 --------------------------------------------

+++ Storage Devices

/dev/sda:

Model = WDC WD10SPCX-24HWST1

Firmware = 02.01A02

APM Level = 128

Status = active/idle

Scheduler = mq-deadline

Runtime PM: control = on, autosuspend_delay = (not available)

SMART info:

4 Start_Stop_Count = 18787

5 Reallocated_Sector_Ct = 0

9 Power_On_Hours = 606 [h]

12 Power_Cycle_Count = 1792

193 Load_Cycle_Count = 25775

194 Temperature_Celsius = 31 [°C]

+++ AHCI Link Power Management (ALPM)

/sys/class/scsi_host/host0/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host1/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host2/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host3/link_power_management_policy = med_power_with_dipm

+++ AHCI Host Controller Runtime Power Management

/sys/bus/pci/devices/0000:00:17.0/ata1/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata2/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata3/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata4/power/control = on

顯示 PCI 設備信息

$ sudo tlp-stat -e

$ sudo tlp-stat --pcie

$ sudo tlp-stat -e

or

$ sudo tlp-stat --pcie

--- TLP 1.1 --------------------------------------------

+++ Runtime Power Management

Device blacklist = (not configured)

Driver blacklist = amdgpu nouveau nvidia radeon pcieport

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, skl_uncore)

/sys/bus/pci/devices/0000:00:01.0/power/control = auto (0x060400, PCI bridge, pcieport)

/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, i915)

/sys/bus/pci/devices/0000:00:14.0/power/control = auto (0x0c0330, USB controller, xhci_hcd)

......

顯示圖形卡信息

$ sudo tlp-stat -g

$ sudo tlp-stat --graphics

--- TLP 1.1 --------------------------------------------

+++ Intel Graphics

/sys/module/i915/parameters/enable_dc = -1 (use per-chip default)

/sys/module/i915/parameters/enable_fbc = 1 (enabled)

/sys/module/i915/parameters/enable_psr = 0 (disabled)

/sys/module/i915/parameters/modeset = -1 (use per-chip default)

顯示處理器信息

$ sudo tlp-stat -p

$ sudo tlp-stat --processor

--- TLP 1.1 --------------------------------------------

+++ Processor

CPU model = Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave

/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave

/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 800000 [kHz]

/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 3500000 [kHz]

/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = balance_power

/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

......

/sys/devices/system/cpu/intel_pstate/min_perf_pct = 22 [%]

/sys/devices/system/cpu/intel_pstate/max_perf_pct = 100 [%]

/sys/devices/system/cpu/intel_pstate/no_turbo = 0

/sys/devices/system/cpu/intel_pstate/turbo_pct = 33 [%]

/sys/devices/system/cpu/intel_pstate/num_pstates = 28

x86_energy_perf_policy: program not installed.

/sys/module/workqueue/parameters/power_efficient = Y

/proc/sys/kernel/nmi_watchdog = 0

+++ Undervolting

PHC kernel not available.

顯示系統數據信息

$ sudo tlp-stat -s

$ sudo tlp-stat --system

--- TLP 1.1 --------------------------------------------

+++ System Info

System = LENOVO Lenovo ideapad Y700-15ISK 80NV

BIOS = CDCN35WW

Release = "Manjaro Linux"

Kernel = 4.19.6-1-MANJARO #1 SMP PREEMPT Sat Dec 1 12:21:26 UTC 2018 x86_64

/proc/cmdline = BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f rw quiet resume=UUID=a2092b92-af29-4760-8e68-7a201922573b

Init system = systemd

Boot mode = BIOS (CSM, Legacy)

+++ TLP Status

State = enabled

Last run = 11:04:00 IST, 596 sec(s) ago

Mode = battery

Power source = battery

顯示溫度和風扇速度信息

$ sudo tlp-stat -t

$ sudo tlp-stat --temp

--- TLP 1.1 --------------------------------------------

+++ Temperatures

CPU temp = 36 [°C]

Fan speed = (not available)

顯示 USB 設備數據信息

$ sudo tlp-stat -u

$ sudo tlp-stat --usb

--- TLP 1.1 --------------------------------------------

+++ USB

Autosuspend = disabled

Device whitelist = (not configured)

Device blacklist = (not configured)

Bluetooth blacklist = disabled

Phone blacklist = disabled

WWAN blacklist = enabled

Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 3.0 root hub (hub)

Bus 001 Device 003 ID 174f:14e8 control = auto, autosuspend_delay_ms = 2000 -- Syntek (uvcvideo)

......

顯示警告信息

$ sudo tlp-stat -w

$ sudo tlp-stat --warn

--- TLP 1.1 --------------------------------------------

No warnings detected.

狀態報告及配置和所有活動的設置

$ sudo tlp-stat

--- TLP 1.1 --------------------------------------------

+++ Configured Settings: /etc/default/tlp

TLP_ENABLE=1

TLP_DEFAULT_MODE=AC

TLP_PERSISTENT_DEFAULT=0

DISK_IDLE_SECS_ON_AC=0

DISK_IDLE_SECS_ON_BAT=2

MAX_LOST_WORK_SECS_ON_AC=15

MAX_LOST_WORK_SECS_ON_BAT=60

......

+++ System Info

System = LENOVO Lenovo ideapad Y700-15ISK 80NV

BIOS = CDCN35WW

Release = "Manjaro Linux"

Kernel = 4.19.6-1-MANJARO #1 SMP PREEMPT Sat Dec 1 12:21:26 UTC 2018 x86_64

/proc/cmdline = BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f rw quiet resume=UUID=a2092b92-af29-4760-8e68-7a201922573b

Init system = systemd

Boot mode = BIOS (CSM, Legacy)

+++ TLP Status

State = enabled

Last run = 11:04:00 IST, 684 sec(s) ago

Mode = battery

Power source = battery

+++ Processor

CPU model = Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave

/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave

......

/sys/devices/system/cpu/intel_pstate/min_perf_pct = 22 [%]

/sys/devices/system/cpu/intel_pstate/max_perf_pct = 100 [%]

/sys/devices/system/cpu/intel_pstate/no_turbo = 0

/sys/devices/system/cpu/intel_pstate/turbo_pct = 33 [%]

/sys/devices/system/cpu/intel_pstate/num_pstates = 28

x86_energy_perf_policy: program not installed.

/sys/module/workqueue/parameters/power_efficient = Y

/proc/sys/kernel/nmi_watchdog = 0

+++ Undervolting

PHC kernel not available.

+++ Temperatures

CPU temp = 42 [°C]

Fan speed = (not available)

+++ File System

/proc/sys/vm/laptop_mode = 2

/proc/sys/vm/dirty_writeback_centisecs = 6000

/proc/sys/vm/dirty_expire_centisecs = 6000

/proc/sys/vm/dirty_ratio = 20

/proc/sys/vm/dirty_background_ratio = 10

+++ Storage Devices

/dev/sda:

Model = WDC WD10SPCX-24HWST1

Firmware = 02.01A02

APM Level = 128

Status = active/idle

Scheduler = mq-deadline

Runtime PM: control = on, autosuspend_delay = (not available)

SMART info:

4 Start_Stop_Count = 18787

5 Reallocated_Sector_Ct = 0

9 Power_On_Hours = 606 [h]

12 Power_Cycle_Count = 1792

193 Load_Cycle_Count = 25777

194 Temperature_Celsius = 31 [°C]

+++ AHCI Link Power Management (ALPM)

/sys/class/scsi_host/host0/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host1/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host2/link_power_management_policy = med_power_with_dipm

/sys/class/scsi_host/host3/link_power_management_policy = med_power_with_dipm

+++ AHCI Host Controller Runtime Power Management

/sys/bus/pci/devices/0000:00:17.0/ata1/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata2/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata3/power/control = on

/sys/bus/pci/devices/0000:00:17.0/ata4/power/control = on

+++ PCIe Active State Power Management

/sys/module/pcie_aspm/parameters/policy = powersave

+++ Intel Graphics

/sys/module/i915/parameters/enable_dc = -1 (use per-chip default)

/sys/module/i915/parameters/enable_fbc = 1 (enabled)

/sys/module/i915/parameters/enable_psr = 0 (disabled)

/sys/module/i915/parameters/modeset = -1 (use per-chip default)

+++ Wireless

bluetooth = on

wifi = on

wwan = none (no device)

hci0(btusb) : bluetooth, not connected

wlp8s0(iwlwifi) : wifi, connected, power management = on

+++ Audio

/sys/module/snd_hda_intel/parameters/power_save = 1

/sys/module/snd_hda_intel/parameters/power_save_controller = Y

+++ Runtime Power Management

Device blacklist = (not configured)

Driver blacklist = amdgpu nouveau nvidia radeon pcieport

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, skl_uncore)

/sys/bus/pci/devices/0000:00:01.0/power/control = auto (0x060400, PCI bridge, pcieport)

/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, i915)

......

+++ USB

Autosuspend = disabled

Device whitelist = (not configured)

Device blacklist = (not configured)

Bluetooth blacklist = disabled

Phone blacklist = disabled

WWAN blacklist = enabled

Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 3.0 root hub (hub)

Bus 001 Device 003 ID 174f:14e8 control = auto, autosuspend_delay_ms = 2000 -- Syntek (uvcvideo)

Bus 001 Device 002 ID 17ef:6053 control = on, autosuspend_delay_ms = 2000 -- Lenovo (usbhid)

Bus 001 Device 004 ID 8087:0a2b control = auto, autosuspend_delay_ms = 2000 -- Intel Corp. (btusb)

Bus 001 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 2.0 root hub (hub)

+++ Battery Status

/sys/class/power_supply/BAT0/manufacturer = SMP

/sys/class/power_supply/BAT0/model_name = L14M4P23

/sys/class/power_supply/BAT0/cycle_count = (not supported)

/sys/class/power_supply/BAT0/energy_full_design = 60000 [mWh]

/sys/class/power_supply/BAT0/energy_full = 51690 [mWh]

/sys/class/power_supply/BAT0/energy_now = 50140 [mWh]

/sys/class/power_supply/BAT0/power_now = 12185 [mW]

/sys/class/power_supply/BAT0/status = Discharging

Charge = 97.0 [%]

Capacity = 86.2 [%]


via: https://www.2daygeek.com/tlp-increase-optimize-linux-laptop-battery-life/

作者: Magesh Maruthamuthu 選題: lujun9972 譯者: wxy 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊“瞭解更多”可訪問文內鏈接

相關推薦

推薦中...