From: "Daniel P. Berrangé" <berrange@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Marcel Apfelbaum" <mapfelba@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Greg Kurz" <groug@kaod.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Murilo Opsfelder Araujo" <muriloo@linux.ibm.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Nitesh Lal" <nilal@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH v7 09/15] util/mmap-alloc: Support RAM_NORESERVE via MAP_NORESERVE under Linux
Date: Tue, 4 May 2021 11:09:58 +0100 [thread overview]
Message-ID: <YJEddjCsFgXa4tiR@redhat.com> (raw)
In-Reply-To: <20210428133754.10713-10-david@redhat.com>
On Wed, Apr 28, 2021 at 03:37:48PM +0200, David Hildenbrand wrote:
> Let's support RAM_NORESERVE via MAP_NORESERVE on Linux. The flag has no
> effect on most shared mappings - except for hugetlbfs and anonymous memory.
>
> Linux man page:
> "MAP_NORESERVE: Do not reserve swap space for this mapping. When swap
> space is reserved, one has the guarantee that it is possible to modify
> the mapping. When swap space is not reserved one might get SIGSEGV
> upon a write if no physical memory is available. See also the discussion
> of the file /proc/sys/vm/overcommit_memory in proc(5). In kernels before
> 2.6, this flag had effect only for private writable mappings."
>
> Note that the "guarantee" part is wrong with memory overcommit in Linux.
>
> Also, in Linux hugetlbfs is treated differently - we configure reservation
> of huge pages from the pool, not reservation of swap space (huge pages
> cannot be swapped).
>
> The rough behavior is [1]:
> a) !Hugetlbfs:
>
> 1) Without MAP_NORESERVE *or* with memory overcommit under Linux
> disabled ("/proc/sys/vm/overcommit_memory == 2"), the following
> accounting/reservation happens:
> For a file backed map
> SHARED or READ-only - 0 cost (the file is the map not swap)
> PRIVATE WRITABLE - size of mapping per instance
>
> For an anonymous or /dev/zero map
> SHARED - size of mapping
> PRIVATE READ-only - 0 cost (but of little use)
> PRIVATE WRITABLE - size of mapping per instance
>
> 2) With MAP_NORESERVE, no accounting/reservation happens.
>
> b) Hugetlbfs:
>
> 1) Without MAP_NORESERVE, huge pages are reserved.
>
> 2) With MAP_NORESERVE, no huge pages are reserved.
>
> Note: With "/proc/sys/vm/overcommit_memory == 0", we were already able
> to configure it for !hugetlbfs globally; this toggle now allows
> configuring it more fine-grained, not for the whole system.
>
> The target use case is virtio-mem, which dynamically exposes memory
> inside a large, sparse memory area to the VM.
Can you explain this use case in more real world terms, as I'm not
understanding what a mgmt app would actually do with this in
practice ?
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2021-05-04 10:28 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-28 13:37 [PATCH v7 00/15] RAM_NORESERVE, MAP_NORESERVE and hostmem "reserve" property David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 01/15] util/mmap-alloc: Factor out calculation of the pagesize for the guard page David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 02/15] util/mmap-alloc: Factor out reserving of a memory region to mmap_reserve() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 03/15] util/mmap-alloc: Factor out activating of memory to mmap_activate() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 04/15] softmmu/memory: Pass ram_flags to qemu_ram_alloc_from_fd() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 05/15] softmmu/memory: Pass ram_flags to memory_region_init_ram_shared_nomigrate() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 06/15] softmmu/memory: Pass ram_flags to qemu_ram_alloc() and qemu_ram_alloc_internal() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 07/15] util/mmap-alloc: Pass flags instead of separate bools to qemu_ram_mmap() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 08/15] memory: Introduce RAM_NORESERVE and wire it up in qemu_ram_mmap() David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 09/15] util/mmap-alloc: Support RAM_NORESERVE via MAP_NORESERVE under Linux David Hildenbrand
2021-05-04 10:09 ` Daniel P. Berrangé [this message]
2021-05-04 10:21 ` David Hildenbrand
2021-05-04 10:32 ` Daniel P. Berrangé
2021-05-04 11:04 ` David Hildenbrand
2021-05-04 11:14 ` Daniel P. Berrangé
2021-05-04 11:28 ` David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 10/15] hostmem: Wire up RAM_NORESERVE via "reserve" property David Hildenbrand
2021-05-04 9:58 ` Paolo Bonzini
2021-05-06 9:25 ` David Hildenbrand
2021-05-04 10:12 ` Daniel P. Berrangé
2021-05-04 11:08 ` David Hildenbrand
2021-05-04 11:18 ` Daniel P. Berrangé
2021-05-04 12:47 ` David Hildenbrand
2021-05-06 9:59 ` David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 11/15] qmp: Clarify memory backend properties returned via query-memdev David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 12/15] qmp: Include "share" property of memory backends David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 13/15] hmp: Print "share" property of memory backends with "info memdev" David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 14/15] qmp: Include "reserve" property of memory backends David Hildenbrand
2021-04-28 13:37 ` [PATCH v7 15/15] hmp: Print "reserve" property of memory backends with "info memdev" 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=YJEddjCsFgXa4tiR@redhat.com \
--to=berrange@redhat.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=groug@kaod.org \
--cc=imammedo@redhat.com \
--cc=mapfelba@redhat.com \
--cc=mst@redhat.com \
--cc=muriloo@linux.ibm.com \
--cc=nilal@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanha@redhat.com \
/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.