All of lore.kernel.org
 help / color / mirror / Atom feed
From: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
To: Venki Pallipadi <venki@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Mike Travis <travis@sgi.com>,
	"Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>,
	"Paul E. McKenney" <paul.mckenney@linaro.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Paul Gortmaker <paul.gortmaker@windriver.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Avoid mask based num_possible_cpus and num_online_cpus
Date: Wed, 18 Jan 2012 14:20:11 -0500	[thread overview]
Message-ID: <4F171B6B.2040303@gmail.com> (raw)
In-Reply-To: <CABeCy1Y+02K3wiKra+w6UWy9ZVJh3-EajsFB6BwKgZwW3ma9BQ@mail.gmail.com>

(1/18/12 1:52 PM), Venki Pallipadi wrote:
> On Tue, Jan 17, 2012 at 9:55 PM, KOSAKI Motohiro
> <kosaki.motohiro@gmail.com>  wrote:
>> (1/17/12 9:07 PM), Venkatesh Pallipadi wrote:
>>> Kernel's notion of possible cpus (from include/linux/cpumask.h)
>>>    *     cpu_possible_mask- has bit 'cpu' set iff cpu is populatable
>>>
>>>    *  The cpu_possible_mask is fixed at boot time, as the set of CPU id's
>>>    *  that it is possible might ever be plugged in at anytime during the
>>>    *  life of that system boot.
>>>
>>>    #define num_possible_cpus()     cpumask_weight(cpu_possible_mask)
>>>
>>> and on x86 cpumask_weight() calls hweight64 and hweight64 (on older kernels
>>> and systems with !X86_FEATURE_POPCNT) or a popcnt based alternative.
>>>
>>> i.e, We needlessly go through this mask based calculation everytime
>>> num_possible_cpus() is called.
>>>
>>> The problem is there with cpu_online_mask() as well, which is fixed value at
>>> boot time in !CONFIG_HOTPLUG_CPU case and should not change that often even
>>> in HOTPLUG case.
>>>
>>> Though most of the callers of these two routines are init time (with few
>>> exceptions of runtime calls), it is cleaner to use variables
>>> and not go through this repeated mask based calculation.
>>>
>>> Signed-off-by: Venkatesh Pallipadi<venki@google.com>
>>> ---
>>>    include/linux/cpumask.h |    8 ++++++--
>>>    kernel/cpu.c            |    9 +++++++++
>>>    2 files changed, 15 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
>>> index 4f7a632..2eb04dd 100644
>>> --- a/include/linux/cpumask.h
>>> +++ b/include/linux/cpumask.h
>>> @@ -80,9 +80,13 @@ extern const struct cpumask *const cpu_online_mask;
>>>    extern const struct cpumask *const cpu_present_mask;
>>>    extern const struct cpumask *const cpu_active_mask;
>>>
>>> +extern int nr_online_cpus;
>>> +
>>>    #if NR_CPUS>    1
>>> -#define num_online_cpus()    cpumask_weight(cpu_online_mask)
>>> -#define num_possible_cpus()  cpumask_weight(cpu_possible_mask)
>>> +
>>> +#define num_online_cpus()    (nr_online_cpus)
>>> +#define num_possible_cpus()  (nr_cpu_ids)
>>
>> nr_cpu_ids mean maximum cpu id of cpus. if cpu id are sparse, maximum id
>> doesn't match number of cpus.
>>
>
> Yes. But will it be sparse in any arch? I saw some of the users of
> num_possible_cpus() doing things like allocating a buffer for that
> size and then indexing it using get_cpu(). So, I thought it would be
> better to use the existing nr_cpu_ids instead of inventing another
> variable. If indeed any arch is depending on this being sparse, we can
> have a new variable similar to num_possible_cpus and also audit all
> users of num_possible_cpus to see whether they should be using
> nr_cpu_ids instead.

