进一步优化 deepin(深度)操作系统的续航和性能 —— TLP 电源管理来了!


内容来源:deepin社区


上一篇关于电源配置优化(关于 deepin V23 的发热、续航问题,我们做了电源配置优化)之后,我们一直在探索如何进一步优化 deepin(深度)操作系统的续航和性能表现,今天它来了:

TLP 是适用于 Linux 的功能丰富的命令行实用程序,无需深入研究技术细节即可节省笔记本电脑电池电量。比如 TLP 脚本是被动唤醒,可以以较小的开销完成电源管理相关内容。而且 TLP 文档支持非常完善,所以可以方便用户自行调整相关配置。

工作原理

  • TLP 所做的是调整影响功耗的内核设置,内核态的配置文件存储在 RAM 中,所以并不具备持久性。TLP 将配置存储在用户态中,在内核启动时对其进行配置;
  • TLP 处理的大多数内核设置都作为 sysfs 节点导出到用户空间,即 /sys/ 下的文件。tlp-stat的输出将显示路径;
  • TLP 提供两组独立的设置,称为配置文件,一组用于电池(BAT),另一组用于交流操作。这意味着 TLP 在每次电源更改时都必须应用适当的配置文件(可以据此实现 AC BT 切换电源调度状态)。

TLP触发事件(信号)

  • 充电器插入(交流供电):应用 AC 配置文件;

  • 充电器已拔下(电池供电):应用 BAT 配置文件;

  • 已插入 USB 设备:激活设备的 USB 自动挂起模式(可以在配置文件设置例外或拒绝连接);

  • 系统启动(boot):应用于当前电源 AC/BAT 相对应的设置配置文件。应用充电阈值并根据您的个人设置切换蓝牙、Wi-Fi 和 WWAN 设备(在默认配置中禁用);

  • 系统关机 (power off):保存或切换蓝牙、Wi-Fi 和 WWAN 设备状态,并根据你的个人设置禁用 USB 自动挂起(在默认配置中禁用);

  • 系统重启:相当于关机再启动;

  • 系统挂起到 ACPI 睡眠状态 S0ix(空闲待机)、S3(挂起到 RAM)或 S4(挂起到磁盘):保存蓝牙、Wi-Fi 和 WWAN 设备状态,并根据你的个人设置关闭可移动光盘驱动器的电源(在默认配置中禁用);

  • 系统从 ACPI 睡眠状态 S0ix(空闲待机)、S3(挂起到 RAM)或 S4(挂起到磁盘)恢复:应用于当前电源 AC/BAT 相对应的设置配置文件。恢复充电阈值以及蓝牙、Wi-Fi 和 WWAN 设备状态,具体取决于你的个人设置(在默认配置中禁用);

  • LAN、Wi-Fi、WWAN 连接/断开连接或笔记本电脑插接/未插接:根据你的个人设置启用或禁用内置蓝牙、Wi-Fi 和 WWAN 设备(在默认配置中禁用)。

除了上述事件之外,TLP 不会对设置进行动态或自适应更改。特别是,TLP 绝不会因 CPU 负载、电池电量或其他原因而调整设置(如果需要实现这一部分,则可以通过添加一个信号的方式来实现)。

安装

sudo apt install tlp

使用

1、启动

安装后 TLP 将在系统启动的时候自动启动,如果你不想重启系统,可以使用 sudo tlp start 来启动 TLP,也可以使用此命令来应用更改。

2、状态

tlp-stat -s TLP 是 bash 脚本,所以不存于 daemon 进程。

3、命令行

TLP:

sudo tlp bat    # 应用电池配置文件并进入手动模式  手动模式意味着对电源的更改将被忽略,直到下一次重新启动或发出 tlp start 以恢复自动模式。

sudo tlp bat    # 应用电池配置文件并进入手动模式  手动模式意味着对电源的更改将被忽略,直到下一次重新启动或发出 tlp start 以恢复自动模式。

