On Tue, 2023-04-11 at 21:33 +0800, Hillf Danton wrote: > On Tue, 11 Apr 2023 12:15:41 +0200 Mike Galbraith <efault@xxxxxx> > > > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -950,6 +950,9 @@ static struct sched_entity *pick_eevdf(s > > if (curr && (!curr->on_rq || !entity_eligible(cfs_rq, curr))) > > curr =3D NULL; > > > > + if (sched_feat(GENTLE_EEVDF) && curr) > > + return curr; > > + > > This is rather aggressive, given latency-10 curr and latency-0 candidate > at tick hit for instance. The numbers seem to indicate that the ~400k ctx switches eliminated were meaningless to the load being measures. I recorded everything for 5 minutes, and the recording wide max actually went down.. but one-off hits happen regularly in noisy GUI regardless of scheduler, are difficult to assign meaning to. Now I'm not saying there is no cost, if you change anything that's converted to instructions, there is a price tag somewhere, whether you notice immediately or not. Nor am I saying that patchlet is golden. I am saying that some of the ctx switch delta look very much like useless overhead that can and should be made to go away. From my POV, patchlet actually looks like kinda viable, but to Peter and regression reporter, it and associated data are presented as a datapoint. > And along your direction a mild change is > postpone the preempt wakeup to the next tick. > > +++ b/kernel/sched/fair.c > @@ -7932,8 +7932,6 @@ static void check_preempt_wakeup(struct > return; > > cfs_rq = cfs_rq_of(se); > - update_curr(cfs_rq); > - > /* > * XXX pick_eevdf(cfs_rq) != se ? > */ Mmmm, stopping time is a bad idea methinks. -Mike