If my remember is correct, sparc does.



  reply	other threads:[~2012-01-18 19:20 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-18  2:07 [PATCH] Avoid mask based num_possible_cpus and num_online_cpus Venkatesh Pallipadi
2012-01-18  5:55 ` KOSAKI Motohiro
2012-01-18 18:52   ` Venki Pallipadi
2012-01-18 19:20     ` KOSAKI Motohiro [this message]
2012-01-19 20:01       ` Venkatesh Pallipadi
2012-01-19 20:40         ` KOSAKI Motohiro
2012-01-21  1:01           ` Venki Pallipadi
2012-01-19 20:43         ` Srivatsa S. Bhat
2012-01-20 23:09           ` Venki Pallipadi
2012-01-20 23:45             ` KOSAKI Motohiro
2012-01-20 23:55               ` Venki Pallipadi
2012-01-23  5:22                 ` Srivatsa S. Bhat
2012-01-23 19:28                   ` Venki Pallipadi
2012-01-24  2:34                     ` [PATCH] Avoid mask based num_possible_cpus and num_online_cpus -v3 Venkatesh Pallipadi
2012-01-24 19:22                       ` Srivatsa S. Bhat
2012-01-24 19:30                         ` KOSAKI Motohiro
2012-01-24 21:01                         ` Venki Pallipadi
2012-01-24 23:25                           ` [PATCH] Avoid mask based num_possible_cpus and num_online_cpus -v4 Venkatesh Pallipadi
2012-01-26 17:22                             ` Srivatsa S. Bhat
2012-01-26 17:27                             ` Srivatsa S. Bhat
2012-01-26 21:25                               ` KOSAKI Motohiro
2012-01-26 23:22                             ` Andrew Morton
2012-01-27 23:58                               ` Venki Pallipadi
2012-02-01  0:17                                 ` [PATCH] Avoid mask based num_possible_cpus and num_online_cpus -v5 Venkatesh Pallipadi
2012-02-01 22:01                                   ` Andrew Morton
2012-02-02 20:03                                     ` Rusty Russell
2012-02-02 20:19                                       ` Andrew Morton
2012-02-02 21:00                                         ` Venki Pallipadi
2012-02-13 19:54                                       ` Tony Luck
2012-02-13 20:04                                         ` Venki Pallipadi
2012-02-13 20:25                                         ` Srivatsa S. Bhat
2012-02-13 20:43                                           ` Venki Pallipadi
2012-02-13 20:55                                             ` Srivatsa S. Bhat
2012-02-13 20:44                                           ` Srivatsa S. Bhat
2012-02-13 21:57                                             ` Tony Luck
2012-02-14  9:25                                               ` Rusty Russell
2012-02-14 21:35                                                 ` Srivatsa S. Bhat
2012-02-14 21:47                                                   ` Srivatsa S. Bhat
2012-02-14 23:00                                                   ` Tony Luck
2012-02-14 23:00                                                     ` Tony Luck
2012-02-14 22:49                                                 ` [PATCH 0/3] Cleanup raw handling of online/possible map Venkatesh Pallipadi
2012-02-14 22:49                                                   ` [PATCH 1/3] hexagon: Avoid raw handling of cpu_possible_map Venkatesh Pallipadi
2012-02-14 22:49                                                   ` [PATCH 2/3] mips: Avoid raw handling of cpu_possible_map/cpu_online_map Venkatesh Pallipadi
2012-02-27 22:19                                                     ` David Daney
2012-02-14 22:49                                                   ` [PATCH 3/3] um: Avoid raw handling of cpu_online_map Venkatesh Pallipadi
2012-02-27 21:55                                   ` [PATCH] Avoid mask based num_possible_cpus and num_online_cpus -v5 David Daney
2012-02-27 22:07                                     ` Andrew Morton
2012-02-27 22:16                                       ` David Daney
2012-03-01 18:32                                         ` Venki Pallipadi
2012-02-28  5:01                                       ` Stephen Rothwell

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=4F171B6B.2040303@gmail.com \
    --to=kosaki.motohiro@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=paul.mckenney@linaro.org \
    --cc=rjw@sisk.pl \
    --cc=srivatsa.bhat@linux.vnet.ibm.com \
    --cc=travis@sgi.com \
    --cc=venki@google.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.