Extend your battery life with scx_rustland
arighi.blogspot.com
arighi.blogspot.com
The latter could be achieved much more easily without custom code, e.g. by using the cpuset cgroup controller to pin everything to CPU 0.
Which... Makes it hard for the user to notice the change? Cores will naturally go offline, but performance stays the same while you still use it.
I think this is just a demo of what you can do with user space scheduling and shouldn't be taken seriously...
This is just saying, if something decided to idle the CPU, don't wake it just because there are tasks waiting to run (let something else decide to wake it).
E.g., if the system is overloaded for some period of time maybe it will wake a cpu in response to that, but a short burst in tasks won't result in waking up all the CPUs.
All that `low_power` seems to do is prevent members from being kicked out of ‘idle’ while another in their group is ‘not idle’. This ‘idle’ state seems to be more of a guideline than the final decision, I believe if there is enough work to be done that it will get sent to ‘idle’ members.
The best analogy might be: three guys are dozing on the couch (the idle state), while the fourth guy is either doing chores (the active state) or else standing around generally being awake (the ready state). As long as the total amount of work doesn’t pile up past the awake guy’s capacity, he will let the others keep sleeping.
If I'm just loading a web-page or playing a non-AAA game like Terarria, I don't care whether I get 300fps or 200fps. I do care if my laptop has 4h of battery life with 6W consumed, or 8h and 3W.
There's another demo if you click through on the Github repo where they start a make -j32 on the kernel in the background while Terraria is running, and (with low-power mode off) the FPS actually goes up significantly compared to EEVDF, which I would definitely not have expected from a small plug-in scheduler in userspace like this.
I'd definitely like precise benchmarks, but for a proof of concept, I think it's a very interesting demo of what's possible.
I can't imagine this would be easy to get right, and it is probably much harder to set a good default. Even so, the background compile job taking twice as long might not be a waste of time as long as I get to play Oxygen Not Included twice as long!
Feels like there are bigger issues than the scheduler.
I think its enabled by default on Fedora and maybe Ubuntu, but definitely not on Debian, Arch or Guix.