Messages in this thread | | | From | Xuewen Yan <> | Date | Fri, 2 Jul 2021 21:03:31 +0800 | Subject | Re: [PATCH v2] sched/uclamp: Avoid getting unreasonable ucalmp value when rq is idle |
| |
On Fri, Jul 2, 2021 at 8:12 PM Valentin Schneider <valentin.schneider@arm.com> wrote: > > On 02/07/21 12:54, Qais Yousef wrote: > > sched/uclamp: Ignore max aggregation if rq is idle > > > > When a task wakes up on an idle rq, uclamp_rq_util_with() would max > > aggregate with rq value. But since there is no task enqueued yet, the > > values are stale based on the last task that was running. When the new > > Nit: those values are "intentionally stale" for UCLAMP_MAX, per > > e496187da710 ("sched/uclamp: Enforce last task's UCLAMP_MAX") > > for UCLAMP_MIN we'll set uclamp_none(UCLAMP_MIN) == 0 upon dequeueing the > last runnable task, which DTRT. > > > task actually wakes up and enqueued, then the rq uclamp values should > > reflect that of the newly woken up task effective uclamp values. > > > > This is a problem particularly for uclamp_max because it default to > ^^^^^^^^^^^^ > Per the above, it's "only" a problem for UCLAMP_MAX. > > > 1024. If a task p with uclamp_max = 512 wakes up, then max aggregation > > would ignore the capping that should apply when this task is enqueued, > > which is wrong. > > > > Fix that by ignoring max aggregation if the rq is idle since in that > > case the effective uclamp value of the rq will be the ones of the task > > that will wake up. > >
Thanks! xuewen
| |