![调查](https://linux22.com/image/1064273/%E8%B0%83%E6%9F%A5.png)
在之前的笔记本电脑上,16.04 下的性能/省电模式运行得非常好。我有一台华硕 RoG 17.3 英寸,配备两个硬盘和 GTX 860m,运行办公应用程序时功耗为 9-11w。这意味着游戏笔记本电脑的电池续航时间约为 5.5-7 小时!(我当然使用了 TLP)。它比我同学的 MacBook 和平板电脑更耐用。在性能模式下,功耗为 25-40w。
目前,我发现从 18.04 版开始,在一台新笔记本电脑下,Xserver 下发生了一些奇怪的事情。例如,如 Powertop 所示,当 Xserver 设置为省电模式时,空闲时的用电量约为 29-31w——对于我的 15.4 英寸笔记本电脑来说非常高。当设置为性能模式时,用电量通常为 19-22w,这有点微不足道,但较低!
我预感到 gpu 在省电模式下没有被禁用,并且它在不必要的压力水平下运行,因为我的风扇被启动了,但 CPU 仍然以低 800-805 MHz 运行,如 grep 所示,并由 TLP 管理。
虽然我目前的配置是 GTX1070,但上述问题对我来说毫无意义,因为省电会导致大量耗电。我也不愿意尝试 Bumblebee,因为许多人表示它目前在 18.04 中表现不佳。有没有一种简单但可靠的方法来强制 Intel HD 并禁用 GPU?我用它来工作和玩游戏,所以我不想因为频繁切换驱动程序而冒着破坏安装的风险。
答案1
我在 18.04 上使用 GTX 1050 时也遇到了同样的问题。我以前用的是 Ubuntu 17.10,选择英特尔 GPU 时,电池续航时间为 7 小时。当我升级到 18.04 时,无论我在 nvidia 控制面板或 prime-select 中选择了 Nvidia 还是 Intel,电池续航时间为 2.5 小时。
我最终在某个论坛上找到了这个命令:sudo sh -c 'echo auto > /sys/bus/pci/devices/0000\:01\:00.0/power/control'
当选择英特尔时输入这个命令,我的电池寿命神奇地从 2.5 小时增加到 6.5 小时。
希望这可以帮助!
注意:我正在使用 nvidia-390 驱动程序。
答案2
我最近发现我的笔记本电脑上也出现了同样的问题,它搭载的是 NVIDIA 1050 Ti,nvidia 驱动程序为 435.21 或 440.59。PowerTop 观察到,当通过 NVIDIA X Server 设置或“prime-select intel”命令选择 Intel 时,NVIDIA PCI 总线设备会耗电。即使只打开包含静态内容的 Web 浏览器,笔记本电脑也会非常热。
Sylvain 的上述回答有助于关闭 NVIDIA 芯片,但不幸的是,系统重启后该功能不再有效 - 每次笔记本电脑重新启动时都必须手动关闭。我正在寻找一种不需要在每次系统启动后使用手动命令的解决方案,并希望为那些愿意这样做的人提供它。
调查
该问题被称为错误 #1765363并且在撰写此答案时尚未在驱动程序包中修复。
目前提到的解决方案(可以在上面的错误链接下的讨论中找到)基于额外的工具,如 Bumblebee (bbswitch)、TLP,甚至一些基于服务的脚本作业。我考虑只将它们用作最后的选择。问题是:如果解决方案只是关于电源控制模式的默认状态,那么我如何才能将其更改为具有适当的值?
为了寻找这个,我找到了NVIDIA 驱动程序电源管理页面其中系统设置章节包含上述命令,用于启用 PCI 的运行时电源管理:(echo auto > /sys/bus/pci/devices/0000\:01\:00.0/power/control
以 root 身份执行)。如上所述,这仅适用于当前电源循环。然后我检查并尝试了自动设置该页面上的部分(创建 udev 规则以启用电源管理),但它不适用于英特尔图形模式。经过调查,原因变得非常明显:一旦 NVIDIA 驱动程序加载并绑定到设备,规则就会设置为启用电源管理。在“英特尔”图形情况下,NVIDIA 驱动程序根本没有加载(因此没有绑定),因此不会触发规则。但方法本身是一个关键:它是关于添加一个适当的规则。
解决方案
它通过创建单独的udev规则文件(灵感来自自动设置来自 NVIDIA 驱动程序电源管理手册)。80-nvidia-poweroff.rules
在/lib/udev/rules.d/
目录中创建一个名为的文件,内容如下:
# Enable runtime PM for NVIDIA VGA/3D controller devices by default (if the driver is not / will not be bound)
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", DRIVER=="", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", DRIVER=="", TEST=="power/control", ATTR{power/control}="auto"
保存并重新启动系统。就是这样!无需额外的工具/脚本。PowerTop 报告 NVIDIA 芯片处于非活动状态,其“可调”选项卡在系统启动后将 NVIDIA 的“运行时 PM”状态列为“良好”。在我的情况下,英特尔模式下显示的功耗约为 11-12W,而未启用 NVIDIA 的运行时 PM 时则约为 22-23W。现在笔记本电脑几乎不热,而之前则非常热 - 这再次证明运行时 PM 确实会关闭芯片。
我也在相关网站上发布了这个解决方案错误 #1765363页面为评论#70。