From: Wanpeng Li <wanpeng.li@linux.intel.com>
To: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Wanpeng Li <wanpeng.li@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>, Juri Lelli <juri.lelli@arm.com>,
Kirill Tkhai <ktkhai@parallels.com>,
linux-kernel@vger.kernel.org, riel@redhat.com, jason.low2@hp.com,
fweisbec@gmail.com
Subject: Re: [PATCH v6 5/7] sched/fair: fix idle balance when remaining tasks are all non-CFS tasks
Date: Tue, 20 Jan 2015 07:16:03 +0800 [thread overview]
Message-ID: <20150119231603.GA3687@kernel> (raw)
In-Reply-To: <1421689725.2399.38.camel@schen9-desk2.jf.intel.com>
On Mon, Jan 19, 2015 at 09:48:45AM -0800, Tim Chen wrote:
>On Mon, 2015-01-19 at 13:45 +0100, Peter Zijlstra wrote:
>> On Wed, Nov 26, 2014 at 08:44:05AM +0800, Wanpeng Li wrote:
>> > 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.
>> >
>>
>> Please always try and Cc the people who touched that code last; for the
>> idle_balance bits commit 4486edd12b5a ("sched/fair: Implement fast
>> idling of CPUs when the system is partially loaded") gives a fair clue
>> as to who that would be.
>>
>> > 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;
>>
>
>After this change, you will not start cfs load balance if you have one
>cfs task and a few other non-cfs tasks on a run-queue. In this case if
>there's a less loaded run queue available, the cfs scheduler would not
>move the cfs task there. So you will be forcing the deadline and rt
>scheduler to move their tasks away. In this case, a cfs task will
>behave like a "higher" priority task than the rt and deadline tasks in
>the sense that it forces the other classes of tasks to be moved to
>accommodate cfs tasks. I don't think this is the right behavior.
>
>Also, add_nr_running could add more than one cfs tasks. So if there are
>more than one cfs tasks being added, you should load balance and that
>need to be checked in add_nr_running if you make the change there.
Got it, thanks.
Regards,
Wanpeng Li
>
>Tim
>
>> Here 3882ec643997 ("nohz: Use IPI implicit full barrier against
>> rq->nr_running r/w") might be a clue.
>>
>> Also, this is wrong, it breaks NOHZ_FULL.
>
next prev parent reply other threads:[~2015-01-19 23:35 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 ` [PATCH v6 5/7] sched/fair: fix idle balance when remaining tasks are all non-CFS tasks Wanpeng Li
2015-01-19 12:45 ` Peter Zijlstra
2015-01-19 17:48 ` Tim Chen
2015-01-19 23:16 ` Wanpeng Li [this message]
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=20150119231603.GA3687@kernel \
--to=wanpeng.li@linux.intel.com \
--cc=fweisbec@gmail.com \
--cc=jason.low2@hp.com \
--cc=juri.lelli@arm.com \
--cc=ktkhai@parallels.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=tim.c.chen@linux.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 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.