From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932691AbcIMWyX (ORCPT ); Tue, 13 Sep 2016 18:54:23 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:36209 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932243AbcIMWyW (ORCPT ); Tue, 13 Sep 2016 18:54:22 -0400 Date: Tue, 13 Sep 2016 15:54:20 -0700 From: Andrew Morton To: Noam Camus Cc: , , , , Subject: Re: [PATCH v5] lib/bitmap.c: enhance bitmap syntax Message-Id: <20160913155420.bcaf693f52109e8ac390b541@linux-foundation.org> In-Reply-To: <1473579629-4283-1-git-send-email-noamca@mellanox.com> References: <1473348805-7145-1-git-send-email-noamca@mellanox.com> <1473579629-4283-1-git-send-email-noamca@mellanox.com> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 11 Sep 2016 10:40:29 +0300 Noam Camus wrote: > From: Noam Camus > > Today there are platforms with many CPUs (up to 4K). > Trying to boot only part of the CPUs may result in too long string. > > For example lets take NPS platform that is part of arch/arc. > This platform have SMP system with 256 cores each with > 16 HW threads (SMT machine) where HW thread appears as CPU to the kernel. > In this example there is total of 4K CPUs. > When one tries to boot only part of the HW threads from each core the > string representing the map may be long... > For example if for sake of performance we decided to boot only first half > of HW threads of each core the map will look like: > 0-7,16-23,32-39,...,4080-4087 > > This patch introduce new syntax to accommodate with such use case. > I added an optional postfix to a range of CPUs which will choose > according to given modulo the desired range of reminders i.e.: > :sed_size/group_size > > For example, above map can be described in new syntax like this: > 0-4095:8/16 > > Note that this patch is backward compatible with current syntax. > > Signed-off-by: Noam Camus > --- > Documentation/kernel-parameters.txt | 15 ++++++++++ > lib/bitmap.c | 50 ++++++++++++++++++++++++++++++++--- > 2 files changed, 61 insertions(+), 4 deletions(-) > > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > index 623502e..4f1e95b 100644 > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -33,6 +33,21 @@ can also be entered as > Double-quotes can be used to protect spaces in values, e.g.: > param="spaces in here" > > +Some of the kernel parameters takes list of CPUs as value e.g.: > +isolcpus, task_isolation, nohz_full, irqaffinity, rcu_nocbs. I don't think we have a "task_isolation". What are you trying to refer to here? > +The format of this list is: > +,..., > +or > +- > +(must be a positive range in ascending order) > +or a mixture > +,...,- > +Note that for special case of range one can split range into equal size of groups > +and for each group to use some amount form the begin of that group. > +-cpu number>:/ > +For example one can add to its command line following parameter: > +isolcpus=1,2,10-20,100-2000:2/25 > + I think we can do better here. Please review: --- a/Documentation/kernel-parameters.txt~lib-bitmapc-enhance-bitmap-syntax-fix +++ a/Documentation/kernel-parameters.txt @@ -33,20 +33,36 @@ can also be entered as Double-quotes can be used to protect spaces in values, e.g.: param="spaces in here" -Some of the kernel parameters takes list of CPUs as value e.g.: -isolcpus, task_isolation, nohz_full, irqaffinity, rcu_nocbs. -The format of this list is: -,..., +cpu lists: +---------- + +Some kernel parameters take a list of CPUs as a value, e.g. isolcpus, +nohz_full, irqaffinity, rcu_nocbs. The format of this list is: + + ,..., + or -- -(must be a positive range in ascending order) + + - + (must be a positive range in ascending order) + or a mixture + ,...,- -Note that for special case of range one can split range into equal size of groups -and for each group to use some amount form the begin of that group. --cpu number>:/ -For example one can add to its command line following parameter: -isolcpus=1,2,10-20,100-2000:2/25 + +Note that for the special case of a range one can split the range into equal +sized groups and for each group use some amount from the beginning of that +group: + + -cpu number>:/ + +For example one can add to the command line following parameter: + + isolcpus=1,2,10-20,100-2000:2/25 + +where the final item represents CPUs 100,101,125,126,150,151,... + + This document may not be entirely up to date and comprehensive. The command "modinfo -p ${modulename}" shows a current list of all parameters of a loadable @@ -1776,13 +1792,7 @@ bytes respectively. Such letter suffixes See Documentation/filesystems/nfs/nfsroot.txt. irqaffinity= [SMP] Set the default irq affinity mask - Format: - ,..., - or - - - (must be a positive range in ascending order) - or a mixture - ,...,- + The argument is a cpu list, as described above. irqfixup [HW] When an interrupt is not handled search all handlers @@ -1799,13 +1809,7 @@ bytes respectively. Such letter suffixes Format: ,,, isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. - Format: - ,..., - or - - - (must be a positive range in ascending order) - or a mixture - ,...,- + The argument is a cpu list, as described above. This option can be used to specify one or more CPUs to isolate from the general SMP balancing and scheduling @@ -2666,6 +2670,7 @@ bytes respectively. Such letter suffixes Default: on nohz_full= [KNL,BOOT] + The argument is a cpu list, as described above. In kernels built with CONFIG_NO_HZ_FULL=y, set the specified list of CPUs whose tick will be stopped whenever possible. The boot CPU will be forced outside @@ -3268,6 +3273,8 @@ bytes respectively. Such letter suffixes See Documentation/blockdev/ramdisk.txt. rcu_nocbs= [KNL] + The argument is a cpu list, as described above. + In kernels built with CONFIG_RCU_NOCB_CPU=y, set the specified list of CPUs to be no-callback CPUs. Invocation of these CPUs' RCU callbacks will