All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: Kate Stewart <kstewart@linuxfoundation.org>,
	Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Balbir Singh <bsingharora@gmail.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	linux-mm@kvack.org, Pavel Tatashin <pavel.tatashin@microsoft.com>,
	Paul Mackerras <paulus@samba.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Rashmica Gupta <rashmica.g@gmail.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	linux-s390@vger.kernel.org, Michael Neuling <mikey@neuling.org>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Michael Ellerman <mpe@ellerman.id.au>,
	linux-acpi@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
	xen-devel@lists.xenpro
Subject: Re: [PATCH RFC] mm/memory_hotplug: Introduce memory block types
Date: Mon, 1 Oct 2018 11:34:25 +0200	[thread overview]
Message-ID: <d54a8509-725f-f771-72f0-15a9d93e8a49__41534.3772540384$1538386415$gmane$org@redhat.com> (raw)
In-Reply-To: <20181001084038.GD18290@dhcp22.suse.cz>

On 01/10/2018 10:40, Michal Hocko wrote:
> On Fri 28-09-18 17:03:57, David Hildenbrand wrote:
> [...]
> 
> I haven't read the patch itself but I just wanted to note one thing
> about this part
> 
>> For paravirtualized devices it is relevant that memory is onlined as
>> quickly as possible after adding - and that it is added to the NORMAL
>> zone. Otherwise, it could happen that too much memory in a row is added
>> (but not onlined), resulting in out-of-memory conditions due to the
>> additional memory for "struct pages" and friends. MOVABLE zone as well
>> as delays might be very problematic and lead to crashes (e.g. zone
>> imbalance).
> 
> I have proposed (but haven't finished this due to other stuff) a
> solution for this. Newly added memory can host memmaps itself and then
> you do not have the problem in the first place. For vmemmap it would
> have an advantage that you do not really have to beg for 2MB pages to
> back the whole section but you would get it for free because the initial
> part of the section is by definition properly aligned and unused.

So the plan is to "host metadata for new memory on the memory itself".
Just want to note that this is basically impossible for s390x with the
current mechanisms. (added memory is dead, until onlining notifies the
hypervisor and memory is allocated). It will also be problematic for
paravirtualized memory devices (e.g. XEN's "not backed by the
hypervisor" hacks).

This would only be possible for memory DIMMs, memory that is completely
accessible as far as I can see. Or at least, some specified "first part"
is accessible.

Other problems are other metadata like extended struct pages and friends.

(I really like the idea of adding memory without allocating memory in
the hypervisor in the first place, please keep me tuned).

And please note: This solves some problematic part ("adding too much
memory to the movable zone or not onlining it"), but not the issue of
zone imbalance in the first place. And not one issue I try to tackle
here: don't add paravirtualized memory to the movable zone.

> 
> I yet have to think about the whole proposal but I am missing the most
> important part. _Who_ is going to use the new exported information and
> for what purpose. You said that distributions have hard time to
> distinguish different types of onlinining policies but isn't this
> something that is inherently usecase specific?
> 

Let's think about a distribution. We have a clash of use cases here
(just what you describe). What I propose solves one part of it ("handle
what you know how to handle right in the kernel").

1. Users of DIMMs usually expect that they can be unplugged again. That
is why you want to control how to online memory in user space (== add it
to the movable zone).

2. Users of standby memory (s390) expect that memory will never be
onlined automatically. It will be onlined manually.

3. Users of paravirtualized devices (esp. Hyper-V) don't care about
memory unplug in the sense of MOVABLE at all. They (or Hyper-V!) will
add a whole bunch of memory and expect that everything works fine. So
that memory is onlined immediately and that memory is added to the
NORMAL zone. Users never want the MOVABLE zone.

1. is a reason why distributions usually don't configure
"MEMORY_HOTPLUG_DEFAULT_ONLINE", because you really want the option for
MOVABLE zone. That however implies, that e.g. for x86, you have to
handle all new memory in user space, especially also HyperV memory.
There, you then have to check for things like "isHyperV()" to decide
"oh, yes, this should definitely not go to the MOVABLE zone".

As you know, I am working on virtio-mem, which can basically be combined
with 1 or 2. And user space has no idea about the difference between
added memory blocks. Was it memory from a DIMM (== ZONE_MOVABLE)? Was it
memory from a paravirtualized device (== ZONE_NORMAL)? Was it standby
memory? (don't online)


That part, I try to solve with this interface.

To answer your question: User space will only care about "normal" memory
and then decide how to online it (for now, usually MOVABLE, because
that's what customers expect with DIMMs). The use case of DIMMS, we
don't know and therefore we can't expose. The use case of the other
cases, we know exactly already in the kernel.

Existing user space hacks will continue to work but can be replaces by a
new check against "normal" memory block types.

Thanks for looking into this!

-- 

Thanks,

David / dhildenb

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2018-10-01  9:34 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-28 15:03 [PATCH RFC] mm/memory_hotplug: Introduce memory block types David Hildenbrand
2018-09-28 15:03 ` David Hildenbrand
2018-09-28 15:03 ` David Hildenbrand
2018-09-28 17:02 ` Dave Hansen
2018-09-28 17:02   ` Dave Hansen
2018-09-28 17:02   ` Dave Hansen
2018-10-01  9:13   ` David Hildenbrand
2018-10-01  9:13   ` David Hildenbrand
2018-10-01  9:13     ` David Hildenbrand
2018-10-01  9:13     ` David Hildenbrand
2018-10-01 16:24     ` Dave Hansen
2018-10-01 16:24     ` Dave Hansen
2018-10-01 16:24       ` Dave Hansen
2018-10-01 16:24       ` Dave Hansen
2018-10-04  7:48       ` David Hildenbrand
2018-10-04  7:48       ` David Hildenbrand
2018-10-04  7:48         ` David Hildenbrand
2018-10-04  7:48         ` David Hildenbrand
2018-09-28 17:02 ` Dave Hansen
2018-10-01  8:40 ` Michal Hocko
2018-10-01  8:40   ` Michal Hocko
2018-10-01  8:40   ` Michal Hocko
2018-10-01  9:34   ` David Hildenbrand
2018-10-01  9:34     ` David Hildenbrand
2018-10-01  9:34     ` David Hildenbrand
2018-10-02 13:47     ` Michal Hocko
2018-10-02 13:47     ` Michal Hocko
2018-10-02 13:47       ` Michal Hocko
2018-10-02 13:47       ` Michal Hocko
2018-10-02 15:25       ` David Hildenbrand
2018-10-02 15:25       ` David Hildenbrand
2018-10-02 15:25         ` David Hildenbrand
2018-10-02 15:25         ` David Hildenbrand
2018-10-03 13:38         ` Vitaly Kuznetsov
2018-10-03 13:38         ` Vitaly Kuznetsov
2018-10-03 13:38           ` Vitaly Kuznetsov
2018-10-03 13:38           ` Vitaly Kuznetsov
2018-10-03 13:44           ` Michal Hocko
2018-10-03 13:44           ` Michal Hocko
2018-10-03 13:44             ` Michal Hocko
2018-10-03 13:44             ` Michal Hocko
2018-10-03 13:52             ` Vitaly Kuznetsov
2018-10-03 13:52               ` Vitaly Kuznetsov
2018-10-03 13:52               ` Vitaly Kuznetsov
2018-10-03 14:07               ` Dave Hansen
2018-10-03 14:07                 ` Dave Hansen
2018-10-03 14:07                 ` Dave Hansen
2018-10-03 14:34                 ` Vitaly Kuznetsov
2018-10-03 14:34                 ` Vitaly Kuznetsov
2018-10-03 14:34                   ` Vitaly Kuznetsov
2018-10-03 14:34                   ` Vitaly Kuznetsov
2018-10-03 17:14                   ` David Hildenbrand
2018-10-03 17:14                     ` David Hildenbrand
2018-10-03 17:14                     ` David Hildenbrand
2018-10-04  6:19                     ` Michal Hocko
2018-10-04  6:19                       ` Michal Hocko
2018-10-04  6:19                       ` Michal Hocko
2018-10-04  8:13                       ` David Hildenbrand
2018-10-04  8:13                       ` David Hildenbrand
2018-10-04  8:13                         ` David Hildenbrand
2018-10-04  8:13                         ` David Hildenbrand
2018-10-04 15:28                         ` Michal Suchánek
2018-10-04 15:28                         ` Michal Suchánek
2018-10-04 15:28                           ` Michal Suchánek
2018-10-04 15:28                           ` Michal Suchánek
2018-10-04 15:45                           ` David Hildenbrand
2018-10-04 15:45                           ` David Hildenbrand
2018-10-04 15:45                             ` David Hildenbrand
2018-10-04 15:45                             ` David Hildenbrand
2018-10-04 17:50                             ` Michal Suchánek
2018-10-04 17:50                               ` Michal Suchánek
2018-10-04 17:50                               ` Michal Suchánek
2018-10-05  7:37                               ` David Hildenbrand
2018-10-05  7:37                                 ` David Hildenbrand
2018-10-05  7:37                                 ` David Hildenbrand
2018-10-05  7:37                               ` David Hildenbrand
2018-10-04 17:50                             ` Michal Suchánek
2018-10-04  6:19                     ` Michal Hocko
2018-10-03 17:14                   ` David Hildenbrand
2018-10-03 14:07               ` Dave Hansen
2018-10-03 14:24               ` Michal Hocko
2018-10-03 14:24               ` Michal Hocko
2018-10-03 14:24                 ` Michal Hocko
2018-10-03 14:24                 ` Michal Hocko
2018-10-03 17:06                 ` David Hildenbrand
2018-10-03 17:06                 ` David Hildenbrand
2018-10-03 17:06                   ` David Hildenbrand
2018-10-03 17:06                   ` David Hildenbrand
2018-10-04  8:12                 ` David Hildenbrand
2018-10-04  8:12                 ` David Hildenbrand
2018-10-04  8:12                   ` David Hildenbrand
2018-10-04  8:12                   ` David Hildenbrand
2018-10-03 13:52             ` Vitaly Kuznetsov
2018-10-03 13:54         ` Michal Hocko
2018-10-03 13:54         ` Michal Hocko
2018-10-03 13:54           ` Michal Hocko
2018-10-03 13:54           ` Michal Hocko
2018-10-03 17:00           ` David Hildenbrand
2018-10-03 17:00             ` David Hildenbrand
2018-10-03 17:00             ` David Hildenbrand
2018-10-04  6:28             ` Michal Hocko
2018-10-04  6:28               ` Michal Hocko
2018-10-04  6:28               ` Michal Hocko
2018-10-04  7:40               ` David Hildenbrand
2018-10-04  7:40                 ` David Hildenbrand
2018-10-04  7:40                 ` David Hildenbrand
2018-10-04  7:40               ` David Hildenbrand
2018-10-04  6:28             ` Michal Hocko
2018-10-03 17:00           ` David Hildenbrand
2018-10-01  9:34   ` David Hildenbrand [this message]
2018-10-01  8:40 ` Michal Hocko
2018-11-23 11:13 ` David Hildenbrand
2018-11-23 11:13   ` David Hildenbrand
2018-11-23 11:13   ` David Hildenbrand
2018-11-23 18:06   ` Michal Suchánek
2018-11-23 18:06   ` Michal Suchánek
2018-11-23 18:06     ` Michal Suchánek
2018-11-23 18:06     ` Michal Suchánek
2018-11-26 12:30     ` David Hildenbrand
2018-11-26 12:30       ` David Hildenbrand
2018-11-26 12:30       ` David Hildenbrand
2018-11-26 13:33       ` David Hildenbrand
2018-11-26 13:33         ` David Hildenbrand
2018-11-26 13:33         ` David Hildenbrand
2018-11-26 14:20         ` Michal Suchánek
2018-11-26 14:20           ` Michal Suchánek
2018-11-26 14:20           ` Michal Suchánek
2018-11-26 15:59           ` David Hildenbrand
2018-11-26 15:59           ` David Hildenbrand
2018-11-26 15:59             ` David Hildenbrand
2018-11-26 15:59             ` David Hildenbrand
2018-11-27 16:32             ` Michal Suchánek
2018-11-27 16:32             ` Michal Suchánek
2018-11-27 16:32               ` Michal Suchánek
2018-11-27 16:32               ` Michal Suchánek
2018-11-27 16:47               ` David Hildenbrand
2018-11-27 16:47               ` David Hildenbrand
2018-11-27 16:47                 ` David Hildenbrand
2018-11-27 16:47                 ` David Hildenbrand
2018-11-26 14:20         ` Michal Suchánek
2018-11-26 13:33       ` David Hildenbrand
2018-11-26 12:30     ` David Hildenbrand
2018-11-23 11:13 ` David Hildenbrand
  -- strict thread matches above, loose matches on Subject: below --
2018-09-28 15:03 David Hildenbrand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='d54a8509-725f-f771-72f0-15a9d93e8a49__41534.3772540384$1538386415$gmane$org@redhat.com' \
    --to=david@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bsingharora@gmail.com \
    --cc=dalias@libc.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hpa@zytor.com \
    --cc=kstewart@linuxfoundation.org \
    --cc=kys@microsoft.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=mhocko@kernel.org \
    --cc=mikey@neuling.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=pavel.tatashin@microsoft.com \
    --cc=peterz@infradead.org \
    --cc=rashmica.g@gmail.com \
    --cc=sthemmin@microsoft.com \
    --cc=xen-devel@lists.xenpro \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.