Messages in this thread | ![/](/images/icornerl.gif) | | From | Aubrey Li <> | Date | Tue, 21 May 2019 16:19:00 +0800 | Subject | Re: [RFC PATCH v2 13/17] sched: Add core wide task selection and scheduling. |
| |
On Mon, May 20, 2019 at 10:04 PM Vineeth Pillai <vpillai@digitalocean.com> wrote: > > > > The following patch improved my test cases. > > > Welcome any comments. > > > > > > > This is certainly better than violating the point of the core scheduler :) > > > > If I'm understanding this right what will happen in this case is instead > > of using the idle process selected by the sibling we do the core scheduling > > again. This may start with a newidle_balance which might bring over something > > to run that matches what we want to put on the sibling. If that works then I > > can see this helping. > > > > But I'd be a little concerned that we could end up thrashing. Once we do core > > scheduling again here we'd force the sibling to resched and if we got a different > > result which "helped" him pick idle we'd go around again.
Thrashing means more IPIs right? That's not what I observed, because idle task has less chance onto CPU, rescheduling is reduced accordingly.
> > I think inherent in the concept of core scheduling (barring a perfectly aligned set > > of jobs) is some extra idle time on siblings.
Yeah, I understand and agree with this, but 10-15% idle time on an overloaded system makes me to try to figure out how this could happen and if we can improve it.
> > > > > I was also thinking along the same lines. This change basically always > tries to avoid idle and there by constantly interrupting the sibling. > While this change might benefit a very small subset of workloads, it > might introduce thrashing more often.
Thrashing is not observed under an overloaded case but may happen under a light load or a mid load case, I need more investigation.
> > One other reason you might be seeing performance improvement is > because of the bugs that caused both siblings to go idle even though > there are runnable and compatible threads in the queue. Most of the > issues are fixed based on all the feedback received in v2. We have a > github repo with the pre v3 changes here: > https://github.com/digitalocean/linux-coresched/tree/coresched
Okay, thanks, it looks like the core functions pick_next_task() and pick_task() have a lot of changes against v2. Need more brain power..
> > Please try this and see how it compares with the vanilla v2. I think its > time for a v3 now and we shall be posting it soon after some more > testing and benchmarking.
Is there any potential change between pre v3 and v3? I prefer working based on v3 so that everyone are on the same page.
Thanks, -Aubrey
| ![\](/images/icornerr.gif) |