On Tue, Jan 12, 2016 at 05:56:16PM +0100, Vitaly Kuznetsov wrote: > Currently, all newly added memory blocks remain in 'offline' state unless > someone onlines them, some linux distributions carry special udev rules > like: > > SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online" > > to make this happen automatically. This is not a great solution for virtual > machines where memory hotplug is being used to address high memory pressure > situations as such onlining is slow and a userspace process doing this > (udev) has a chance of being killed by the OOM killer as it will probably > require to allocate some memory. > > Introduce default policy for the newly added memory blocks in > /sys/devices/system/memory/auto_online_blocks file with two possible > values: "offline" which preserves the current behavior and "online" which > causes all newly added memory blocks to go online as soon as they're added. > The default is "offline". > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > Documentation/memory-hotplug.txt | 19 +++++++++++++++---- > drivers/base/memory.c | 40 ++++++++++++++++++++++++++++++++++++---- > drivers/xen/balloon.c | 2 +- > include/linux/memory.h | 3 ++- > include/linux/memory_hotplug.h | 4 +++- > mm/memory_hotplug.c | 18 +++++++++++++++--- > 6 files changed, 72 insertions(+), 14 deletions(-) > > diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt > index ce2cfcf..ceaf40c 100644 > --- a/Documentation/memory-hotplug.txt > +++ b/Documentation/memory-hotplug.txt > @@ -254,12 +254,23 @@ If the memory block is online, you'll read "online". > If the memory block is offline, you'll read "offline". > > > -5.2. How to online memory > +5.2. Memory onlining > ------------ > -Even if the memory is hot-added, it is not at ready-to-use state. > -For using newly added memory, you have to "online" the memory block. > +When the memory is hot-added, the kernel decides whether or not to "online" > +it according to the policy which can be read from "auto_online_blocks" file: > > -For onlining, you have to write "online" to the memory block's state file as: > +% cat /sys/devices/system/memory/auto_online_blocks > + > +The default is "offline" which means the newly added memory is not in a > +ready-to-use state and you have to "online" the newly added memory blocks > +manually. Automatic onlining can be requested by writing "online" to > +"auto_online_blocks" file: > + > +% echo online > /sys/devices/system/memory/auto_online_blocks It looks that you forgot to mention that setting auto_online_blocks to online does not online currently offlined blocks automatically. Daniel -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>