Re: [RFC PATCH]: ACPI: Automatically online hot-added memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 17 March 2010 07:47:55 pm Prarit Bhargava wrote:
> Thomas Renninger wrote:
> > On Thursday 11 March 2010 09:32:09 chen gong wrote:
> >> On 2010-3-11 16:07, ykzhao wrote:
> >
> > ...
> >
> >> BTW, how about using UDEV rules to do this operation. It looks more
> >> smooth. I know some Novell guy is working on it.
> >
> > I also know this guy :)
> >
> > These would be the udev rules to automatically add memory/cpus:
> > SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0",
> > ATTR{online}="1", RUN+="/bin/logger onlining cpu: $env{DEVPATH}"
> > SUBSYSTEM=="memory", ACTION=="add", TEST=="state",
> > ATTR{state}=="offline", ATTR{state}="online", RUN+="/bin/logger onlining
> > memory: $env{DEVPATH}"
> >
> > But this should be the same as you suggest (at least the memory rule)
> > to do in the kernel:
> > automatically online the memory, once hotadded.
> >
> > I would not add any udev rules before this does not work
> > reliably and currently it is totally broken, mainly because:
> >   - not being able to alloc memory on foreign nodes (at least with slab)
> >   - C-state, throttling and cpufreq set up is done without valid
> >     cpu_data(new_cpu) resulting in wrong C-state (and other) info
>
> Thomas, forgive my ignorance of udev rules ... but can one udev rule
> block another?  ... That's not the best way to explain it ... here's an
> example:
>
> CPU hot add on Nehalem-EX.  Memory is brought online.  Memory udev
> events are generated.  CPU udev events are generated.
>
> Can the memory udev events block the cpu udev events?  ie) can I be
> assured that memory will come online before the cpus?

Blocking does not work.
But I have an idea, whatabout:
  - CPU add rule which only adds a CPU if the corresponding Numa node already
    has onlined memory
  - Memory add rule which adds the memory and also onlines CPUs if the Numa
    node still has offlined CPUs

This has the side effect that you online a CPU which may have been offlined on
purpose if you hotadd memory on the same node..., a rather uncommon case.

A quick try showed that it would be convenient to add the Numa node to the 
uevent which is a bit tricky...
Ok, I got this working, but messed up the cpu hotplugging with my patches:
...
Unable to map lapic 32 to logical cpu number
...
This already worked...

I wanted to post something today, but I couldn't made it.
Still I more or less could prove that above works and I hopefully can show
some results on Monday.

Comments?

   Thomas

BTW: I was wrong with slub. It also has bad side effects. What is strange is 
that with deep C-states one CPU (not the onlined) gets stuck (softlock up), 
but with processor.max_cstate=1 it does not. It reproducable hangs (loops?) 
in mm code, looks like it tries to alloc foreign memory. What I do not 
understand is why this happens with C3, but not with C1, it shouldn't have 
anything to do with memory setup. Anyway, I go back to slab again, lets 
ensure somehow that memory hot add comes first.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux