You are not logged in.
I have an optimus laptop with an i7-7820HK and gtx 1070 with the dGPU managed through bumblebee.
I followed the recommendations on the wiki on power management
to try and optimize battery usage further.
Yet powertop is reporting 90% pc3 residency and 0% for pc6 to pc10. On windows pcm reports about 50% pc8 residency.
According to a intel data-sheet this might affect the longevity of the processor so it is not necessarily a question of just squeezing out a few seconds of battery time.
Here are all the modifications I took:
I blacklisted uvcvide, btusb and bluetooth to disable bluetooth and the webcam.
I enabled USB autosuspend per udev rules (with a whitelist).
And enabled Runtime PM for pci in
/etc/udev/rules.d/pci_pm.rules
ACTION=="add", SUBSYSTEM=="pci", ATTR{power/control}="auto"
/etc/modprobe.d/audio_powersafe.conf
options snd_hda_intel power_save=1
/etc/modprobe.d/i915.conf
options i915 enable_dpcd_backlight=1 enable_psr=1 enable_guc=3
My SATA ssds where already on med_power_with_dipm so I didn't touch that.
So exept that and nmi_watchdog and VM writeback timeout everything in powertop is good.
Setting the rest to good didn't seem to have any effect anyway.
Lastly I set the cpu scaling governor with the file:
/etc/tmpfiles.d/energy_performance_preference.conf
w /sys/devices/system/cpu/cpufreq/policy?/energy_performance_preference - - - - balance_power
And according to x86_energy_perf_policy this should set EPB to 8 and epp to 192,
however the EPB does not seem to be changed.
cpu0: EPB 6
cpu0: HWP_REQ: min 8 max 39 des 0 epp 192 window 0x0 (0*10^0us) use_pkg 0
cpu0: HWP_CAP: low 1 eff 8 guar 29 high 39
But manually setting EPB does not seem to change the problem, so this might be irrelevant.
What I did find is that ASPM is disabled althoug all devices have L0s and L1 states.
dmesg |grep ASPM
[ 0.376840] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 0.478529] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[ 0.478576] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[ 3.851085] r8169 0000:6d:00.1: can't disable ASPM; OS doesn't have ASPM control
lspci -vv | grep 'ASPM.*abled'
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
pcilib: sysfs_read_vpd: read failed: Input/output error
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
pcilib: sysfs_read_vpd: read failed: Input/output error
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
The two disabled ones are the PCI controller and the gtx 1070 connected to it.
with pcie_aspm=force actually disables aspm for the ethernet controller and the root controller it sits on as well.
dmesg | grep ASPM
[ 0.000000] PCIe ASPM is forcibly enabled
[ 0.376858] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 0.474936] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[ 0.474983] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
lspci -vv | grep 'ASPM.*abled'
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
pcilib: sysfs_read_vpd: read failed: Input/output error
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
pcilib: sysfs_read_vpd: read failed: Input/output error
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
However even manually enabling ASPM with setpci (which might have been stupid to try) does not change pc residency.
So now I am out of thing to try.
Last edited by DeadLink404 (2018-09-13 20:44:29)
Offline
Hi, what does
cat /sys/class/scsi_host/host*/link_power_management_policy
show? If it reads "max_performance", try changing it to "min_power" or "medium_power" and observe the results.
Offline
They are all "med_power_with_dipm" by default but I have tried setting them to min_power through powertop already.
Offline
Hi! Try this: https://bbs.archlinux.org/viewtopic.php … 0#p1725560
BTW ASPM for r8169 is being re-enabled in 4.19.
Last edited by fabledpig (2018-09-13 12:03:57)
Offline
Hi! Try this: https://bbs.archlinux.org/viewtopic.php … 0#p1725560
BTW ASPM for r8169 is being re-enabled in 4.19.
Oh man thank you so much.
Using r8168 with r8168.aspm=1 does work.
I now reach pc8 (same as in windows) and this saves about 3-5 watts when idling,
which is awesome.
Looking forward to what 4.19 brings.
Edit:
4.19.1 Is looking good. Thanks Kai-Heng Feng, Chunhao Lin, David S. Miller and whoever else worked on it.
Last edited by DeadLink404 (2018-11-13 18:13:31)
Offline