On Thu, Jan 6, 2022 at 4:05 AM cruzzhao <cruzzhao@xxxxxxxxxxxxxxxxx> wrote: > > > 在 2022/1/6 上午4:59, Josh Don 写道: > > It's a good idea to combine them into a single sum. I separated them in > order to be consistent with the task accounting and for easy to understand. > As for change the task accounting, I've tried but I haven't found a > proper method to do so. I've considered the following methods: > 1. Account the uncookie'd force idle time to the uncookie'd task, but > it'll be hard to trace the uncookie'd task. Not sure what you mean there, I think you just need to add --- a/kernel/sched/core_sched.c +++ b/kernel/sched/core_sched.c @@ -294,7 +294,7 @@ void sched_core_account_forceidle(struct rq *rq) rq_i = cpu_rq(i); p = rq_i->core_pick ?: rq_i->curr; - if (!p->core_cookie) + if (p == rq_i->idle) continue; __schedstat_add(p->stats.core_forceidle_sum, delta) > 2. Account the uncookie'd force idle time to the cookie'd task in the > core_tree of the core, but it will cost a lot on traversing the core_tree. > > Many thanks for suggestions. > Best, > Cruz Zhao > > > Why do you need this separated out into two fields then? Could we just > > combine the uncookie'd and cookie'd forced idle into a single sum? > > > > IMO it is fine to account the forced idle from uncookie'd tasks, but > > we should then also change the task accounting to do the same, for > > consistency.