筆電電池是針對 Windows 作業系統進行了高度優化的,當我在筆記型電腦中使用 Windows 作業系統時,我已經意識到這一點,但對於 Linux 來說卻不一樣。
多年來,Linux 在電池優化方面取得了很大進步,但我們仍然需要做一些必要的事情來改善 Linux 中筆記型電腦的電池壽命。
當我考慮延長電池壽命時,我沒有多少選擇,但我覺得 TLP 對我來說是一個更好的解決方案,所以我會繼續使用它。
在本教學中,我們將詳細討論 TLP 以延長電池壽命。
我們之前在我們的網站上寫過三篇關於 Linux 筆電電池節電工具 的文章:PowerTOP 和 電池充電狀態。
TLP 是一款自由開源的高階電源管理工具,可在不進行任何設定更改的情況下延長電池壽命。
由於它的預設設定已針對電池壽命進行了優化,因此你可能只需要安裝,然後就忘記它吧。
此外,它可以高度客製化化,以滿足你的特定要求。TLP 是一個具有自動後台任務的純命令列工具。它不包含GUI。
TLP 適用於各種品牌的筆記型電腦。設定電池充電閾值僅適用於 IBM/Lenovo ThinkPad。
所有 TLP 設定都儲存在 /etc/default/tlp
中。其預設設定提供了開箱即用的優化的節能設定。
以下 TLP 設定可用於自定義,如果需要,你可以相應地進行必要的更改。
x86_energy_perf_policy
)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 add-apt-repository ppa:linrunner/tlp$ sudo apt-get update$ sudo apt-get install tlp
對於基於 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 = FullCharge = 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
$ sudo tlp-stat -e或$ sudo tlp-stat --pcie
$ sudo tlp-stat -eor$ sudo tlp-stat --pcie--- TLP 1.1 --------------------------------------------+++ Runtime Power ManagementDevice 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 --------------------------------------------+++ ProcessorCPU 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 = 28x86_energy_perf_policy: program not installed./sys/module/workqueue/parameters/power_efficient = Y/proc/sys/kernel/nmi_watchdog = 0+++ UndervoltingPHC kernel not available.
$ sudo tlp-stat -s或$ sudo tlp-stat --system
--- TLP 1.1 --------------------------------------------+++ System InfoSystem = LENOVO Lenovo ideapad Y700-15ISK 80NVBIOS = CDCN35WWRelease = "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-7a201922573bInit system = systemd Boot mode = BIOS (CSM, Legacy)+++ TLP StatusState = enabledLast run = 11:04:00 IST, 596 sec(s) agoMode = batteryPower source = battery
$ sudo tlp-stat -t或$ sudo tlp-stat --temp
--- TLP 1.1 --------------------------------------------+++ TemperaturesCPU temp = 36 [°C]Fan speed = (not available)
$ sudo tlp-stat -u或$ sudo tlp-stat --usb
--- TLP 1.1 --------------------------------------------+++ USBAutosuspend = disabledDevice whitelist = (not configured)Device blacklist = (not configured)Bluetooth blacklist = disabledPhone blacklist = disabledWWAN blacklist = enabledBus 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/tlpTLP_ENABLE=1TLP_DEFAULT_MODE=ACTLP_PERSISTENT_DEFAULT=0DISK_IDLE_SECS_ON_AC=0DISK_IDLE_SECS_ON_BAT=2MAX_LOST_WORK_SECS_ON_AC=15MAX_LOST_WORK_SECS_ON_BAT=60......+++ System InfoSystem = LENOVO Lenovo ideapad Y700-15ISK 80NVBIOS = CDCN35WWRelease = "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-7a201922573bInit system = systemdBoot mode = BIOS (CSM, Legacy)+++ TLP StatusState = enabledLast run = 11:04:00 IST, 684 sec(s) agoMode = batteryPower source = battery+++ ProcessorCPU 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 = 28x86_energy_perf_policy: program not installed./sys/module/workqueue/parameters/power_efficient = Y/proc/sys/kernel/nmi_watchdog = 0+++ UndervoltingPHC kernel not available.+++ TemperaturesCPU 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)+++ Wirelessbluetooth = onwifi = onwwan = none (no device)hci0(btusb) : bluetooth, not connectedwlp8s0(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 ManagementDevice 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)......+++ USBAutosuspend = disabledDevice whitelist = (not configured)Device blacklist = (not configured)Bluetooth blacklist = disabledPhone blacklist = disabledWWAN blacklist = enabledBus 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 = DischargingCharge = 97.0 [%]Capacity = 86.2 [%]