From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755081Ab0ETKu5 (ORCPT ); Thu, 20 May 2010 06:50:57 -0400 Received: from bombadil.infradead.org ([18.85.46.34]:49839 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752275Ab0ETKuz convert rfc822-to-8bit (ORCPT ); Thu, 20 May 2010 06:50:55 -0400 Subject: Re: [patch 0/7] sched: change nohz idle load balancing logic to push model From: Peter Zijlstra To: Suresh Siddha Cc: Ingo Molnar , Thomas Gleixner , Arjan van de Ven , Venkatesh Pallipadi , Vaidyanathan Srinivasan , ego@in.ibm.com, LKML , Dominik Brodowski , Nigel Cunningham , David Miller , Jens Axboe In-Reply-To: <20100517182726.089700767@sbs-t61.sc.intel.com> References: <20100517182726.089700767@sbs-t61.sc.intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Date: Thu, 20 May 2010 12:50:21 +0200 Message-ID: <1274352621.5605.14017.camel@twins> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2010-05-17 at 11:27 -0700, Suresh Siddha wrote: > This is an updated version of patchset which is posted earlier at > http://lkml.org/lkml/2009/12/10/470 > > Description: > Existing nohz idle load balance logic uses the pull model, with one > idle load balancer CPU nominated on any partially idle system and that > balancer CPU not going into nohz mode. With the periodic tick, the > balancer does the idle balancing on behalf of all the CPUs in nohz mode. > > This is not very optimal and has few issues: > * the balancer will continue to have periodic ticks and wakeup > frequently (HZ rate), even though it may not have any rebalancing to do on > behalf of any of the idle CPUs. > * On x86 and CPUs that have APIC timer stoppage on idle CPUs, this periodic > wakeup can result in an additional interrupt on a CPU doing the timer > broadcast. > > The alternative is to have a push model, where all idle CPUs can enter nohz > mode and any busy CPU kicks one of the idle CPUs to take care of idle > balancing on behalf of a group of idle CPUs. > > Following patches switches idle load balancer to this push approach. > > Updates from the previous version: > > * Busy CPU uses send_remote_softirq() for invoking SCHED_SOFTIRQ on the > idle load balancing cpu, which does the load balancing on behalf of > all the idle CPUs. > > * Dropped the per NUMA node nohz load balancing as it doesn't detect > certain imbalance scenarios. This will be addressed later. Looks good. I think we want to keep init_remote_softirq_csd() and a function that directly triggers the relevant softirq and make the networking code and the block layer use that if possible -- and axe the rest of the send_remote_softirq() infrastructure. Also, I think it makes sense to fold patches 4-6.