如何在 Linux 上使用 TLP 优化笔记本电脑电池寿命如何在 Linux 上使用 TLP 优化笔记本电脑电池寿命如何在 Linux 上使用 TLP 优化笔记本电脑电池寿命如何在 Linux 上使用 TLP 优化笔记本电脑电池寿命
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 TLP 优化笔记本电脑电池寿命

在笔记本电脑等移动设备上使用 Linux 时,调整正确的内核参数以优化电池寿命非常重要。 Tlp 是一个高度可定制的、免费的开源命令行实用程序,根据 GPLv2 许可证发布(源代码托管在 github 上),正是为了这个目标而创建的。在本教程中,我们将了解如何在一些最常用的 Linux 发行版上安装 Tlp 以及如何配置它。

在本教程中您将学习:

  • 如何安装 TLP

  • 如何配置 Tlp

  • 如何使用 tlp-stat 检查省电状态

使用的软件要求和约定

安装 Tlp

Tlp 可在最常用的 Linux 发行版的存储库中找到,因此我们需要做的就是使用我们最喜欢的包管理器来安装它。我们需要安装的基础包名为tlp;此外,如果我们打算在发生某些事件时使用无线电设备向导来启用或禁用无线电接口,我们需要安装tlp-rdw软件包。

Fedora 是 Red Hat 家族的社区发行版,使用 dnf 包管理器来安装或删除软件包。要安装 Tlp,我们需要做的就是启动以下命令:

$ sudo dnf install tlp tlp-rdw

Debian 是最广泛、最稳定的 Linux 发行版之一,是许多衍生版本(例如 Ubuntu 和 Linux Mint)的基础。在此发行版上安装软件的“现代”方法是使用 apt 包装器,它通过 apt-get 和其他命令提供友好的用户界面:

$ sudo apt install tlp tlp-rdw

Tlp 也可以在 Archlinux“社区”存储库中找到。要在 Arch 上安装软件,我们使用 pacman 包管理器:

$ sudo pacman -Sy tlp tlp-rdw

一旦 Tlp 安装在我们的系统上,我们需要启动相关服务,并在启动时启用它(在 Fedora 和 Debian 上,该服务应作为安装的一部分自动启动)。现在几乎所有发行版都使用 Systemd 作为初始化管理器,因此要执行此类任务,我们可以使用 systemctl 命令:

$ sudo systemctl enable --now tlp.service

配置Tlp

要配置 Tlp 并调整它以更好地满足我们的需求,我们基本上有两个选择:

  1. 编辑 /etc/tlp.conf 文件

  2. 将配置文件放入 /etc/tlp.d 目录中

我们应该采取什么方法?那要看。如果我们打开主 Tlp 配置文件 /etc/tlp.conf,我们可以看到它的所有内容是如何注释的。对于每个可用选项,都提供了简要说明,包括其默认值和通常建议的值。要更改选项的值,我们需要从相应的行中删除注释并将所需的值分配给相应的变量。如果我们手动修改设置,这种方法更容易采用。

作为一种替代方法,我们可以创建一个或多个包含我们要使用的选项及其值的设置文件,并将它们放入 /etc/tlp.d 目录中。这些文件中的每一个都应在其名称中包含“.conf”扩展名。这种方法可能会更方便,例如,如果我们将 tlp 部署为使用 Ansible 或 Kickstart 执行的自动化安装的一部分。

正如我们已经说过的,Tlp 设置的参数在主配置文件中得到了很好的描述,但是,在本教程的过程中,我们将进一步研究其中的一些参数,看看它们在哪些内核子系统上运行。我们走吧。

笔记本电脑模式

我们在主 Tlp 配置文件中遇到的第一个选项是 DISK_IDLE_SECS 和 MAX_LOST_WORK_SECS 。可以为它们分配一个值,具体取决于是使用电源适配器 (ON_AC) 还是使用电池 (ON_BAT) 运行。这些选项在底层利用了 Linux 内核的一项功能,即“笔记本电脑模式”。当笔记本电脑模式处于活动状态时,改变的基本上是 Linux 处理“脏数据”的方式:内存中需要写入磁盘的数据。

