Messages in this thread | | | Date | Thu, 10 Oct 2013 09:00:44 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH 0/6] Optimize the cpu hotplug locking -v2 |
| |
On Thu, 10 Oct 2013 17:26:12 +0200 Oleg Nesterov <oleg@redhat.com> wrote:
> On 10/10, Ingo Molnar wrote: > > > > * Peter Zijlstra <peterz@infradead.org> wrote: > > > > > But the thing is; our sense of NR_CPUS has shifted, where it used to be > > > ok to do something like: > > > > > > for_each_cpu() > > > > > > With preemption disabled; it gets to be less and less sane to do so, > > > simply because 'common' hardware has 256+ CPUs these days. If we cannot > > > rely on preempt disable to exclude hotplug, we must use > > > get_online_cpus(), but get_online_cpus() is global state and thus cannot > > > be used at any sort of frequency. > > > > So ... why not make it _really_ cheap, i.e. the read lock costing nothing, > > and tie CPU hotplug to freezing all tasks in the system? > > > > Actual CPU hot unplugging and repluggin is _ridiculously_ rare in a > > system, I don't understand how we tolerate _any_ overhead from this utter > > slowpath. > > Well, iirc Srivatsa (cc'ed) pointed out that some systems do cpu_down/up > quite often to save the power.
cpu hotremove already uses stop_machine, so such an approach shouldn't actually worsen things (a lot) for them?
It's been ages since I looked at this stuff :( Although it isn't used much, memory hotplug manages to use stop_machine() on the add/remove (ie, "writer") side and nothing at all on the "reader" side. Is there anything which fundamentally prevents cpu hotplug from doing the same?
| |