RE: [PATCH v4 1/6] x86,sched: Add support for frequency invariance

Doug Smythies
2019-12-24T01:16:51Z

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