[libvirt] [PATCH v3 5/5] qemu: Introduce memoryBacking/discard
Ján Tomko
jtomko at redhat.com
Thu Apr 19 16:22:49 UTC 2018
On Thu, Apr 19, 2018 at 04:00:27PM +0200, Michal Privoznik wrote:
>https://bugzilla.redhat.com/show_bug.cgi?id=1480668
>
>QEMU has this new feature memory-backend-file.discard-data=yes
>which is a nifty optimization. Basically, when qemu is quitting
>or on memory hotplug it calls munmap() and close() on the file
>that is backing the memory. However, this does not mean kernel
>won't stop touching that part of memory. It still might. With
>this feature enabled we tell kernel: "we don't need this memory
>nor data stored in it". This makes kernel drop the memory
>immediately without trying to sync memory with the mapped file.
>
>Unfortunately, this cannot be turned on by default because we
>can't be sure when users really don't care about what happens to
>data after qemu dies. So it has to be opt-in. As usual, there are
>three places where one can configure memory attributes. This
>patch adds the feature to all of them.
>
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> docs/formatdomain.html.in | 40 +++++++++++++++++++++++++---
> docs/schemas/cputypes.rng | 5 ++++
> docs/schemas/domaincommon.rng | 10 +++++++
> src/conf/domain_conf.c | 39 +++++++++++++++++++++++++--
> src/conf/domain_conf.h | 3 +++
> src/conf/numa_conf.c | 27 +++++++++++++++++++
> src/conf/numa_conf.h | 3 +++
> src/libvirt_private.syms | 1 +
> src/qemu/qemu_command.c | 27 ++++++++++++++++---
> tests/qemuxml2argvdata/hugepages-pages7.args | 3 ++-
> tests/qemuxml2argvdata/hugepages-pages7.xml | 4 +--
> tests/qemuxml2argvtest.c | 3 ++-
> 12 files changed, 152 insertions(+), 13 deletions(-)
>
>diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
>index 5e99884dc5..d40536d06f 100644
>--- a/docs/formatdomain.html.in
>+++ b/docs/formatdomain.html.in
>@@ -1016,6 +1016,7 @@
> <source type="file|anonymous"/>
> <access mode="shared|private"/>
> <allocation mode="immediate|ondemand"/>
>+ <discard/>
> </memoryBacking>
> ...
> </domain>
>@@ -1063,11 +1064,21 @@
> suitable for the specific environment at the same time to mitigate
> the risks described above. <span class="since">Since 1.0.6</span></dd>
> <dt><code>source</code></dt>
>- <dd>In this attribute you can switch to file memorybacking or keep default anonymous.</dd>
>+ <dd>In this attribute you can switch to file memorybacking or keep
>+ default anonymous.</dd>
> <dt><code>access</code></dt>
>- <dd>Specify if memory is shared or private. This can be overridden per numa node by <code>memAccess</code></dd>
>+ <dd>Specify if memory is shared or private. This can be overridden per
>+ numa node by <code>memAccess</code></dd>
> <dt><code>allocation</code></dt>
Unrelated trivial changes can be pushed separately.
> <dd>Specify when allocate the memory</dd>
>+ <dt><code>discard</code></dt>
>+ <dd>When set an supported by hypervisor the memory
s/an/and/
>+ content is discarded just before guest shuts down (or
>+ when DIMM module is unplugged). Please note that this is
>+ just an optimization and is not guaranteed to work in
>+ all cases (e.g. when hypervisor crashes).
>+ <span class="since">Since 4.3.0</span> (QEMU/KVM only)
>+ </dd>
> </dl>
>
>
>@@ -1606,7 +1617,7 @@
> <cpu>
> ...
> <numa>
>- <cell id='0' cpus='0-3' memory='512000' unit='KiB'/>
>+ <cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/>
> <cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/>
> </numa>
> ...
>@@ -1632,6 +1643,13 @@
> <code>memAccess</code> can control whether the memory is to be
> mapped as "shared" or "private". This is valid only for
> hugepages-backed memory and nvdimm modules.
>+
>+ Each <code>cell</code> element can have an optional
>+ attribute <code>discard</code> which fine tunes the discard
'optional discard attribute' sounds better to me than 'optional
attribute discard', but it doesn't matter
>+ feature for given numa node as described under
>+ <a href="#elementsMemoryBacking">Memory Backing</a>.
>+ Accepted values are <code>yes</code> and <code>no</code>.
>+ <span class='since'>Since 4.3.0</span>
> </p>
>
> <p>
The rest looks good to me, but you might want Peter's opinion as well.
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180419/fdb698c9/attachment-0001.sig>
More information about the libvir-list
mailing list