From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755828AbbFOOkI (ORCPT ); Mon, 15 Jun 2015 10:40:08 -0400 Received: from mail-pd0-f178.google.com ([209.85.192.178]:33630 "EHLO mail-pd0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755843AbbFOOjm (ORCPT ); Mon, 15 Jun 2015 10:39:42 -0400 Date: Mon, 15 Jun 2015 23:38:59 +0900 From: Sergey Senozhatsky To: akpm@linux-foundation.org Cc: sergey.senozhatsky@gmail.com, amirv@mellanox.com, davem@davemloft.net, tj@kernel.org, mm-commits@vger.kernel.org, peterz@infradead.org, bp@alien8.de, linux-kernel@vger.kernel.org, sergey.senozhatsky.work@gmail.com Subject: Re: + cpumask-dont-perform-while-loop-in-cpumask_next_and.patch added to -mm tree Message-ID: <20150615143859.GC538@swordfish> References: <54f4f942.PQm4OugPrxrrW9I8%akpm@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54f4f942.PQm4OugPrxrrW9I8%akpm@linux-foundation.org> User-Agent: Mutt/1.5.23+89 (0255b37be491) (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On (03/02/15 15:58), akpm@linux-foundation.org wrote: > ------------------------------------------------------ > From: Sergey Senozhatsky > Subject: cpumask: don't perform while loop in cpumask_next_and() > > cpumask_next_and() is looking for cpumask_next() in src1 in a loop and > tests if found cpu is also present in src2. remove that loop, perform > cpumask_and() of src1 and src2 first and use that new mask to find > cpumask_next(). > > Apart from removing while loop, ./bloat-o-meter on x86_64 shows > add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8) > function old new delta > cpumask_next_and 62 54 -8 > Sir, Please revert this commit. It does awful things on really big machines (spotted by Peter Zijlstra). -ss > Signed-off-by: Sergey Senozhatsky > Cc: Tejun Heo > Cc: "David S. Miller" > Cc: Amir Vadai > Signed-off-by: Andrew Morton > --- > > lib/cpumask.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff -puN lib/cpumask.c~cpumask-dont-perform-while-loop-in-cpumask_next_and lib/cpumask.c > --- a/lib/cpumask.c~cpumask-dont-perform-while-loop-in-cpumask_next_and > +++ a/lib/cpumask.c > @@ -37,10 +37,11 @@ EXPORT_SYMBOL(__next_cpu_nr); > int cpumask_next_and(int n, const struct cpumask *src1p, > const struct cpumask *src2p) > { > - while ((n = cpumask_next(n, src1p)) < nr_cpu_ids) > - if (cpumask_test_cpu(n, src2p)) > - break; > - return n; > + struct cpumask tmp; > + > + if (cpumask_and(&tmp, src1p, src2p)) > + return cpumask_next(n, &tmp); > + return nr_cpu_ids; > } > EXPORT_SYMBOL(cpumask_next_and); > > _ > > Patches currently in -mm which might be from sergey.senozhatsky@gmail.com are > > cpumask-dont-perform-while-loop-in-cpumask_next_and.patch > lib-lz4-pull-out-constant-tables.patch >