sudo tlp ac     # 应用交流配置文件并进入手动模式。

sudo tlp usb    # 对所有的ubs设备应用自动挂起。

sudo tlp bayoff    # 关闭 MediaBay/Ultrabay 中的光驱电源。

sudo tlp setcharge [<START_CHARGE_THRESH> <STOP_CHARGE_THRESH>][BAT0|BAT1|BAT<x>|CMB0|CMB1]     #可以设定对指定电池开始充电百分比和结束充电的百分比,以达到养护电池的目的(如果不带参数会重置电池管理方案。命令只能暂时更改,如果需要持久化更改需要修改配置文件)。

sudo tlp fullcharge [BAT0|BAT1|BAT<x>|CMB0|CMB1   # 设定电池充满。

tlp diskid    # 显示已经配置驱动器的磁盘ID。

以下部分为 ThinkPad 专属:

sudo tlp chargeonce [BAT0|BAT1]    # 将电池充电至停止充电阈值一次,这个阈值是使用 setcharge 设置的。

sudo tlp discharge [BAT0|BAT1]      # 让电池在交流电源下完全放电。

sudo tlp recalibrate [BAT0|BAT1]      # 校准电池。

TLP-RDW

sudo tlp-rdw [ enable | disable      # 启用或关闭无线电管理功能

bluetooth [ on | off | toggle ]
nfc [ on | off | toggle ]
wifi [ on | off | toggle ]
wwan [ on | off | toggle ]

启用、禁用、切换或检查内置蓝牙、NFC、Wi-Fi 和 WWAN(3G/UMTS、4G/LTE 或 5G)无线电的状态,如果不带参数则为当前硬件状态(硬件需要支持 rfkill)。

TLP-STAT

sudo tlp-stat    # 查看TLP配置信息,系统信息和内核省电设置以及电池数据。

sudo tlp-stat [-b /--battery]      # 查看电池信息,部分电池加-v参数可以查看电压。

sudo tlp-stat [-c /--config]       # 查看配置信息。

sudo tlp-stat --cdiff          # 查看默认配置和用户配置之间的差异。

sudo tlp-stat [-d /--disk]         # 查看硬盘配置信息。

sudo tlp-stat [-e/ --pcie]         # 查看Pcie配置信息。 

配置

TLP 最重要的就是其配置文件,可以说,TLP是否节电的关键。TLP 使用两个根据电源自动应用的设置配置文件:

  • 以_AC结尾的参数在连接交流电源的时候生效
  • 以_BAT结尾的参数在使用电池的时候有效
  • 既不以  _AC  结尾也不以 _BAT 结尾的参数适用于这两个配置文件

1、配置文件

按指定顺序从以下文件中读取设置:

  • Intrinsic defaults     # 固有默认值(这个配置为TLP自带,不可被更改);

  • /etc/tlp.d/*.conf     # 插入式自定义片段,按词法(字母顺序)顺序读取,不过建议可以使用一般配置命名方法(00_xxxx.conf);

  • /etc/tlp.d/*.conf     # 用户配置。

如果多个参数相同,但在同一文件中也存在相同的参数,则最后一个匹配项优先,这也意味着,/etc/tlp.conf 中的参数将覆盖其他任何内容,因为它是最后读取的。

默认的 /etc/tlp.conf 中的所有参数都被禁用,删除前导 # 以激活你的更改。

/etc/tlp.d/ 目录中的配置文件由用户创建:

* 文件名必须以 .conf 结尾,否则文件将被忽略;

* 00-template.conf 作为示例提供。

2、参数默认值

配置中有两种参数,一种是具有默认值的,会在本文档中说明,并且在 /etc/tlp.conf 中有 Default 前缀。还有一种没有默认值的。

3、参数语法

配置文件由参数和注释行组成。

4、参数行

PARAMETER=value

如果 value 包含空格,则需要使用双引号。

key="111 1111 1111"

5、注释行

以#开头,在 1.6 版本后可以在参数行后接#作为注释。

6、禁用功能

没有默认值:使用注释或者删除即可。

有默认值:赋空值即可 eg:key=""

7、使用+=追加配置

和 bash 的环境变量一样,支持使用+=作为追加配置。

使用 root 权限编辑配置文件,在保存更改后可以使用重启,拔插 AC 电源或者使用sudo tlp start 命令激活配置。

配置详解

1、基础操作

2、音频

3、电池保养

这些参数用于设置笔记本电脑主/内部电池(BAT0)和辅助电池(BAT1)的充电阈值。启动充电阈值表示在连接充电器时,电池充电水平低于该值时将开始充电。停止充电阈值表示在充电器连接时,电池充电水平超过该值时将停止充电。这些阈值始终具有较低的可用电池容量,因此默认情况下禁用这些设置,并且必须通过删除前导 # 来显式启用这些设置。

4、光驱

5、硬盘

注释:DISK_IOSCHED 如果使用是NVME设备时,最好使用无 IO 调度程序来减少 CPU 开销(none和noop)。

6、文件系统

7、图形显卡

这些参数允许用户调整 Intel GPU 和 AMD GPU 在交流电和电池模式下的性能和电源管理行为。在配置这些参数时,建议参考硬件规格和运行 tlp-stat -g 查看可用频率。

8、kernel

不建议关闭 watchdog,否则可能导致内核崩溃后无法自动重启和内核调试。

9、网络

这些参数允许用户配置 Wi-Fi 的电源保存模式和控制 Wake-on-LAN(LAN唤醒)功能。

10、平台

11、处理器

这些参数允许用户配置 CPU 的性能和功耗特性,包括缩放驱动程序操作模式、调节器、频率范围、能耗/性能策略、P 状态范围、提升功能以及 HWP 动态提升功能。部分电脑的 BIOS 会干预 PState,所以需要检查 CPU 是否支持。

12、无线设备

这些参数允许用户配置在系统启动、关闭或更改电源状态时如何处理内置的蓝牙、Wi-Fi 和 WWAN 设备。可通过设置禁用或启用这些设备,以及在何种条件下执行这些操作。

13、无线配置向导(自动化配置)

这些参数允许用户配置在特定事件触发时如何处理内置的蓝牙、Wi-Fi 和 WWAN 设备。用户可以根据 LAN、Wi-Fi 或 WWAN 的连接状态、对接或取消对接等事件来启用或禁用这些设备。

14、PCIE电源配置  

这些参数允许用户配置与 PCIe 设备相关的运行时电源管理和 ASPM 等功能。用户可以根据电源来源、设备地址、驱动程序等来调整这些设置,以实现更好的功耗管理。(建议不要对 NVIDIA 驱动进行调整,可能会引发意外)。

15、USB  

16、Trace Mode

TLP_DEBUG="arg bat disk lock nm path pm ps rf run sysfs udev usb"

结语

我们对于系统的优化不仅于此,现阶段 TLP 的配置策略仅对于部分有能力的用户公开,后续经过充分的测试和调优之后,会提供几份默认的配置给普通用户使用。并将来将这些配置文件 GUI 化,集成于深度定制项目中,为用户提供更为方便直观的操作体验。从这一阶段对于电源优化的探索可以看出,deepin(深度)操作系统的电源管理方案优化不仅是为了解决用户反馈的问题,更是一种对用户需求的回应和尊重。未来,deepin(深度)操作系统将继续秉持用户至上的原则,不断提升系统的性能和用户体验,为广大用户提供更加优秀的开源操作系统产品。

内容来源:deepin 社区


相關推薦

2023-12-01

之前一些用户反馈,在使用 deepin (深度)操作系统过程中遇到了 CPU 功耗过高导致的设备发热、续航较差情况,而在这些负载场景下,CPU 的占用往往不高。为了解决这个痛点,deepin 团队特别成立专项计划,对于 deepin 的电源进

2023-09-20

deepin V23 Beta2 昨天(2023年9月18日)发布了。 发布公告写道,deepin V23 Beta2 对上一版本存在的问题进行了修复,修复问题单450+,并进一步优化功能体验,包括新内核电源续航提升30%、采用白盒方案优化秘钥环弹窗问题、优化版深

2022-12-09

深度操作系统 20.8 已发布,此版本新增社区自研应用“深度之家”,升级 Qt 至 5.15.6 版本,更新了 DTK 开发库,修复底层漏洞进一步提升系统兼容性和安全性;功能层面上积极响应社区用户反馈的需求,开发并集成了大量实用功

2023-04-18

深度操作系统(deepin)是一款致力于为全球用户提供美观易用、安全稳定服务的Linux发行版,也是全球排名领先的来自中国团队研发的Linux发行版。点击查看deepin全球排名:https://distrowatch.com/table.php?distribution=deepin deepin20.9版本

2022-10-19

深度操作系统 deepin 20.7.1 已发布。公告称此版本进一步提升用户体验,增加 NVIDIA 驱动预装功能、 修复系统漏洞 、部分功能更新适用于 700+ 机型,全面提升了系统使用的稳定性、流畅性及兼容性。 增加NVIDIA驱动预装功能 增

2022-11-11

深度操作系统 V23 发布了首个 Alpha 版本,这是 V23 的阶段性版本。公告写道,设计上,deepin V23 基于最新的“行云设计”理念,从UI 界面、交互体验上,为用户呈现崭新视界;功能上,积极响应社区用户反馈的需求,开发并集成

2022-05-19

度(deepin)社区为基础,建设立足中国、面向全球的桌面操作系统根社区,打造中国桌面操作系统的根系统。资料显示,深度(deepin)社区隶属于统信软件,自 2008 年建立以来,已经持续发展了15年,是国内规模最大、历史最悠

2022-09-02

深度操作系统20.7积极响应社区用户反馈的需求,进一步提升用户体验,修复底层漏洞,新增HWE 5.18内核兼容更多硬件设备,升级Stable内核至5.15.45,提升系统稳定性和安全性,欢迎大家体验! HWE 5.18内核 新增HWE 5.18内核兼

2023-09-05

deepin 社区正式官宣 deepin-IDE(深度集成开发环境)——由深度公司自主研发,具有多语言、跨平台兼容特性的轻量级集成开发环境。 功能介绍 deepin-IDE 除了包含 IDE 常用功能,如智能编辑器、高度可扩展的命令系统、工程

2023-02-09

深度操作系统 V23 发布了第二个 Alpha 版本。公告写道,此版本在设计层面上,对简约、友好、富有生命力的行云设计进行持续升级,支持系统主题高级定制化设置;在功能层面上,充分尊重社区用户的需求及意见,优化了 home 分

2023-07-16

试Linux相关的项目,同时享受Windows对硬件的支持和性能的优化,运行Linux的应用程序并体验各种Linux发行版。 团队称他们选择了基于 WSL2 的适配方案,因为 WSL2 提供了 WSLg 扩展,可以提高性能,增强系统调用兼容性,也能让

2023-09-13

Qt 开发的一整套简单且实用的通用开发框架,处于 deepin 操作系统中的核心位置,此次成功适配意味着 deepin 操作系统后续将充分利用 Qt6 版本的新特性及新功能,在最大程度上为用户提供更先进、更高效的体验。 为什么要适配

2022-08-17

保护了使用者的隐私。 原子更新 原子更新是一种新的操作系统更新思想,将系统更新的操作视作原子性操作:若更新包安装成功,则系统完成升级;若系统更新失败,则会回到当前系统环境,保持当前系统环境不被更改。这

2023-12-05

贡献PR316个,个人提交Issues16个 社区产品 deepin(深度)操作系统 11月deepin V23  系统前进行了第4次内测推送: 11月3日内测推送,功能新增4个,新增仓库3个,问题修复6个; 11月10日内测推送,新增仓库6个,问题修复8个