Messages in this thread | | | Date | Wed, 27 Sep 2023 10:00:11 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 0/2] Introduce SIS_CACHE to choose previous CPU during task wakeup |
| |
* Chen Yu <yu.c.chen@intel.com> wrote:
> When task p is woken up, the scheduler leverages select_idle_sibling() > to find an idle CPU for it. p's previous CPU is usually a preference > because it can improve cache locality. However in many cases, the > previous CPU has already been taken by other wakees, thus p has to > find another idle CPU. > > Inhibit the task migration while keeping the work conservation of > scheduler could benefit many workloads. Inspired by Mathieu's > proposal to limit the task migration ratio[1], this patch considers > the task average sleep duration. If the task is a short sleeping one, > then tag its previous CPU as cache hot for a short while. During this > reservation period, other wakees are not allowed to pick this idle CPU > until a timeout. Later if the task is woken up again, it can find its > previous CPU still idle, and choose it in select_idle_sibling().
Yeah, so I'm not convinced about this at this stage.
By allowing a task to basically hog a CPU after it has gone idle already, however briefly, we reduce resource utilization efficiency for the sake of singular benchmark workloads.
In a mixed environment the cost of leaving CPUs idle longer than necessary will show up - and none of these benchmarks show that kind of side effect and indirect overhead.
This feature would be a lot more convincing if it tried to measure overhead in the pathological case, not the case it's been written for.
Thanks,
Ingo
| |