diff options
author | Peter Zijlstra <[email protected]> | 2024-06-05 12:09:11 +0200 |
---|---|---|
committer | Peter Zijlstra <[email protected]> | 2024-08-17 11:06:42 +0200 |
commit | dfa0a574cbc47bfd5f8985f74c8ea003a37fa078 (patch) | |
tree | 37f0c9ca0b7cbf40570c60affeef895aa5fcf384 /tools/perf/scripts/python/flamegraph.py | |
parent | abc158c82ae555078aa5dd2d8407c3df0f868904 (diff) |
sched/uclamg: Handle delayed dequeue
Delayed dequeue has tasks sit around on the runqueue that are not
actually runnable -- specifically, they will be dequeued the moment
they get picked.
One side-effect is that such a task can get migrated, which leads to a
'nested' dequeue_task() scenario that messes up uclamp if we don't
take care.
Notably, dequeue_task(DEQUEUE_SLEEP) can 'fail' and keep the task on
the runqueue. This however will have removed the task from uclamp --
per uclamp_rq_dec() in dequeue_task(). So far so good.
However, if at that point the task gets migrated -- or nice adjusted
or any of a myriad of operations that does a dequeue-enqueue cycle --
we'll pass through dequeue_task()/enqueue_task() again. Without
modification this will lead to a double decrement for uclamp, which is
wrong.
Reported-by: Luis Machado <[email protected]>
Reported-by: Hongyan Xia <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Reviewed-by: Valentin Schneider <[email protected]>
Tested-by: Valentin Schneider <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Diffstat (limited to 'tools/perf/scripts/python/flamegraph.py')
0 files changed, 0 insertions, 0 deletions