On 17/08/2020 14:05, benbjiang(蒋彪) wrote: > > >> On Aug 17, 2020, at 4:57 PM, Dietmar Eggemann <dietmar.eggem...@arm.com> >> wrote: >> >> On 14/08/2020 01:55, benbjiang(蒋彪) wrote: >>> Hi, >>> >>>> On Aug 13, 2020, at 2:39 AM, Dietmar Eggemann <dietmar.eggem...@arm.com> >>>> wrote: >>>> >>>> On 12/08/2020 05:19, benbjiang(蒋彪) wrote: >>>>> Hi, >>>>> >>>>>> On Aug 11, 2020, at 11:54 PM, Dietmar Eggemann >>>>>> <dietmar.eggem...@arm.com> wrote: >>>>>> >>>>>> On 11/08/2020 02:41, benbjiang(蒋彪) wrote: >>>>>>> Hi, >>>>>>> >>>>>>>> On Aug 10, 2020, at 9:24 PM, Dietmar Eggemann >>>>>>>> <dietmar.eggem...@arm.com> wrote: >>>>>>>> >>>>>>>> On 06/08/2020 17:52, benbjiang(蒋彪) wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>>> On Aug 6, 2020, at 9:29 PM, Dietmar Eggemann >>>>>>>>>> <dietmar.eggem...@arm.com> wrote: >>>>>>>>>> >>>>>>>>>> On 03/08/2020 13:26, benbjiang(蒋彪) wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> On Aug 3, 2020, at 4:16 PM, Dietmar Eggemann >>>>>>>>>>>> <dietmar.eggem...@arm.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>> On 01/08/2020 04:32, Jiang Biao wrote: >>>>>>>>>>>>> From: Jiang Biao <benbji...@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. 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. [...]