使用Yubikey Nano时的笔记本电脑空闲功耗调整

时间:2019-12-13 09:41:16

标签: usb system power-management pci yubico

背景

大约一年前,我使用powertop优化了笔记本电脑的功耗(遵循thisthis指南),最后得到了以下系统服务:

[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消耗了额外的功率,否则可能是on fire。相反,这可能是由于USB控制器未按应有的方式休眠。

运行powertop时,在 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: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. 考虑到我永远不会从Yubikey的USB端口真正删除的约束,添加所有命令是否明智? (*)
    • 如果我在某种奇怪的情况下仍要删除它,那将意味着什么?

非常感谢!

(*)这就是拥有Nano的全部要点,要懒惰以总是使用大型Yubikey。

0 个答案:

没有答案