Messages in this thread | | | Subject | Re: [PATCH 1/8] sched: introduce task_se_h_load helper | From | Dietmar Eggemann <> | Date | Wed, 19 Jun 2019 14:52:36 +0200 |
| |
On 6/12/19 9:32 PM, Rik van Riel wrote: > Sometimes the hierarchical load of a sched_entity needs to be calculated. > Split out task_h_load into a task_se_h_load that takes a sched_entity pointer > as its argument, and a task_h_load wrapper that calls task_se_h_load. > > No functional changes. > > Signed-off-by: Rik van Riel <riel@surriel.com> > --- > kernel/sched/fair.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index f35930f5e528..df624f7a68e7 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -706,6 +706,7 @@ static u64 sched_vslice(struct cfs_rq *cfs_rq, struct sched_entity *se) > #ifdef CONFIG_SMP > > static int select_idle_sibling(struct task_struct *p, int prev_cpu, int cpu); > +static unsigned long task_se_h_load(struct sched_entity *se); > static unsigned long task_h_load(struct task_struct *p); > static unsigned long capacity_of(int cpu); > > @@ -7833,14 +7834,19 @@ static void update_cfs_rq_h_load(struct cfs_rq *cfs_rq) > } > } > > -static unsigned long task_h_load(struct task_struct *p) > +static unsigned long task_se_h_load(struct sched_entity *se) > { > - struct cfs_rq *cfs_rq = task_cfs_rq(p); > + struct cfs_rq *cfs_rq = cfs_rq_of(se); > > update_cfs_rq_h_load(cfs_rq); > - return div64_ul(p->se.avg.load_avg * cfs_rq->h_load, > + return div64_ul(se->avg.load_avg * cfs_rq->h_load, > cfs_rq_load_avg(cfs_rq) + 1); > }
I wonder if this is necessary. I placed a BUG_ON(!entity_is_task(se)) into task_se_h_load() after I applied the whole patch-set and ran some taskgroup related testcases. It didn't hit.
So why not use task_h_load(task_of(se)) instead?
[...]
| |