针对电池续航时间和性能优化Linux笔记本电脑的广泛指南

2020-06-28 03:52:22

优化很有趣。说到笔记本电脑,电池续航时间永远不会太长。虽然现代Linux发行版在这方面做了很大的改进,但是使用一些众所周知的和一些不太知名的工具,电池寿命和性能可以得到极大的提高。本指南将介绍一些调整系统以获得最佳结果的工具。

尽管不太可能造成任何危害,但请注意,某些工具需要更改配置文件,并且比其他工具涉及更多。我绝对不保证所提供的步骤对每个人都有效,并且不会损坏系统或其组件。

本指南推荐给对基于Linux的系统有一定了解并希望最大限度提高其实用性的任何人。

任何计算机功耗的主要来源之一是CPU。CPU处理指令的速度取决于两个主要因素。IPC或每个周期的指令数确定CPU执行命令的效率。所有类似的情况都是,具有较高IPC的CPU的性能将优于具有较低IPC的CPU。例如,如果一个CPU每个周期执行2条指令,而另一个CPU执行4条指令,那么第二个CPU完成相同的工作所需的周期就会减少。

IPC通常由CPU体系结构和工作负载决定。除了购买新一代CPU之外,我们几乎无能为力。(当然,这里有很多因素在起作用,架构、指令集等。)。

第二个重要因素是频率的时钟速度。这通常是以GHz(千兆赫兹)为单位测量的,是对CPU每秒可以执行多少个周期的测量。在给定相同的IPC的情况下,频率较高的CPU的性能将优于频率较低的CPU。如果两个指令都每周期执行4个指令,则以每秒4个周期工作的指令将比以每秒2个周期工作的指令快一倍。

将IPC和时钟速度相乘是对CPU工作速度的粗略估计:

由于我们不能(容易地)改进IPC以获得更好的性能,所以控制频率是提高给定系统性能的主要方法。

然而,提高时钟速度是有代价的,频率越高,功耗就越高。

CPU功耗的公式大致为P=CV²f(源)。其中C是恒定(电容),V是提供给CPU的电压,如果电流频率。

随着频率的增加,功耗也会增加。然而,功耗并不像从等式中看起来的那样随着频率线性增长。CPU只有在提供足够电压的情况下才能维持高时钟速度。因此,CPU的电源管理系统也会随着时钟的增加而增加电压。结果是,在某个点上,频率的任何增加都会变成功耗(P~f³)的立方增加。

这是我们在优化电池寿命和性能时需要牢记的。我们希望在电力充足时(连接到电源插座时)最大化频率,并在耗尽电池时将功耗降至最低。

Linux中的CPU电源管理部分由操作系统本身处理。虽然CPU确实有内置的电源管理工具,但操作系统被赋予了对CPU的一些控制,以尝试并最好地满足其需要。当有繁重的工作负载要处理时加快时钟,当系统空闲且几乎无事可做时将其放慢到最小。

要检查当前正在使用哪个工具,请安装以下工具(所有示例都使用Ubuntu)。

接下来,为了评估CPU可以达到的最大频率,我们可以使用s-tui(无耻插头)这样的工具。S-TUI是一个专注于显示CPU频率、温度、利用率和功耗的工具。我们需要为这些优化测量的所有东西。

运行压力测试将在CPU上产生繁重的工作负载,并将其推向极限。记下CPU可以达到的最高频率。S-Tui有一个内置的压力测试,可以完成这项工作,但任何其他工具都可以工作。

在本例中使用intel_pstate运行时,CPU只能达到2.7 GHz,这是CPU的基本时钟。

大多数现代CPU都有一个基本块和一个升压块。除非受到某些其他因素的限制,否则基本块是CPU可以运行的保证频率。升压时钟是CPU可以达到的较高时钟,通常持续时间较短。一般而言,升压模块仅适用于短脉冲串,因此CPU可以快速完成短任务(例如打开浏览器选项卡),然后以低得多的时钟快速返回空闲状态。然而,如果电力输送和冷却得到控制,CPU可能会无限期地在升压模块上运行。在本例中,我使用的CPU是Intel-Core-i7-7500U。其基本块为2.7 GHz,升压时钟为3.5 GHz。看看s-tui,我们可以看到CPU从未突破2.7 GHz,基本上把性能放在桌面上。

要缓解此问题,一种解决方案是将驱动程序更改为acpi-cpufreq。要实现这一点,首先要安装ACPI:

