From: Morten Rasmussen <morten.rasmussen@arm.com>
To: mingo@kernel.org, peterz@infradead.org
Cc: pjt@google.com, arjan@linux.intel.com, rjw@sisk.pl,
dirk.j.brandewie@intel.com, vincent.guittot@linaro.org,
alex.shi@linaro.org, preeti@linux.vnet.ibm.com, efault@gmx.de,
corbet@lwn.net, tglx@linutronix.de, catalin.marinas@arm.com,
morten.rasmussen@arm.com, linux-kernel@vger.kernel.org,
linaro-kernel@lists.linaro.org
Subject: [RFC][PATCH 4/7] sched: power: Remove power capacity hints for kworker threads
Date: Fri, 11 Oct 2013 18:19:14 +0100 [thread overview]
Message-ID: <1381511957-29776-5-git-send-email-morten.rasmussen@arm.com> (raw)
In-Reply-To: <1381511957-29776-1-git-send-email-morten.rasmussen@arm.com>
Removing power hints for kworker threads enables easier use of
workqueues in the power driver late callback. That would otherwise
lead to an endless loop unless it is prevented in the power driver.
Signed-off-by: Morten Rasmussen <morten.rasmussen@arm.com>
---
kernel/sched/fair.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 50ae0ce..ea8d973 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2856,23 +2856,29 @@ static inline void hrtick_update(struct rq *rq)
static unsigned long weighted_cpuload(const int cpu);
static unsigned long power_of(int cpu);
-static inline void inc_cpu_capacity(int cpu)
+static inline void inc_cpu_capacity(int cpu, struct task_struct *p)
{
+ if (p && p->flags & PF_WQ_WORKER)
+ return;
+
if (weighted_cpuload(cpu) > power_of(cpu))
go_faster(cpu, 0);
}
-static inline void dec_cpu_capacity(int cpu)
+static inline void dec_cpu_capacity(int cpu, struct task_struct *p)
{
+ if (p && p->flags & PF_WQ_WORKER)
+ return;
+
if (weighted_cpuload(cpu) < power_of(cpu))
go_slower(cpu, 0);
}
#else
-static inline void inc_cpu_capacity(int cpu)
+static inline void inc_cpu_capacity(int cpu, struct task_struct *p)
{
}
-static inline void dec_cpu_capacity(int cpu)
+static inline void dec_cpu_capacity(int cpu, struct task_struct *p)
{
}
#endif
@@ -2923,7 +2929,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
inc_nr_running(rq);
}
- inc_cpu_capacity(task_cpu(p));
+ inc_cpu_capacity(task_cpu(p), p);
hrtick_update(rq);
}
@@ -2986,7 +2992,7 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
update_rq_runnable_avg(rq, 1);
}
- dec_cpu_capacity(task_cpu(p));
+ dec_cpu_capacity(task_cpu(p), p);
hrtick_update(rq);
}
@@ -5772,7 +5778,7 @@ static void run_rebalance_domains(struct softirq_action *h)
*/
nohz_idle_balance(this_cpu, idle);
- inc_cpu_capacity(this_cpu);
+ inc_cpu_capacity(this_cpu, NULL);
power_late_callback(this_cpu);
}
--
1.7.9.5
next prev parent reply other threads:[~2013-10-11 17:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-11 17:19 [RFC][PATCH 0/7] Power-aware scheduling v2 Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 1/7] Initial power driver interface infrastructure Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 2/7] sched: power: Power driver late callback interface Morten Rasmussen
2013-10-14 13:42 ` Peter Zijlstra
2013-10-11 17:19 ` [RFC][PATCH 3/7] sched: power: go_faster/slower power driver hints Morten Rasmussen
2013-10-12 2:58 ` Michael wang
2013-10-14 12:42 ` Morten Rasmussen
2013-10-14 13:48 ` Peter Zijlstra
2013-10-14 15:55 ` Morten Rasmussen
2013-10-11 17:19 ` Morten Rasmussen [this message]
2013-10-14 13:33 ` [RFC][PATCH 4/7] sched: power: Remove power capacity hints for kworker threads Peter Zijlstra
2013-10-14 15:14 ` Arjan van de Ven
2013-10-17 16:40 ` Morten Rasmussen
2013-10-17 16:54 ` Peter Zijlstra
2013-10-17 17:18 ` Arjan van de Ven
2013-10-18 8:47 ` Morten Rasmussen
2013-10-18 13:43 ` Arjan van de Ven
2013-10-18 8:38 ` Morten Rasmussen
2013-10-14 16:10 ` Morten Rasmussen
2013-10-14 16:13 ` Arjan van de Ven
2013-10-14 17:19 ` Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 5/7] sched: power: Increase cpu capacity based on rq tracked load Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 6/7] sched: power: cpufreq: Initial schedpower cpufreq governor/power driver Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 7/7] sched: power: Let the power driver choose the best wake-up cpu Morten Rasmussen
2013-10-14 13:32 ` [RFC][PATCH 0/7] Power-aware scheduling v2 Peter Zijlstra
2013-10-14 17:15 ` Morten Rasmussen
2013-10-14 17:31 ` Peter Zijlstra
2013-10-15 17:05 ` Morten Rasmussen
2013-10-15 9:57 ` 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=1381511957-29776-5-git-send-email-morten.rasmussen@arm.com \
--to=morten.rasmussen@arm.com \
--cc=alex.shi@linaro.org \
--cc=arjan@linux.intel.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=dirk.j.brandewie@intel.com \
--cc=efault@gmx.de \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=rjw@sisk.pl \
--cc=tglx@linutronix.de \
--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: 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®