Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Sep 2010 14:54:17 +0100
From:      "Robert N. M. Watson" <rwatson@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        sbruno@freebsd.org, "freebsd-current@FreeBSD.org" <freebsd-current@freebsd.org>, Joshua Neal <jdneal@gmail.com>
Subject:   Re: MAXCPU preparations
Message-ID:  <07839A8A-5CC5-47C5-B098-89FE81CA2F3E@freebsd.org>
In-Reply-To: <201009290749.22669.jhb@freebsd.org>
References:  <1285601161.7245.7.camel@home-yahoo> <1285699244.2454.63.camel@home-yahoo> <A0A7B3BB-806C-40EA-B8FE-344EF0C8A187@freebsd.org> <201009290749.22669.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 29 Sep 2010, at 12:49, John Baldwin wrote:

> On Tuesday, September 28, 2010 6:24:32 pm Robert N. M. Watson wrote:
>>=20
>> On 28 Sep 2010, at 19:40, Sean Bruno wrote:
>>=20
>>>> If you go fully dynamic you should use mp_maxid + 1 rather than =
maxcpus.
>>>=20
>>> I assume that mp_maxid is the new kern.smp.maxcpus?  Can you inject =
some
>>> history here so I can understand why one is "better" than the other?
>>=20
>> So, unlike maxcpus, mp_maxid is in theory susceptible to races in a =
brave new world in which we support hotplug CPUs -- a brave new world =
we're=20
> not yet ready for, however. If you do use mp_maxid, be aware you need =
to add one to get the size of the array -- maxcpus is the number of CPUs =
that=20
> can be used, whereas mp_maxid is the highest CPU ID (counting from 0) =
that is used.
>=20
> Hmm, I'm not sure that is true.  My feeling on mp_maxid is that it is =
the
> largest supported CPUID.  Platforms that support hotplug would need to =
set
> mp_maxid such that it has room for hotpluggable CPUs.  You don't want =
to
> go reallocate the UMA datastructures for every zone when a CPU is =
hotplugged
> for example.

Yes, we'll have to break one (or even both) of two current assumptions =
with the move to hotplug: contiguous in-use CPU IDs and mp_maxid =
representing the greatest possible CPU ID as a constant value. The =
former is guaranteed, but I wonder about the latter. On face value, you =
might say "oh, we know how many sockets there are", but if course, we =
don't know how many threads will arrive when a package is inserted.  For =
many subsystems, DPCPU will present a more than adequate answer for =
avoiding resizing, although not for low-level systems (perhaps such as =
UMA?). Likewise, on virtual machine platforms where hotplug actually =
might reflect a longer-term scheduling choice by the admin/hypervisor =
(i.e., resource partitioning), it may be harder to reason about what the =
future holds.

Robert=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?07839A8A-5CC5-47C5-B098-89FE81CA2F3E>