From: Peter Zijlstra <peterz@infradead.org> To: Vincent Guittot <vincent.guittot@linaro.org> Cc: mingo@kernel.org, linux-kernel@vger.kernel.org, preeti@linux.vnet.ibm.com, linux@arm.linux.org.uk, linux-arm-kernel@lists.infradead.org, riel@redhat.com, Morten.Rasmussen@arm.com, efault@gmx.de, nicolas.pitre@linaro.org, linaro-kernel@lists.linaro.org, daniel.lezcano@linaro.org, dietmar.eggemann@arm.com Subject: Re: [PATCH v5 10/12] sched: get CPU's utilization statistic Date: Thu, 11 Sep 2014 14:34:12 +0200 [thread overview] Message-ID: <20140911123412.GY3190@worktop.ger.corp.intel.com> (raw) In-Reply-To: <1409051215-16788-11-git-send-email-vincent.guittot@linaro.org> On Tue, Aug 26, 2014 at 01:06:53PM +0200, Vincent Guittot wrote: > Monitor the utilization level of each group of each sched_domain level. The > utilization is the amount of cpu_capacity that is currently used on a CPU or > group of CPUs. We use the usage_load_avg to evaluate this utilization level. > In the special use case where the CPU is fully loaded by more than 1 task, > the activity level is set above the cpu_capacity in order to reflect the overload > of the CPU > > Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> > --- > kernel/sched/fair.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 1fd2131..2f95d1c 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4126,6 +4126,11 @@ static unsigned long capacity_of(int cpu) > return cpu_rq(cpu)->cpu_capacity; > } > > +static unsigned long capacity_orig_of(int cpu) > +{ > + return cpu_rq(cpu)->cpu_capacity_orig; > +} > + > static unsigned long cpu_avg_load_per_task(int cpu) > { > struct rq *rq = cpu_rq(cpu); This hunk should probably go into patch 6. > @@ -4514,6 +4519,17 @@ static int select_idle_sibling(struct task_struct *p, int target) > return target; > } > > +static int get_cpu_utilization(int cpu) > +{ > + unsigned long usage = cpu_rq(cpu)->cfs.usage_load_avg; > + unsigned long capacity = capacity_of(cpu); > + > + if (usage >= SCHED_LOAD_SCALE) > + return capacity + 1; > + > + return (usage * capacity) >> SCHED_LOAD_SHIFT; > +} So if I understood patch 9 correct, your changelog is iffy. usage_load_avg should never get > 1 (of whatever unit), no matter how many tasks are on the rq. You can only maximally run all the time. Therefore I can only interpret the if (usage >= SCHED_LOAD_SCALE) as numerical error handling, nothing more. Also I'm not entirely sure I like the usage, utilization names/metrics. I would suggest to reverse them. Call the pure running number 'utilization' and this scaled with capacity 'usage' or so. > @@ -6188,7 +6206,6 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sd > /* Now, start updating sd_lb_stats */ > sds->total_load += sgs->group_load; > sds->total_capacity += sgs->group_capacity; > - > sg = sg->next; > } while (sg != env->sd->groups); > I like that extra line of whitespace, it separates the body from the loop itself.
WARNING: multiple messages have this Message-ID (diff)
From: peterz@infradead.org (Peter Zijlstra) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 10/12] sched: get CPU's utilization statistic Date: Thu, 11 Sep 2014 14:34:12 +0200 [thread overview] Message-ID: <20140911123412.GY3190@worktop.ger.corp.intel.com> (raw) In-Reply-To: <1409051215-16788-11-git-send-email-vincent.guittot@linaro.org> On Tue, Aug 26, 2014 at 01:06:53PM +0200, Vincent Guittot wrote: > Monitor the utilization level of each group of each sched_domain level. The > utilization is the amount of cpu_capacity that is currently used on a CPU or > group of CPUs. We use the usage_load_avg to evaluate this utilization level. > In the special use case where the CPU is fully loaded by more than 1 task, > the activity level is set above the cpu_capacity in order to reflect the overload > of the CPU > > Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> > --- > kernel/sched/fair.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 1fd2131..2f95d1c 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4126,6 +4126,11 @@ static unsigned long capacity_of(int cpu) > return cpu_rq(cpu)->cpu_capacity; > } > > +static unsigned long capacity_orig_of(int cpu) > +{ > + return cpu_rq(cpu)->cpu_capacity_orig; > +} > + > static unsigned long cpu_avg_load_per_task(int cpu) > { > struct rq *rq = cpu_rq(cpu); This hunk should probably go into patch 6. > @@ -4514,6 +4519,17 @@ static int select_idle_sibling(struct task_struct *p, int target) > return target; > } > > +static int get_cpu_utilization(int cpu) > +{ > + unsigned long usage = cpu_rq(cpu)->cfs.usage_load_avg; > + unsigned long capacity = capacity_of(cpu); > + > + if (usage >= SCHED_LOAD_SCALE) > + return capacity + 1; > + > + return (usage * capacity) >> SCHED_LOAD_SHIFT; > +} So if I understood patch 9 correct, your changelog is iffy. usage_load_avg should never get > 1 (of whatever unit), no matter how many tasks are on the rq. You can only maximally run all the time. Therefore I can only interpret the if (usage >= SCHED_LOAD_SCALE) as numerical error handling, nothing more. Also I'm not entirely sure I like the usage, utilization names/metrics. I would suggest to reverse them. Call the pure running number 'utilization' and this scaled with capacity 'usage' or so. > @@ -6188,7 +6206,6 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sd > /* Now, start updating sd_lb_stats */ > sds->total_load += sgs->group_load; > sds->total_capacity += sgs->group_capacity; > - > sg = sg->next; > } while (sg != env->sd->groups); > I like that extra line of whitespace, it separates the body from the loop itself.
next prev parent reply other threads:[~2014-09-11 12:34 UTC|newest] Thread overview: 164+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-26 11:06 [PATCH v5 00/12] sched: consolidation of cpu_capacity Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 01/12] sched: fix imbalance flag reset Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-19 11:47 ` [tip:sched/core] sched: Fix " tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 02/12] sched: remove a wake_affine condition Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-19 11:47 ` [tip:sched/core] sched: Remove a wake_affine() condition tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 03/12] sched: fix avg_load computation Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-08-30 12:00 ` Preeti U Murthy 2014-08-30 12:00 ` Preeti U Murthy 2014-09-03 11:09 ` Vincent Guittot 2014-09-03 11:09 ` Vincent Guittot 2014-09-03 23:43 ` Tim Chen 2014-09-03 23:43 ` Tim Chen 2014-09-04 7:17 ` Vincent Guittot 2014-09-04 7:17 ` Vincent Guittot 2014-09-04 16:26 ` Tim Chen 2014-09-04 16:26 ` Tim Chen 2014-09-05 11:10 ` Preeti U Murthy 2014-09-05 11:10 ` Preeti U Murthy 2014-09-19 11:47 ` [tip:sched/core] sched: Fix " tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 04/12] sched: Allow all archs to set the capacity_orig Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-08-27 13:12 ` Kamalesh Babulal 2014-08-27 13:12 ` Kamalesh Babulal 2014-08-30 17:07 ` Preeti U Murthy 2014-08-30 17:07 ` Preeti U Murthy 2014-09-01 8:05 ` Vincent Guittot 2014-09-01 8:05 ` Vincent Guittot 2014-09-03 8:41 ` Preeti U Murthy 2014-09-03 8:41 ` Preeti U Murthy 2014-09-10 13:50 ` Peter Zijlstra 2014-09-10 13:50 ` Peter Zijlstra 2014-09-10 14:22 ` Vincent Guittot 2014-09-10 14:22 ` Vincent Guittot 2014-09-11 10:36 ` Preeti U Murthy 2014-09-11 10:36 ` Preeti U Murthy 2014-09-19 11:47 ` [tip:sched/core] sched: Allow all architectures to set ' capacity_orig' tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 05/12] ARM: topology: use new cpu_capacity interface Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-11 18:52 ` Nicolas Pitre 2014-09-11 18:52 ` Nicolas Pitre 2014-09-19 11:48 ` [tip:sched/core] ARM: topology: Use the " tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 06/12] sched: add per rq cpu_capacity_orig Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-08-27 13:32 ` Kamalesh Babulal 2014-08-27 13:32 ` Kamalesh Babulal 2014-08-28 7:34 ` Vincent Guittot 2014-08-28 7:34 ` Vincent Guittot 2014-09-10 13:53 ` Peter Zijlstra 2014-09-10 13:53 ` Peter Zijlstra 2014-09-10 14:19 ` Vincent Guittot 2014-09-10 14:19 ` Vincent Guittot 2014-09-11 19:02 ` Nicolas Pitre 2014-09-11 19:02 ` Nicolas Pitre 2014-09-15 21:22 ` Vincent Guittot 2014-09-15 21:22 ` Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 07/12] sched: test the cpu's capacity in wake affine Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-10 14:19 ` Peter Zijlstra 2014-09-10 14:19 ` Peter Zijlstra 2014-09-19 11:48 ` [tip:sched/core] sched: Test the CPU's capacity in wake_affine() tip-bot for Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 08/12] sched: move cfs task on a CPU with higher capacity Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-08-30 17:50 ` Preeti U Murthy 2014-08-30 17:50 ` Preeti U Murthy 2014-09-01 8:45 ` Vincent Guittot 2014-09-01 8:45 ` Vincent Guittot 2014-09-03 9:11 ` Preeti U Murthy 2014-09-03 9:11 ` Preeti U Murthy 2014-09-03 11:44 ` Vincent Guittot 2014-09-03 11:44 ` Vincent Guittot 2014-09-03 12:26 ` Preeti U Murthy 2014-09-03 12:26 ` Preeti U Murthy 2014-09-03 12:49 ` Vincent Guittot 2014-09-03 12:49 ` Vincent Guittot 2014-09-11 9:27 ` Peter Zijlstra 2014-09-11 9:27 ` Peter Zijlstra 2014-09-05 12:06 ` Preeti U Murthy 2014-09-05 12:06 ` Preeti U Murthy 2014-09-05 12:24 ` Vincent Guittot 2014-09-05 12:24 ` Vincent Guittot 2014-09-11 10:07 ` Peter Zijlstra 2014-09-11 10:07 ` Peter Zijlstra 2014-09-11 11:20 ` Vincent Guittot 2014-09-11 11:20 ` Vincent Guittot 2014-09-11 10:13 ` Peter Zijlstra 2014-09-11 10:13 ` Peter Zijlstra 2014-09-11 12:14 ` Vincent Guittot 2014-09-11 12:14 ` Vincent Guittot 2014-09-11 11:54 ` Peter Zijlstra 2014-09-11 11:54 ` Peter Zijlstra 2014-08-26 11:06 ` [PATCH v5 09/12] sched: add usage_load_avg Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-04 7:34 ` [PATCH v5 09/11] " Vincent Guittot 2014-09-04 7:34 ` Vincent Guittot 2014-09-11 11:17 ` Peter Zijlstra 2014-09-11 11:17 ` Peter Zijlstra 2014-09-11 11:17 ` [PATCH v5 09/12] " Peter Zijlstra 2014-09-11 11:17 ` Peter Zijlstra 2014-09-11 12:18 ` Vincent Guittot 2014-09-11 12:18 ` Vincent Guittot 2014-09-11 12:20 ` Vincent Guittot 2014-09-11 12:20 ` Vincent Guittot 2014-09-15 19:15 ` Morten Rasmussen 2014-09-15 19:15 ` Morten Rasmussen 2014-09-15 22:33 ` Vincent Guittot 2014-09-15 22:33 ` Vincent Guittot 2014-08-26 11:06 ` [PATCH v5 10/12] sched: get CPU's utilization statistic Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-11 12:34 ` Peter Zijlstra [this message] 2014-09-11 12:34 ` Peter Zijlstra 2014-09-11 13:07 ` Vincent Guittot 2014-09-11 13:07 ` Vincent Guittot 2014-09-11 14:04 ` Peter Zijlstra 2014-09-11 14:04 ` Peter Zijlstra 2014-09-11 19:17 ` Nicolas Pitre 2014-09-11 19:17 ` Nicolas Pitre 2014-09-12 7:41 ` Vincent Guittot 2014-09-12 7:41 ` Vincent Guittot 2014-09-15 19:45 ` Morten Rasmussen 2014-09-15 19:45 ` Morten Rasmussen 2014-09-16 22:43 ` Vincent Guittot 2014-09-16 22:43 ` Vincent Guittot 2014-09-15 19:28 ` Morten Rasmussen 2014-09-15 19:28 ` Morten Rasmussen 2014-08-26 11:06 ` [PATCH v5 11/12] sched: replace capacity_factor by utilization Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot 2014-09-11 15:39 ` Peter Zijlstra 2014-09-11 15:39 ` Peter Zijlstra 2014-09-11 16:15 ` Peter Zijlstra 2014-09-11 16:15 ` Peter Zijlstra 2014-09-11 17:26 ` Vincent Guittot 2014-09-11 17:26 ` Vincent Guittot 2014-09-14 19:41 ` Peter Zijlstra 2014-09-14 19:41 ` Peter Zijlstra 2014-09-14 19:51 ` Peter Zijlstra 2014-09-14 19:51 ` Peter Zijlstra 2014-09-15 11:42 ` Peter Zijlstra 2014-09-15 11:42 ` Peter Zijlstra 2014-09-15 19:07 ` Nicolas Pitre 2014-09-15 19:07 ` Nicolas Pitre 2014-09-15 20:01 ` Peter Zijlstra 2014-09-15 20:01 ` Peter Zijlstra 2014-09-17 18:45 ` Morten Rasmussen 2014-09-17 18:45 ` Morten Rasmussen 2014-09-17 18:58 ` Morten Rasmussen 2014-09-17 18:58 ` Morten Rasmussen 2014-09-17 23:03 ` Peter Zijlstra 2014-09-17 23:03 ` Peter Zijlstra 2014-09-15 22:14 ` Vincent Guittot 2014-09-15 22:14 ` Vincent Guittot 2014-09-15 22:18 ` Vincent Guittot 2014-09-15 22:18 ` Vincent Guittot 2014-09-17 22:25 ` Peter Zijlstra 2014-09-17 22:25 ` Peter Zijlstra 2014-09-18 1:32 ` Vincent Guittot 2014-09-18 1:32 ` Vincent Guittot 2014-09-16 17:00 ` Dietmar Eggemann 2014-09-16 17:00 ` Dietmar Eggemann 2014-08-26 11:06 ` [PATCH v5 12/12] sched: add SD_PREFER_SIBLING for SMT level Vincent Guittot 2014-08-26 11:06 ` Vincent Guittot
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20140911123412.GY3190@worktop.ger.corp.intel.com \ --to=peterz@infradead.org \ --cc=Morten.Rasmussen@arm.com \ --cc=daniel.lezcano@linaro.org \ --cc=dietmar.eggemann@arm.com \ --cc=efault@gmx.de \ --cc=linaro-kernel@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=mingo@kernel.org \ --cc=nicolas.pitre@linaro.org \ --cc=preeti@linux.vnet.ibm.com \ --cc=riel@redhat.com \ --cc=vincent.guittot@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.