Messages in this thread | | | From | Vincent Guittot <> | Date | Wed, 19 Aug 2020 13:05:22 +0200 | Subject | Re: [PATCH] sched/fair: reduce preemption with IDLE tasks runable(Internet mail) |
| |
On Wed, 19 Aug 2020 at 12:46, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > > On 17/08/2020 14:05, benbjiang(蒋彪) wrote: > > > > > >> On Aug 17, 2020, at 4:57 PM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >> > >> On 14/08/2020 01:55, benbjiang(蒋彪) wrote: > >>> Hi, > >>> > >>>> On Aug 13, 2020, at 2:39 AM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >>>> > >>>> On 12/08/2020 05:19, benbjiang(蒋彪) wrote: > >>>>> Hi, > >>>>> > >>>>>> On Aug 11, 2020, at 11:54 PM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >>>>>> > >>>>>> On 11/08/2020 02:41, benbjiang(蒋彪) wrote: > >>>>>>> Hi, > >>>>>>> > >>>>>>>> On Aug 10, 2020, at 9:24 PM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >>>>>>>> > >>>>>>>> On 06/08/2020 17:52, benbjiang(蒋彪) wrote: > >>>>>>>>> Hi, > >>>>>>>>> > >>>>>>>>>> On Aug 6, 2020, at 9:29 PM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >>>>>>>>>> > >>>>>>>>>> On 03/08/2020 13:26, benbjiang(蒋彪) wrote: > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>> On Aug 3, 2020, at 4:16 PM, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> On 01/08/2020 04:32, Jiang Biao wrote: > >>>>>>>>>>>>> From: Jiang Biao <benbjiang@tencent.com> > > [...] > > >> Are you sure about this? > > Yes. :) > >> > >> The math is telling me for the: > >> > >> idle task: (3 / (1024 + 1024 + 3))^(-1) * 4ms = 2735ms > >> > >> normal task: (1024 / (1024 + 1024 + 3))^(-1) * 4ms = 8ms > >> > >> (4ms - 250 Hz) > > My tick is 1ms - 1000HZ, which seems reasonable for 600ms? :) > > OK, I see. > > But here the different sched slices (check_preempt_tick()-> > sched_slice()) between normal tasks and the idle task play a role to. > > Normal tasks get ~3ms whereas the idle task gets <0.01ms.
In fact that depends on the number of CPUs on the system :sysctl_sched_latency = 6ms * (1 + ilog(ncpus)) . On a 8 cores system, normal task will run around 12ms in one shoot and the idle task still one tick period
Also, you can increase even more the period between 2 runs of idle task by using cgroups and min shares value : 2
> > So the idle task runs every ~680ms but only for 1 tick (1ms) (4 times > less than the normal tasks). The condition 'if (delta_exec > > ideal_runtime)' in check_preempt_tick() is only true at the 4th tick > when a normal task runs even though the slice is 3ms. > > In the 250 Hz example the sched slice diffs are hidden behind the 4ms tick. > > [...]
| |