在切换到ACPI之后,运行“sudo cpupower Frequency-info”应该会产生如下结果:

分析以相同硬件频率运行的CPU 0:驱动程序:acpi-cpufreq CPU:0个需要由软件协调其频率的CPU:0最大转换等待时间:10.0 us硬件限制:400 MHz-2.70 GHz可用频率步长:2.70 GHz、2.70 GHz、2.60 GHz、2.50 GHz、2.40 GHz、2.20 GHz、2.00 GHz、1.80 GHz、1.60 GHz、1.50 GHz、1.30 GHz、1.10 GHz、800 MHz、700 MHz、600 MHz,400 MHz可用的cpufreq调控器:保守的随需应变用户空间节能性能时间表当前政策:频率应在400 MHz和1.60 GHz之间。调速器“随需应变”可决定在此范围内使用哪种速度。当前CPU频率:400 MHz(通过调用硬件断言)提升状态支持:支持:是活动:是。

正如预期的那样,CPU频率现在是3.5 GHz,并且可以保持很长一段时间。

这对运行基准测试时的性能有很大影响。运行Geekbench 5会在更改前后显示以下结果:

这大约提高了1.3倍。正如我们预期的那样,将频率从2.7千兆赫扩展到3.5千兆赫1.3倍。

进行这些简单的修改可以使相同硬件的性能提高30%。虽然系统与墙壁相连,但没有理由不充分利用其潜力。接下来,我们来处理一下电池续航时间的问题。

当系统连接到电源时,我们希望获得最高性能。在忙碌的时候,这并不一定是真的。通常,我们希望笔记本电脑使用电池的时间越长越好。在Linux上实现这一点的最佳工具之一是TLP。TLP已经存在很长时间了,它是提高Linux笔记本电脑电池寿命的首选工具。

这是一项开箱即用的伟大工作,因此如果要实现即时改进。只需从发行库安装即可。

TLP控制系统的各个方面。它可以关闭硬盘、关闭蓝牙、控制CPU频率设置等。大多数默认配置都很棒,不需要修改。尽管如此,TLP的一些配置还是值得一提的是。(配置文件通常位于/etc/default/tlp.conf或/etc/tlp.conf)。

TLP允许手动控制启用或禁用电池上的Turbo Boost,而不是交流电源上的Turbo Boost。该工具会自动检测笔记本电脑何时接通电源,并在它们之间切换。

回顾功耗公式(P~f³)和性能公式(Perf=IPC*f),我们让CPU运行得越快,我们为每个额外时钟支付的功耗就越高。

回报在递减。额外的性能是以更高的成本为代价的,我们越推动它。例如,2.7 GHz到3.5 GHz之间的差异可能会使我们的性能提高30%,但耗电量增加50%。

这里有一个权衡。一方面,降低时钟速度将导致更低的功耗。另一方面,CPU完成任务的速度越快,它返回到空闲状态的速度就越快。这是需要试验的内容,根据具体工作负载的不同可能会有很大不同。尽管如此,基本时钟通常足够高,足以管理大多数任务,失去提升将对电池寿命产生很大影响。

遵循相同的逻辑,通过修改配置文件中的下列值,TLP可用于进一步限制电池电源时钟。

这可用于将MAX_FREQ值设置为甚至低于基准时钟。同样,这需要尝试特定的要求。毕竟,如果系统速度变慢到没有响应的程度,那么所有这些工作都没有什么价值。

最大限度地节省电池的更高级技巧是CPU欠电压。欠电压是为提供给CPU的电压设置较低值的过程。再回过头来看这个方程,如果我们降低电压,我们的功耗就会平方提高。只要我们能保持相同的时钟速度,性能就不会有任何损失。欠电压几乎是免费的,不需要成本就可以延长电池寿命。

电压不足不会立即造成危险。与超频或过电压不同的是,没有“油炸”CPU的风险。欠电压的最大风险是系统变得不稳定。将值降低太多可能会导致某些功能失败,从而导致系统冻结或死机。因此,即使在欠电压的情况下,正确的方法也是逐渐降低这些值,以确保系统保持稳定。每个CPU的欠压能力可能也会因型号不同而不同,甚至在两个相同的CPU之间也会有所不同,因此里程数可能会有所不同。

对于从第4代到第10代的英特尔处理器,电压不足通常是可能的,并且可以节省热量和电池寿命。由于该过程中存在一些安全漏洞,英特尔今后可能会禁用此功能。

