Hacking the schedutil governor to upshift to maximum clock rate at every process dispatch.
I am considering modifying the scheduler and governor to get a jackrabbit start whenever a process is dispatched. Before learning how to, I would like some advice on whether to, and how much to do. Example target environment: Ubuntu Desktop 22.04 on i7-11800h Lenovo 5iPro laptop. The governors (performance, interactive, schedultil) seem to dispatch each process at moderate CPU clock rate and then maybe they ramp it up over the course of several ticks. IMHO, the system would be more responsive if each process or thread were dispatched at maximum clock rate, and later had its clock rate lowered over time as necessary. "As necessary" means to maintain power and thermal safety. Seeking advice: * Is there a better way to achieve the same result? * Is this a dumb thing to do? * Is it safe to rely on the existing code, firmware, and microcode to handle the subsequent downclocking, and for my hack to only do the upclocking? Note: Most of the lwn.net articles on the subject seem to be from 2016 .. 2018 references: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt https://elixir.bootlin.com/linux/latest/source/kernel/sched/cpufreq_scheduti... https://lore.kernel.org/all/?q=schedutil ((8-)> David A. Kra mailto:dakra137@gmail.com
On Mon, 23 May 2022 17:37:09 +0300, David Kra said:
I am considering modifying the scheduler and governor to get a jackrabbit start whenever a process is dispatched. Before learning how to, I would like some advice on whether to, and how much to do.
Step 0: gather actual data, and see if you will get any significant observable boost. (If you don't know how to test if you will get any improvement, you probably don't know how to test for improvement after the patch is done. So you may as well do that part up front, unglamorous as it may be) Hint: powertop is your friend (or are the cool kids using something else this week?)
* Is there a better way to achieve the same result?
It would probably be a lot easier to just set the CPU governor to "performance" mode.
* Is this a dumb thing to do? Probably, but it will depend on your use case.
* Is it safe to rely on the existing code, firmware, and microcode to handle the subsequent downclocking, and for my hack to only do the upclocking?
Well, you're just going to turn around and upclock it at the end of that process's tiimeslice, so it's unclear what real benefit you'd get from downclocking.
participants (2)
-
David Kra -
Valdis Klētnieks