On Mon, May 20, 2019 at 10:04 PM Vineeth Pillai <vpil...@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