From: Preeti U Murthy <preeti@linux.vnet.ibm.com>
To: alex.shi@intel.com, vincent.guittot@linaro.org,
peterz@infradead.org, pjt@google.com, efault@gmx.de,
rjw@rjwysocki.net, morten.rasmussen@arm.com,
svaidy@linux.vnet.ibm.com, arjan@linux.intel.com,
mingo@kernel.org
Cc: nicolas.pitre@linaro.org, len.brown@intel.com,
yuyang.du@intel.com, linaro-kernel@lists.linaro.org,
daniel.lezcano@linaro.org, corbet@lwn.net,
catalin.marinas@arm.com, markgross@thegnar.org,
sundar.iyer@intel.com, linux-kernel@vger.kernel.org,
dietmar.eggemann@arm.com, Lorenzo.Pieralisi@arm.com,
mike.turquette@linaro.org, akpm@linux-foundation.org,
paulmck@linux.vnet.ibm.com, tglx@linutronix.de
Subject: [RFC PATCH V2 06/19] sched: log the cpu utilization at rq
Date: Mon, 11 Aug 2014 17:05:25 +0530 [thread overview]
Message-ID: <20140811113514.31956.53276.stgit@preeti.in.ibm.com> (raw)
In-Reply-To: <20140811113000.31956.52857.stgit@preeti.in.ibm.com>
From: Alex Shi <alex.shi@intel.com>
The cpu's utilization is to measure how busy is the cpu.
util = cpu_rq(cpu)->avg.runnable_avg_sum * SCHED_POEWR_SCALE
/ cpu_rq(cpu)->avg.runnable_avg_period;
Since the util is no more than 1, we scale its value with 1024, same as
SCHED_POWER_SCALE and set the FULL_UTIL as 1024.
In later power aware scheduling, we are sensitive for how busy of the
cpu. Since as to power consuming, it is tight related with cpu busy
time.
BTW, rq->util can be used for any purposes if needed, not only power
scheduling.
Signed-off-by: Alex Shi <alex.shi@intel.com>
[Added CONFIG_SCHED_POWER switch to enable this patch]
Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>
---
kernel/sched/debug.c | 3 +++
kernel/sched/fair.c | 15 +++++++++++++++
kernel/sched/sched.h | 9 +++++++++
3 files changed, 27 insertions(+)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 627b3c3..395af7f 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -325,6 +325,9 @@ do { \
P(ttwu_count);
P(ttwu_local);
+#ifdef CONFIG_SCHED_POWER
+ P(util);
+#endif
#undef P
#undef P64
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index f1b0a33..681ad06 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2446,10 +2446,25 @@ static inline void __update_group_entity_contrib(struct sched_entity *se)
}
}
+#ifdef CONFIG_SCHED_POWER
+static void update_rq_util(struct rq *rq)
+{
+ if (rq->avg.runnable_avg_period)
+ rq->util = (u64)(rq->avg.runnable_avg_sum << SCHED_CAPACITY_SHIFT)
+ / rq->avg.runnable_avg_period;
+ else
+ rq->util = (u64)(rq->avg.runnable_avg_sum << SCHED_CAPACITY_SHIFT);
+}
+#else
+static void update_rq_util(struct rq *rq) {}
+#endif
+
static inline void update_rq_runnable_avg(struct rq *rq, int runnable)
{
__update_entity_runnable_avg(rq_clock_task(rq), &rq->avg, runnable);
__update_tg_runnable_avg(&rq->avg, &rq->cfs);
+
+ update_rq_util(rq);
}
#else /* CONFIG_FAIR_GROUP_SCHED */
static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq,
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 95fc013..971b812 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -508,6 +508,11 @@ extern struct root_domain def_root_domain;
#endif /* CONFIG_SMP */
+/* full cpu utilization */
+#ifdef CONFIG_SCHED_POWER
+#define FULL_UTIL SCHED_CAPACITY_SCALE
+#endif
+
/*
* This is the main, per-CPU runqueue data structure.
*
@@ -556,6 +561,10 @@ struct rq {
struct sched_avg avg;
#endif /* CONFIG_FAIR_GROUP_SCHED */
+#ifdef CONFIG_SCHED_POWER
+ unsigned int util;
+#endif /* CONFIG_SCHED_POWER */
+
/*
* This is part of a global counter where only the total sum
* over all CPUs matters. A task can increase this counter on
next prev parent reply other threads:[~2014-08-11 11:35 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-11 11:31 [RFC PATCH V2 00/19] Power Scheduler Design Preeti U Murthy
2014-08-11 11:32 ` [RFC PATCH V2 01/19] sched/power: Remove cpu idle state selection and cpu frequency tuning Preeti U Murthy
2014-08-18 15:39 ` Nicolas Pitre
2014-08-18 17:26 ` Preeti U Murthy
2014-08-18 17:53 ` Nicolas Pitre
2014-08-11 11:33 ` [RFC PATCH V2 02/19] sched/power: Move idle state selection into the scheduler Preeti U Murthy
2014-08-18 15:54 ` Nicolas Pitre
2014-08-18 17:19 ` Preeti U Murthy
2014-08-18 18:25 ` Nicolas Pitre
2014-08-11 11:33 ` [RFC PATCH V2 03/19] sched/idle: Enumerate idle states in scheduler topology Preeti U Murthy
2014-08-11 11:34 ` [RFC PATCH V2 04/19] sched: add sched balance policies in kernel Preeti U Murthy
2014-08-11 11:34 ` [RFC PATCH V2 05/19] sched: add sysfs interface for sched_balance_policy selection Preeti U Murthy
2014-08-11 11:35 ` Preeti U Murthy [this message]
2014-08-11 11:35 ` [RFC PATCH V2 07/19] sched: add new sg/sd_lb_stats fields for incoming fork/exec/wake balancing Preeti U Murthy
2014-08-11 11:36 ` [RFC PATCH V2 08/19] sched: move sg/sd_lb_stats struct ahead Preeti U Murthy
2014-08-11 11:36 ` [RFC PATCH V2 09/19] sched: get rq potential maximum utilization Preeti U Murthy
2014-08-11 11:37 ` [RFC PATCH V2 10/19] sched: detect wakeup burst with rq->avg_idle Preeti U Murthy
2014-08-11 11:38 ` [RFC PATCH V2 11/19] sched: add power aware scheduling in fork/exec/wake Preeti U Murthy
2014-08-11 11:38 ` [RFC PATCH V2 12/19] sched: using avg_idle to detect bursty wakeup Preeti U Murthy
2014-08-11 11:39 ` [RFC PATCH V2 13/19] sched: packing transitory tasks in wakeup power balancing Preeti U Murthy
2014-08-11 11:39 ` [RFC PATCH V2 14/19] sched: add power/performance balance allow flag Preeti U Murthy
2014-08-11 11:40 ` [RFC PATCH V2 15/19] sched: pull all tasks from source grp and no balance for prefer_sibling Preeti U Murthy
2014-08-11 11:41 ` [RFC PATCH V2 16/19] sched: add new members of sd_lb_stats Preeti U Murthy
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=20140811113514.31956.53276.stgit@preeti.in.ibm.com \
--to=preeti@linux.vnet.ibm.com \
--cc=Lorenzo.Pieralisi@arm.com \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@intel.com \
--cc=arjan@linux.intel.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=daniel.lezcano@linaro.org \
--cc=dietmar.eggemann@arm.com \
--cc=efault@gmx.de \
--cc=len.brown@intel.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markgross@thegnar.org \
--cc=mike.turquette@linaro.org \
--cc=mingo@kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=nicolas.pitre@linaro.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=rjw@rjwysocki.net \
--cc=sundar.iyer@intel.com \
--cc=svaidy@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--cc=yuyang.du@intel.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®