All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanpeng Li <wanpeng.li@linux.intel.com>
To: Ingo Molnar <mingo@redhat.com>, Peter Zijlstra <peterz@infradead.org>
Cc: Juri Lelli <juri.lelli@arm.com>,
	Kirill Tkhai <ktkhai@parallels.com>,
	linux-kernel@vger.kernel.org,
	Wanpeng Li <wanpeng.li@linux.intel.com>
Subject: [PATCH v6 5/7] sched/fair: fix idle balance when remaining tasks are all non-CFS tasks
Date: Wed, 26 Nov 2014 08:44:05 +0800	[thread overview]
Message-ID: <1416962647-76792-6-git-send-email-wanpeng.li@linux.intel.com> (raw)
In-Reply-To: <1416962647-76792-1-git-send-email-wanpeng.li@linux.intel.com>

The overload indicator is used for knowing when we can totally avoid load
balancing to a cpu that is about to go idle. We can avoid load balancing
when no cpu has cfs task and both rt and deadline have push/pull mechanism
to do their own balancing.

However, rq->nr_running on behalf of the total number of each class tasks
on the cpu, do idle balance when remaining tasks are all non-CFS tasks does
not make any sense.

This patch fix it by idle balance when there are still other CFS tasks in
the rq's root domain.

Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
 kernel/sched/fair.c  | 2 +-
 kernel/sched/sched.h | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index a1c9267..8b7e131 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -6192,7 +6192,7 @@ static inline void update_sg_lb_stats(struct lb_env *env,
 		sgs->group_load += load;
 		sgs->sum_nr_running += rq->cfs.h_nr_running;
 
-		if (rq->nr_running > 1)
+		if (rq->nr_running > 1 && rq->cfs.h_nr_running > 0)
 			*overload = true;
 
 #ifdef CONFIG_NUMA_BALANCING
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 31f1e4d..f7dd978 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1269,7 +1269,8 @@ static inline void add_nr_running(struct rq *rq, unsigned count)
 
 	rq->nr_running = prev_nr + count;
 
-	if (prev_nr < 2 && rq->nr_running >= 2) {
+	if (prev_nr < 2 && rq->nr_running >= 2 &&
+		rq->cfs.h_nr_running > 0) {
 #ifdef CONFIG_SMP
 		if (!rq->rd->overload)
 			rq->rd->overload = true;
-- 
1.9.1


  parent reply	other threads:[~2014-11-26  0:46 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-26  0:44 [PATCH v6 0/7] sched: support dl task migration during cpu hotplug and other fixes Wanpeng Li
2014-11-26  0:44 ` [PATCH v6 1/7] sched/deadline: fix start high-res preemption tick for a non-leftmost task Wanpeng Li
2015-02-04 14:34   ` [tip:sched/core] sched/deadline: Fix hrtick " tip-bot for Wanpeng Li
2014-11-26  0:44 ` [PATCH v6 1/7] sched/deadline: fix start high-res preemption tick " Wanpeng Li
2014-11-26  0:34   ` Wanpeng Li
2014-11-26  0:44 ` [PATCH v6 3/7] sched/deadline: fix dl entity is still mark yield after replenishing Wanpeng Li
2015-02-04 14:35   ` [tip:sched/core] sched/deadline: Fix stale yield state tip-bot for Peter Zijlstra
2014-11-26  0:44 ` [PATCH v6 4/7] sched/deadline: reduce overhead if there are no scheduling parameters changed Wanpeng Li
2015-02-04 14:35   ` [tip:sched/core] sched/deadline: Avoid pointless __setscheduler() tip-bot for Wanpeng Li
2014-11-26  0:44 ` Wanpeng Li [this message]
2015-01-19 12:45   ` [PATCH v6 5/7] sched/fair: fix idle balance when remaining tasks are all non-CFS tasks Peter Zijlstra
2015-01-19 17:48     ` Tim Chen
2015-01-19 23:16       ` Wanpeng Li
2015-01-19 23:18     ` Wanpeng Li
2015-01-22  4:05       ` Wanpeng Li
2015-01-22 18:13         ` Tim Chen
2014-11-26  0:44 ` [PATCH v6 6/7] sched: fix start hrtick for short schedule slices on UP Wanpeng Li
2015-02-04 14:35   ` [tip:sched/core] sched: Fix hrtick_start() " tip-bot for Wanpeng Li
2014-11-26  0:44 ` [PATCH v6 7/7] sched/deadline: support dl task migration during cpu hotplug Wanpeng Li
2014-12-18  1:28 ` [PATCH v6 0/7] sched: support dl task migration during cpu hotplug and other fixes Wanpeng Li

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=1416962647-76792-6-git-send-email-wanpeng.li@linux.intel.com \
    --to=wanpeng.li@linux.intel.com \
    --cc=juri.lelli@arm.com \
    --cc=ktkhai@parallels.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.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 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.