在Linux上有几种可用的欠压工具,其中之一就是神奇的节流工具。

该工具最初是为了解决许多联想ThinkPad的一个问题而开发的,这些问题会在CPU达到电力和热量极限之前就开始节流。安装此工具可解决此问题,但也允许容易欠压。

节流是非常可配置的,最酷的功能是它允许为交流电源和电池配置不同的配置文件。使用这一功能,我们可以设置合理的欠压值时,电池,再加上有限的CPU频率,应该会显著改善功耗。同样,当使用交流电源时,将这些值保留为默认值将确保CPU获得英特尔规格所需的全部电压。

安装和设置指南可在项目Github上找到。虽然它是为ThinkPad开发的,但经过测试和确认,它可以在各种基于英特尔的笔记本电脑上运行。阅读项目自述文件,了解特定于所需分发的安装说明。

安装后,编辑配置文件(/etc/lenovo_fix.conf)并设置交流和电池的欠压配置文件值。我在CPU中使用了下列值:

所有电压值均以mV表示,“必须”为负(即欠电压)![UNDERVOLT.BATTERY]#CPU核心电压偏移(MV)核心:-120#集成GPU电压偏移(MV)GPU:-95#CPU缓存电压偏移(MV)缓存:-120#系统代理电压偏移(MV)UNCORE:-85#模拟I/O电压偏移(MV)ANALOGIO:0。

该工具还提供了一个监视选项,用于查看当前应用的值、确定CPU节流的原因(如果有)以及读取当前CPU电压。

重要的是要注意,节流不能很好地与有时预装在系统上的其他工具(Thermald)配合使用。

Thermald有不同的功能,它的目的是控制CPU的电源管理,并在CPU过热时降低时钟。Thermald的问题是,它通常在温度方面过于保守,在达到危险阈值之前就降低了CPU的性能。因此,建议禁用此进程以获得系统的最高性能。

热节流是CPU的电源管理系统降低CPU速度以防止其真正煮死的过程。

现代CPU可以产生和处理相当多的热量,通常,对于CPU来说,温度高达100°C是可以的(但不建议长时间使用)。如果笔记本电脑的冷却系统不能处理热量,它会自动降低电压和频率,直到CPU恢复到正常工作温度。

要确定CPU是否热节流,我们可以使用s-tui运行压力测试,并监视CPU在几分钟的高负载后达到的温度。如果温度开始上升到90°C以上,频率可能会下降,从而降低温度和功耗。

因此,虽然更大的功率意味着更高的性能,但它也需要更多的冷却。因此,欠压的额外好处是降低了CPU温度!如果CPU在不降低时钟的情况下消耗更少的电能,则会产生更少的热量,并且需要散失的热量也会更少。

节流也可以在这方面有所帮助。为交流配置文件指定带有节流的欠压配置文件有助于降低热量,而不会影响性能。同样,根据系统的不同,可实现的值可能会有所不同。

当使用电池时,风扇将不得不大大减少旋转来散热,从而在风扇操作上节省更多的电力。

底线是,只要使用合理的值,欠电压只会产生积极的影响。

英特尔POWERTOP有一个量规来测量整个系统的功耗。s-tui使用CPU本身提供的特殊寄存器来测量CPU的功耗,而powertop则通过评估在给定时间耗尽了多少电池来测量功耗。这可能不是很准确,但涵盖了整个系统的电源使用情况,包括屏幕亮度、WiFi卡等。

这是写这篇文章时在我的笔记本电脑上运行的powertop的屏幕截图。屏幕亮度约为30%,打开约10个铬标签。WiFi已打开。

结合使用s-tui和powertop可以更深入地了解应用修改后系统的运行效率。

使用一些较小的配置和几个很好的工具可以显著提高任何Linux笔记本电脑的电池寿命。Linux平台和为其开发的工具的开放性,为根据特定需求优化系统提供了极大的灵活性。我希望这篇概述能够很好地说明可用的工具以及它们的工作原理。黑客行动愉快。

有各种附加技术可以延长电池寿命和提高性能。在旧笔记本电脑中,更换热贴可能是改善散热和提高温度的一种简单方法。笔记本电脑上的风扇将不必努力工作来降低温度,从而减少风扇旋转时的热量和电池电量。

其他耗电量的设备当然还有屏幕、WiFi和蓝牙。降低屏幕亮度将对电池寿命产生显著影响。同样,不使用蓝牙或WiFi,关闭它们可以节省一些瓦特。