Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754752AbbDHVXA (ORCPT ); Wed, 8 Apr 2015 17:23:00 -0400 Received: from g9t5008.houston.hp.com ([15.240.92.66]:50456 "EHLO g9t5008.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753331AbbDHVW6 (ORCPT ); Wed, 8 Apr 2015 17:22:58 -0400 Message-ID: <1428528169.3506.34.camel@j-VirtualBox> Subject: Re: sched: Improve load balancing in the presence of idle CPUs From: Jason Low To: Srikar Dronamraju Cc: Preeti U Murthy , Morten Rasmussen , "peterz@infradead.org" , "mingo@kernel.org" , Daniel Lezcano , "riel@redhat.com" , "vincent.guittot@linaro.org" , "pjt@google.com" , "benh@kernel.crashing.org" , "efault@gmx.de" , "linux-kernel@vger.kernel.org" , "iamjoonsoo.kim@lge.com" , "svaidy@linux.vnet.ibm.com" , "tim.c.chen@linux.intel.com" , jason.low2@hp.com Date: Wed, 08 Apr 2015 14:22:49 -0700 In-Reply-To: <20150408111216.GA24645@linux.vnet.ibm.com> References: <1427741729.5694.24.camel@j-VirtualBox> <551A5CCE.70008@linux.vnet.ibm.com> <1427828056.2492.24.camel@j-VirtualBox> <551B9514.80701@linux.vnet.ibm.com> <20150401170418.GX18994@e105550-lin.cambridge.arm.com> <1427954347.2556.43.camel@j-VirtualBox> <551FB5F5.5050906@linux.vnet.ibm.com> <1428449300.2556.79.camel@j-VirtualBox> <1428451666.2556.84.camel@j-VirtualBox> <20150408111216.GA24645@linux.vnet.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 Content-Transfer-Encoding: 7bit Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2149 Lines: 59 On Wed, 2015-04-08 at 16:42 +0530, Srikar Dronamraju wrote: > * Jason Low [2015-04-07 17:07:46]: > > > On Tue, 2015-04-07 at 16:28 -0700, Jason Low wrote: > > > > > Okay, so perhaps we can also try continuing nohz load balancing if we > > > find that there are overloaded CPUs in the system. > > > > Something like the following. > > > > --- > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index fdae26e..d636bf7 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@ -7620,6 +7620,16 @@ out: > > } > > > > #ifdef CONFIG_NO_HZ_COMMON > > +static inline bool nohz_kick_needed(struct rq *rq); > > + > > +static inline void pass_nohz_balance(struct rq *this_rq, int this_cpu) > > +{ > > + clear_bit(NOHZ_BALANCE_KICK, nohz_flags(this_cpu)); > > + nohz.next_balance = jiffies; > > Why are we updating nohz.next_balance here? This was just to make sure that since we're continuing the balancing on another CPU that the nohz next_balance is guaranteed to be "now". > > + if (nohz_kick_needed(this_rq)) > > + nohz_balancer_kick(); > > +} > > + > > /* > > * In CONFIG_NO_HZ_COMMON case, the idle balance kickee will do the > > * rebalancing for all the cpus for whom scheduler ticks are stopped. > > @@ -7631,8 +7641,10 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) > > int balance_cpu; > > > > if (idle != CPU_IDLE || > > Would it make sense to add need_resched here like > http://mid.gmane.org/1427442750-8112-1-git-send-email-wanpeng.li@linux.intel.com Yeah, we could have incorporated adding the need_resched there too for testing purposes. Though that probably wouldn't make too much of a difference in performance with this patch, since this also modified the need_resched() check in the loop + nohz.next_balance. So I think it would still be fine to test this without the added need_resched(). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/