From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753920AbcADMbK (ORCPT ); Mon, 4 Jan 2016 07:31:10 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33844 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753474AbcADMbG (ORCPT ); Mon, 4 Jan 2016 07:31:06 -0500 Date: Mon, 4 Jan 2016 13:30:58 +0100 From: Igor Mammedov To: Vitaly Kuznetsov Cc: Andrew Morton , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, Jonathan Corbet , Greg Kroah-Hartman , Daniel Kiper , Dan Williams , Tang Chen , David Vrabel , David Rientjes , Naoya Horiguchi , Xishi Qiu , Mel Gorman , "K. Y. Srinivasan" , Kay Sievers , Konrad Rzeszutek Wilk , Boris Ostrovsky Subject: Re: [PATCH v2] memory-hotplug: add automatic onlining policy for the newly added memory Message-ID: <20160104133058.6d06f07e@nial.brq.redhat.com> In-Reply-To: <87d1thtydr.fsf@vitty.brq.redhat.com> References: <1450801950-7744-1-git-send-email-vkuznets@redhat.com> <20151222135520.1bcb2d18382f1e414864992c@linux-foundation.org> <87d1thtydr.fsf@vitty.brq.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 04 Jan 2016 11:47:12 +0100 Vitaly Kuznetsov wrote: > Andrew Morton writes: > > > On Tue, 22 Dec 2015 17:32:30 +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/hotplug_autoonline 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 "online" when MEMORY_HOTPLUG_AUTOONLINE kernel config option > >> is selected. > > > > I think the default should be "offline" so vendors can ship kernels > > which have CONFIG_MEMORY_HOTPLUG_AUTOONLINE=y while being > > back-compatible with previous kernels. > > > > (sorry for the delayed response, just picking things up after holidays) > > I was under an (wrong?) impression that in the majority of use cases > users want to start using their newly added memory right away and that's > what distros will ship. As an alternative to making the feature off by > default I can suggest making CONFIG_MEMORY_HOTPLUG_AUTOONLINE a tristate > switch (no feature, default offline, default online). That what probably would satisfy every distro, only question is why do you need 'no feature', wouldn't 'default offline' cover current state? > > >> --- a/Documentation/kernel-parameters.txt > >> +++ b/Documentation/kernel-parameters.txt > >> @@ -2537,6 +2537,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > >> shutdown the other cpus. Instead use the REBOOT_VECTOR > >> irq. > >> > >> + nomemhp_autoonline Don't automatically online newly added memory. > >> + > > > > This wasn't mentioned in the changelog. Why do we need a boot > > parameter as well as the sysfs knob? if 'default online' policy is set then we need a kernel option to disable auto-onlining at kernel boot time (when it parses ACPI tables for x86) if needed and vice verse for 'default offline' to enable auto-onlining at kernel boot time. For RHEL we would probably use 'default online' policy like we do in RHEL6 with custom patch. > > > > I was thinking about some faulty hardware (e.g. reporting new memory > blocks which for some reason are not really usable) and an easy way to > make such hardware work. > > >> +config MEMORY_HOTPLUG_AUTOONLINE > >> + bool "Automatically online hot-added memory" > >> + depends on MEMORY_HOTPLUG_SPARSE > >> + help > >> + When memory is hot-added, it is not at ready-to-use state, a special > > > > "When memory is hot-added it is not in a ready-to-use state. A special" > > > >> + userspace action is required to online the newly added blocks. With > >> + this option enabled, the kernel will try to online all newly added > >> + memory automatically. > >> + > >> > >> ... > >> >