3

背景

大约一年前,我使用 powertop 来优化我的笔记本电脑的功耗(按照这个这个指南),最终得到了这个 systemd 服务:

[Unit]
Description=Powertop tunings for X1 Carbon 5th

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c "echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs';"
ExecStart=/bin/sh -c "echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';"
ExecStart=/bin/sh -c "echo '0' > '/proc/sys/kernel/nmi_watchdog';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/i2c/devices/i2c-0/device/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/i2c/devices/i2c-2/device/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/usb/devices/1-9/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/i2c/devices/i2c-1/device/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control';"
ExecStart=/bin/sh -c "echo 'auto' > '/sys/bus/pci/devices/0000:00:08.0/power/control';"
# ... omitted some more PCI devices ...

[Install]
WantedBy=multi-user.target

问题分析

这很好用并且降低了我笔记本电脑的空闲功耗——直到几个月前我得到了一台 Yubikey 5C nano。

然而,现在我的笔记本电脑的空闲功耗从之前的 5-5.5W 上升到现在的 5.8-6.2W(没有插入 Yubikey Nano 与插入。在 5 分钟内没有打开程序的空闲系统上观察到的读数。)

不是 Yubikey 消耗了这个额外的瓦特,否则它可能会着火。相反,它可能是由于 USB 控制器没有按应有的方式进入睡眠状态。

当我运行时,我在Tuningpowertop选项卡中得到以下信息:

| Description | Script |
| ----------- | ------ |
| Autosuspend for USB device YubiKey OTP+FIDO+CCID [Yubico] | echo 'auto' > '/sys/bus/usb/devices/3-2/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:3c:00.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:07:04.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:07:01.0/power/control'; |

但是,如果我删除 Yubikey,再次插入它,然后再次运行powertop --html=reportB.html,我会在Tuning选项卡中看到以下内容:

| Description | Script |
| ----------- | ------ |
| Autosuspend for USB device YubiKey OTP+FIDO+CCID [Yubico] | echo 'auto' > '/sys/bus/usb/devices/3-2/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:3c:00.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:07:02.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:06:00.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:07:04.0/power/control'; |
| Runtime PM for PCI Device Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] | echo 'auto' > '/sys/bus/pci/devices/0000:07:01.0/power/control'; |

问题

这引出了一系列问题:

  1. 我是否理解每次插入 USB 设备时——即使它之前已插入——它都会被分配一个新的 PCI 标识符?
  2. 将这些调整命令添加到我的 systemd 服务是否明智?
    • 可能的副作用是什么?
    • 只有Autosuspend for USB device YubiKey?
  3. 考虑到我永远不会真正从其 USB 端口移除 Yubikey 的约束,添加所有命令是否明智?(*)
    • 如果在某些奇怪的情况下我还是要删除它,那会产生什么影响?

非常感谢!

(*) 这就是拥有 Nano 的全部意义,因为懒得总是使用大 Yubikey。

4

0 回答 0