Skip to content
Snippets Groups Projects

defaults: librem5-pm: Enable simple_ondemand governor for DRAM

All threads resolved!
1 file
+ 2
2
Compare changes
  • Side-by-side
  • Inline
  • I did a simple test with a USB power meter to see the power draw over
    5 minutes since running gnome-software in service mode using both
    `powersave` and `simple_ondemand` governor with screen off.
    
    With `powersave`, packagekitd was keeping one CPU busy at 100% for
    slightly above 4 minutes. At the end of the 5 minutes period the power
    meter reading was 125mWh.
    
    With `simple_ondemand`, packagekitd was done after slightly above one
    minute already, so the phone was idling rest of the time. Power meter
    reading was 109mWh (it was at about 45mWh at the moment when packagekitd
    finished its work).
    
    I've also recorded two minutes of idling (nothing but kgx running):
    the result was the same for both governors - 28mWh; and two minutes of
    keeping all CPU cores busy with compressing random data: 61mWh for
    `powersave` and 99mWh for `simple_ondemand`.
    
    This is consistent with my anecdata - `simple_ondemand` appears to save
    battery and makes the phone cooler. It also makes the UX much better when
    using the phone over ssh. The one case where it makes things
    worse - a rogue process constantly consuming 100% CPU in
    the background - is already a pathological case with poor results on both
    governors. When the process actually does some sensible and finite work,
    it's going to finish it *much faster* with simple_ondemand, saving plenty
    of power. Therefore, I'm going to merge this.
    
    To go back to previous behavior, users can always use this udev rule:
    ```
    SUBSYSTEM=="devfreq", TEST=="governor", ATTR{governor}="powersave"
    ```
ACTION!="add", GOTO="librem5_pm_end"
# Enable the powersave governor for devfreq. other requirements come from interconnect
SUBSYSTEM=="devfreq", TEST=="governor", ATTR{governor}="powersave"
# Enable the simple_ondemand governor for devfreq. other requirements come from interconnect
SUBSYSTEM=="devfreq", TEST=="governor", ATTR{governor}="simple_ondemand"
# Enable power management for external USB bus
DEVPATH=="/devices/platform/soc@0/38100000.usb", TEST=="power/control", ATTR{power/control}="auto"
Loading