Messages in this thread | | | From | "Doug Smythies" <> | Subject | RE: [PATCH v4 1/6] x86,sched: Add support for frequency invariance | Date | Mon, 23 Dec 2019 17:16:39 -0800 |
| |
On 2019.12.23 11:10 Qais Yousef wrote: > On 12/23/19 08:34, Doug Smythies wrote: >> On 2019.12.23 06:41 Qais Yousef wrote: >>> On 12/23/19 14:07, Qais Yousef wrote: >>>>> Re-boot to the nocgv1 (stock + cgroup_no_v1=all) kernel. >>>>> set the schedutil governor. >>>>> launch test 2 and related monitoring tools. >>>>> verify performance governor like behavior. >>>> >>>> So as stated above, by default uclamp_{min, max} = (0, 1024). So it wouldn't >>>> act as performance governor by default unless you explicitly write 1024 to >>>> uclamp.min. >>>> >>>> Let me go find Ubuntu mainline tree to see if they applied anything extra in >>>> there. If they modified the default behavior that could explain what you see. >>> >>> Actually I see what you were saying now that you copy the config. So I think >>> I misunderstood and you are running Linus' 5.5-rc2 + Ubuntu PPA config. >> >> Yes, exactly. >> I have a clone of the main Linus git branch, but steal the kernel >> configuration from the Ubuntu mainline PPA. > > I think I managed to reproduce it. The below seems to fix it for me, can you > try it out please?
Yes, it fixes the schedutil governor behaving like the performance governor problem on my i7-2600K test system.
I re-ran the tests several times, and re-booted back to the stock (problem) kernel to verify incorrect schedutil governor performance (i.e. I toggled back and forth, 2 times for each of 2 kernels, tests 1 and 2, total 8 tests). Kernel 5.5-rc2: 4 tests FAILED (as expected). Kernel 5.5-rc2 + this patch: 4 tests PASSED.
Accidentally tested: Kernel 5.5-rc2 + this patch + command line "cgroup_no_v1=all": 1 test PASS.
> I think what's going on is that the child group default util_min value isn't > propagated correctly after it's created, so we end up using the root_task_group > values which is 1024 for both min and max.
O.K. thanks.
> --- > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 90e4b00ace89..cf9d9106d1b5 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -7100,6 +7100,11 @@ static int cpu_cgroup_css_online(struct cgroup_subsys_state *css) > > if (parent) > sched_online_group(tg, parent); > + > +#ifdef CONFIG_UCLAMP_TASK_GROUP > + cpu_util_update_eff(css); > +#endif > + > return 0; > }
... Doug
| |