From: Hongyan Xia <hongyan.xia2@arm.com>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
Tejun Heo <tj@kernel.org>, David Vernet <void@manifault.com>,
Andrea Righi <arighi@nvidia.com>,
Changwoo Min <changwoo@igalia.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sched/uclamp: Let each sched_class handle uclamp
Date: Thu, 6 Mar 2025 14:26:22 +0000 [thread overview]
Message-ID: <9cd7ee64-e5f4-4dd0-9e92-e84d96487f50@arm.com> (raw)
In-Reply-To: <0dcf8ac1-29ec-44e8-80ef-4c0f4a6d34e7@arm.com>
On 06/03/2025 13:48, Dietmar Eggemann wrote:
> On 06/03/2025 11:53, Hongyan Xia wrote:
>> On 05/03/2025 18:22, Dietmar Eggemann wrote:
>>> On 27/02/2025 14:54, Hongyan Xia wrote:
>>>
>>> [...]
>>>
>>>> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
>>>> index 857808da23d8..7e5a653811ad 100644
>>>> --- a/kernel/sched/fair.c
>>>> +++ b/kernel/sched/fair.c
>>>> @@ -6941,8 +6941,10 @@ enqueue_task_fair(struct rq *rq, struct
>>>> task_struct *p, int flags)
>>>> * Let's add the task's estimated utilization to the cfs_rq's
>>>> * estimated utilization, before we update schedutil.
>>>> */
>>>> - if (!(p->se.sched_delayed && (task_on_rq_migrating(p) || (flags
>>>> & ENQUEUE_RESTORE))))
>>>> + if (!(p->se.sched_delayed && (task_on_rq_migrating(p) || (flags
>>>> & ENQUEUE_RESTORE)))) {
>>>> + uclamp_rq_inc(rq, p);
>>>> util_est_enqueue(&rq->cfs, p);
>>>> + }
>>>
>>> So you want to have p uclamp-enqueued so that its uclamp_min value
>>> counts for the cpufreq_update_util()/cfs_rq_util_change() calls later in
>>> enqueue_task_fair?
>>>
>>> if (p->in_iowait)
>>> cpufreq_update_util(rq, SCHED_CPUFREQ_IOWAIT);
>>>
>>> enqueue_entity() -> update_load_avg() -> cfs_rq_util_change() ->
>>> cpufreq_update_util()
>>>
>>> But if you do this before requeue_delayed_entity() (1) you will not
>>> uclamp-enqueue p which got his ->sched_delayed just cleared in (1)?
>>
>> Sorry I'm not sure I'm following. The only condition of the
>> uclamp_rq_inc() here should be
>>
>> if (!(p->se.sched_delayed && (task_on_rq_migrating(p) || (flags &
>> ENQUEUE_RESTORE))))
>>
>> Could you elaborate why it doesn't get enqueued?
>
> Let's say 'p->se.sched_delayed = 1' and we are in
>
> enqueue_task()
>
> enqueue_task_fair()
>
> if (!(p->se.sched_delayed && ...)
>
> uclamp_rq_inc(rq, p);
>
> So p wouldn't be included here.
>
> But then p would be requeued in
>
> requeue_delayed_entity(se)
>
> since you removed the uclamp_rq_inc() from enqueue_task() (after the
> p->sched_class->enqueue_task) p will not be considered for uclamp.
>
I doubt this would be a concern as there are other conditions after
checking p->se.sched_delayed. You would only skip the uclamp inc if you
are both sched_delayed and meet the second part of the if.
Another reason is that, I think whatever we do should be consistent with
what we did for util_est. If util_est also affects cpufreq then I doubt
uclamp should be enqueue/dequeued differently, as it would be difficult
to argue why sometimes util_est affects cpufreq while uclamp doesn't and
why sometimes uclamp does and util_est doesn't.
next prev parent reply other threads:[~2025-03-06 14:26 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 13:54 [PATCH] sched/uclamp: Let each sched_class handle uclamp Hongyan Xia
2025-03-05 18:22 ` Dietmar Eggemann
2025-03-06 10:53 ` Hongyan Xia
2025-03-06 13:48 ` Dietmar Eggemann
2025-03-06 14:26 ` Hongyan Xia [this message]
2025-03-06 14:40 ` Hongyan Xia
2025-03-06 12:01 ` Xuewen Yan
2025-03-07 18:32 ` Dietmar Eggemann
2025-03-10 2:41 ` Xuewen Yan
2025-03-10 10:53 ` Dietmar Eggemann
2025-03-10 11:03 ` Xuewen Yan
2025-03-10 11:22 ` Dietmar Eggemann
2025-03-10 11:56 ` Hongyan Xia
2025-03-10 12:24 ` Dietmar Eggemann
2025-03-11 14:04 ` Hongyan Xia
2025-03-14 9:19 ` Xuewen Yan
2025-03-06 12:03 ` Xuewen Yan
2025-03-06 12:24 ` Hongyan Xia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9cd7ee64-e5f4-4dd0-9e92-e84d96487f50@arm.com \
--to=hongyan.xia2@arm.com \
--cc=arighi@nvidia.com \
--cc=bsegall@google.com \
--cc=changwoo@igalia.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tj@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=void@manifault.com \
--cc=vschneid@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.