我们分配给 DISK_IDLE_SECS_ON_AC 或 DISK_IDLE_SECS_ON_BAT 的值将写入 /sys/proc/vm/laptop_mode 文件。大于 0 的值将启用笔记本电脑模式,并表示磁盘空闲后尝试执行数据同步之前的秒数。当插入电源适配器时,tlp 使用的默认值为 0;对于电池电源,则使用 2。

修改笔记本电脑模式行为的另一个选项是 MAX_LOST_WORK_SECS。 Tlp 设置文件中此选项的值以秒为单位表示;在底层,该值以厘秒为单位转换(乘以 100)并写入以下系统文件:

  • /proc/sys/vm/dirty_writeback_centisecs

  • /proc/sys/vm/dirty_expire_centisecs

  • /proc/sys/fs/xfs/age_buffer_centisecs

  • /proc/sys/fs/xfs/xfssyncd_centisecs

这些文件中的每一个都有不同的作用。内核定期使用“flusher线程”将“旧”数据写入磁盘:写入到/proc/sys/vm/dirty_writeback_centisecs文件中的值,表示之间的间隔这些冲洗应该运行。哪些数据必须被视为“旧”?这是由写入 /proc/sys/vm/dirty_expire_centisecs 文件的值确定的:内存中存储时间长于该值的数据将被视为“旧”。

/proc/sys/fs/xfs/age_buffer_centisecs 和 /proc/sys/fs/xfs/xfssyncd_centisecs 文件(可以通过其名称推断)会影响行为xfs 文件系统。前者的值表示扫描脏数据的时间间隔元数据缓冲区列表,而后者的值则建立将元数据写入磁盘的时间间隔。

设置定标调速器

Tlp 可用于根据机器的电源设置CPU 缩放调节器。缩放调节器根据某些因素设置和更改 CPU 的频率。频率如何改变取决于所使用的调速器。可以通过查询 /sys/devices/system/cpu//cpufreq/scaling_available_governors 文件来检索可用的 cpu 调控器,其中 必须替换为 cpu 编号,例如:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

上面的命令应该返回类似以下内容:

conservative ondemand userspace powersave performance schedutil

要使用 Tlp 设置缩放调控器,我们必须使用调控器的名称作为 CPU_SCALING_GOVERNOR_ON_AC 和 CPU_SCALING_GOVERNOR_ON_BAT 选项的值。在幕后,Tlp 会将所需的选择写入 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 文件。

Tlp 还允许用户通过 CPU_SCALING_MIN_FREQ_ON_AC、CPU_SCALING_MAX_FREQ_ON_AC、 轻松微调所选缩放调节器的最大和最小频率 CPU_SCALING_MIN_FREQ_ON_BAT 和 CPU_SCALING_MAX_FREQ_ON_BAT 选项。提供的值将写入 /sys/devices/system/cpu*/cpufreq/scaling_max_freq 和 /sys/devices/system/cpu*/cpufreq/scaling_min_freq 文件。

使用 Intel HDA 节能

使用电池运行时降低功耗的另一个有用策略是为 Intel HDA(高清晰度音频)设备启用省电功能。 Tlp 允许我们通过 SOUND_POWER_SAVE_ON_AC 和 SOUND_POWER_SAVE_ON_BAT 变量启用此策略。 0 值将禁用该功能,而较大的值将启用该功能,并且表示不活动的秒数,之后设备应进入省电模式。 Tlp 将传递的值写入 /sys/module/snd_hda_intel/parameters/power_save 和 /sys/module/snd_ac97_codec/parameters/power_save 文件。此功能在电池和交流电上默认启用。

处于省电模式时,音频控制器也会被禁用。这是通过SOUND_POWER_SAVE_CONTROLLER选项控制的,该选项可以设置为'Y'或'N',以分别启用和禁用该功能。控制该参数的系统文件是/sys/module/snd_hda_intel/parameters/power_save_controller。

设置电池阈值

