您尚未登录。

#1 2023-09-19 21:50:54

JmZeroQAQ
会员
注册时间: 2023-09-04
帖子: 35

【已解决】有其他办法可以关闭独显吗

今天下午的时候意外发现独显明明没有在使用但是居然还有8w功耗,然后我就去找办法关闭独显。

查找一番后发现大家好像都用 bbswitch 来控制显卡的开关,由于我的内核是 linux-zen 所以就去安装 bbswitch-dkms 了,安装完后在 擎天柱管理 optimus-manager 中设置 switching method  为 bbswitch 后重新启动电脑发现 optimus-manager 出问题了,看了一下日志发现是bbswitch 不起作用,安装完他后压根没有产生配置文件 /proc/acpi/bbswitch

问一下还有其他办法可以可以关闭独显吗,我看了一下 Bumblebee 也需要 bbswitch

btw: 大家在用的是什么内核啊,我用的是 linux-zen 每次安装需要 dkms 的包和更新完内核的时候都担心会出问题。打算再装个 linux 内核来试试。



较新的显卡不需要 bbswitch 也可以控制显卡开关(20系,30系即图灵架构和安培架构)。
也就是说不需要 Optimus manager了。
详情可以看一下wiki 关于 PRIME offload 的文章 Prime

需要注意的是30系这个功能是默认开启的(wiki 是这么说的,但是我的3050就没有QAQ),可以通过以下命令查看是否开启:

$ cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status
suspended

$ cat /sys/class/drm/card*/device/power_state 
D3cold
D0

如果为 suspended D3 就说明已经开启了。

还有就是 使用 nvtop 和 nvidia-smi 后都会引起上面的结果改变,我猜是检测显卡功耗或者状态需要关闭 PCIE电源管理的原因。

如果一切正常使用以下命令可以单独调用独立显卡来运行程序:

DRI_PRIME=1 command

# 如
$ DRI_PRIME=1 glxgears

经过一下午的测试,发现我笔记本的续航已经正常了。

最近编辑记录 JmZeroQAQ (2023-09-21 17:20:37)

离线

#2 2023-09-20 10:41:56

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,495
个人网站

Re: 【已解决】有其他办法可以关闭独显吗

modprobe bbswitch 之后再看看呢?

离线

#3 2023-09-20 11:45:42

JmZeroQAQ
会员
注册时间: 2023-09-04
帖子: 35

Re: 【已解决】有其他办法可以关闭独显吗

依云 说:

modprobe bbswitch 之后再看看呢?

试过了,使用 modeprobe bbswitch 会说没有这设备(No such device)。

但是我用 modinfo bbswitch 是可以找到这个模块的。

使用 sudo dmseg | grep -C 10 bbswitch 有以下输出:

[   14.349080] Bluetooth: RFCOMM socket layer initialized
[   14.349084] Bluetooth: RFCOMM ver 1.11
[   14.839403] wlp3s0: authenticate with 90:98:38:1c:4a:84
[   14.973005] wlp3s0: send auth to 90:98:38:1c:4a:84 (try 1/3)
[   14.975799] wlp3s0: authenticated
[   14.976424] wlp3s0: associate with 90:98:38:1c:4a:84 (try 1/3)
[   14.993534] wlp3s0: RX AssocResp from 90:98:38:1c:4a:84 (capab=0x1c31 status=0 aid=1)
[   15.020435] wlp3s0: associated
[   15.716338] tun: Universal TUN/TAP device driver, 1.6
[   18.303732] acpi AMDI0010:03: Already enumerated
[  171.167687] bbswitch: version 0.8
[  171.167701] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.GPP0.PEGP
[  171.167704] bbswitch: Found discrete VGA device 0000:04:00.0: \_SB_.PCI0.GP17.VGA_
[  171.167721] bbswitch: failed to evaluate \_SB_.PCI0.GP17.VGA_._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[  171.167728] bbswitch: failed to evaluate \_SB_.PCI0.GP17.VGA_._DSM {0xA0,0xA0,0x95,0x9D,0x60,0x00,0x48,0x4D,0xB3,0x4D,0x7E,0x5F,0xEA,0x12,0x9F,0xD4} 0x102 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[  171.167730] bbswitch: No suitable _DSM call found.

我去上游仓库看了一下 issuses 发现这个 No suitable _DSM call found 问题已经有人提了,但是好像还没有给出解决办法好像(也许是我看的不够详细,我等会再看看)。

这个仓库真的好老了啊,上次 commit 居然在10年前。

离线

#4 2023-09-20 16:44:13

JmZeroQAQ
会员
注册时间: 2023-09-04
帖子: 35

Re: 【已解决】有其他办法可以关闭独显吗

会不会是tlp 和 bbswitch 冲突了呢?我看wiki 上面好像提了一下。

Bumblebee及NVIDIA驱动
如果您与NVIDIA驱动一同运行Bumblebee,您需要关闭TLP对GPU的电源管理以使Bumblebee控制GPU的电源。

离线

#5 2023-09-21 11:58:44

JmZeroQAQ
会员
注册时间: 2023-09-04
帖子: 35

Re: 【已解决】有其他办法可以关闭独显吗

又看了很多文章, 发现了 prime offload 的方法,我看了一下wiki上说安培架构的显卡是自动开启电源管理的(PCI-Express Runtime D3),我的是3050按照道理来说应该是自动开启的,但是没有。然后我就按照wiki上面的办法,添加了udev规则(/etc/udev/rules.d/80-nvidia-pm.rules) 然后又添加了内核模块选项(/etc/modprobe.d/nvidia-pm.conf),也把 nvidia-persistenced.service 启动了,然后重启了电脑。

不过配置好像没有生效,而且我从两个地方看还不一样。

$ lspci -k | grep NVIDIA
01:00.0 3D controller: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] (rev a1)
$ cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status
suspended

我打开 nvtop 看了一下,此时显卡还是有8w功耗。

我想问一下 /etc/udev/rules.d/80-nvidia-pm.rules 和 /etc/modprobe.d/nvidia-pm.conf 这两个文件是默认会生成的吗,我看的时候都是空的,这两个文件都是我手动加上的,或者有没有什么调试的办法可以传授以下,这几天被steam 和 这个问题搞麻了QAQ

离线

#6 2023-09-21 13:00:12

JmZeroQAQ
会员
注册时间: 2023-09-04
帖子: 35

Re: 【已解决】有其他办法可以关闭独显吗

使用 nvtop 好像会影响电源管理,控制变量了一下,发现只要打开了nvtop, cat /sys/class/drm/card*/device/power_state 的结果就会从 D3hot -> D0 。
以及 cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status 的结果也会成 suspend -> active。

lspci -k | grep NVIDIA 的结果倒是一直没有变 都是(rev a1) 看来是变不成 ff 了。

感觉现在 PCIE电源管理 是已经生效了。

今天下午狠狠的看一下午番看看续航怎么样(((

离线

#7 2024-03-20 15:32:49

Tee
会员
注册时间: 2016-09-10
帖子: 138
个人网站

Re: 【已解决】有其他办法可以关闭独显吗

JmZeroQAQ 说:

发现只要打开了nvtop, cat /sys/class/drm/card*/device/power_state 的结果就会从 D3hot -> D0 。
以及 cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status 的结果也会成 suspend -> active。

谢谢~我也遇到了类似情况,只要打开 nvtop / nvidia-smi 之类的看,我的显卡就会直接吃了20瓦,也从 suspend 变成了 active。正疑惑着


啦哆咪 - 用Linux制作音乐
https://lado.me

离线

页脚