On 28 Mar 2023 11:26:30 +0200 Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) > { > - unsigned long ideal_runtime, delta_exec; > + unsigned long delta_exec; > struct sched_entity *se; > s64 delta; > > - /* > - * When many tasks blow up the sched_period; it is possible that > - * sched_slice() reports unusually large results (when many tasks are > - * very light for example). Therefore impose a maximum. > - */ > - ideal_runtime = min_t(u64, sched_slice(cfs_rq, curr), sysctl_sched_latency); > + if (sched_feat(EEVDF)) { > + if (pick_eevdf(cfs_rq) != curr) > + goto preempt; > + > + return; > + } Given deadline, the tick preempt can be replaced with a timer expiring at the EDL.