在某些机器上,例如 Thinkpad,系统固件允许设置电池充电阈值。此功能对于延长电池寿命非常有用。现代锂电池在完全放电或持续保持在最大功率水平时可能会损失容量。通过设置充电阈值,我们可以根据需要调整充电行为。

例如,如果机器很少使用电池,我们可以将下限和上限阈值分别设置为40和50,以避免电池完全循环和过热。例如,如果我们经常使用电池来使用机器,则可以将下限阈值设置为 85,上限设置为 95(lenovo 页面上建议值)。仅当充电百分比低于最小阈值时,系统才会开始为电池充电,并达到上限阈值时停止充电。 Tlp 通过 START_CHARGE_THRESH_BAT0 和 STOP_CHARGE_THRESH_BAT0 变量控制此功能。如果我们的系统有多个电池,我们可以通过为 BAT1 添加相同的设置等来添加专用设置。传递的值将写入 /sys/class/power_supply/BAT0/ charge_control_start_threshold 和 /sys/class/power_supply/BAT0/charge_control_end_threshold 文件。

在特定事件上禁用无线电接口

通过使用Tlp,我们有机会在发生某些事件时启用或禁用特定的无线电接口;例如,当系统通过以太网连接到LAN时,我们可以断开wifi卡。 Tlp 通过以下选项控制这一点:

    DEVICES_TO_DISABLE_ON_LAN_CONNECT
    DEVICES_TO_DISABLE_ON_WIFI_CONNECT
    DEVICES_TO_DISABLE_ON_WWAN_CONNECT
    DEVICES_TO_ENABLE_ON_LAN_DISCONNECT
    DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT
    DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT

变量的名称非常不言自明。它们接受以逗号分隔、空格分隔的设备类型列表作为其值。例如,要在系统通过电缆连接到 LAN 时禁用所有 wifi 设备,我们可以编写:

DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi"

Tlp 还允许我们在其他事件上禁用设备,例如电源适配器或扩展坞连接或断开连接。

使用 tlp-stat 检查省电状态

要检查当前的省电状态,我们可以使用 tlp 附带的实用程序:tlp-status。该实用程序让我们可以查看各种信息,例如 tlp 设置的值、内核配置和电池数据。当不带任何选项调用时,tlp-stat 会打印所有可用信息:

$ sudo tlp-stat

以下是返回数据的摘录(输出被截断):

--- TLP 1.4.0 --------------------------------------------

+++ Configured Settings:
defaults.conf L0004: TLP_ENABLE="1"
defaults.conf L0005: TLP_WARN_LEVEL="3"
defaults.conf L0006: TLP_PERSISTENT_DEFAULT="0"
defaults.conf L0007: DISK_IDLE_SECS_ON_AC="0"
defaults.conf L0008: DISK_IDLE_SECS_ON_BAT="2"
defaults.conf L0009: MAX_LOST_WORK_SECS_ON_AC="15"
[...]
+++ System Info
System = ASUSTeK Computer Inc. 1.0 K52F
BIOS = K52F.218
OS Release = Fedora Linux 35 (Thirty Five)
Kernel = 5.15.18-200.fc35.x86_64 #1 SMP Sat Jan 29 13:54:17 UTC 2022 x86_64
[...]
+++ TLP Status
State = enabled
RDW state = not installed
Last run = 09:22:18 AM, 23834 sec(s) ago
Mode = AC
Power source = AC
[...]

可以使用适当的选项来过滤返回的信息。例如,要仅显示电池数据,我们将运行:

$ sudo tlp-stat --battery

同样,为了只显示USB设备的信息,我们可以使用--usb选项。有关可以使用的完整选项集,请查看该实用程序的联机帮助页。

结论

在本教程中,我们了解了如何在一些最常用的 Linux 发行版上安装和配置 Tlp,以及如何配置它以优化 Linux 上的电池寿命。我们看到了什么是主配置文件,其中包含的一些指令,以及如何将传递的设置写入系统文件中。 Tlp 可用于执行大量其他节能调整:了解它们的最佳方法是查看配置文件并了解它们是如何实现的。

©2015-2025 艾丽卡 support@alaica.com