[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] docs: clarify xl mem-max semantics



On 01/23/2017 02:49 AM, Juergen Gross wrote:
The information given in the xl man page for the mem-max command is
rather brief. Expand it in order to let the reader understand what it
is really doing.

As the related libxl function libxl_domain_setmaxmem() isn't much
clearer add a comment to it explaining the desired semantics.

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
V2: rewording as suggested by Jim Fehlig and Ian Jackson
---
 docs/man/xl.pod.1.in | 10 ++++++++++
 tools/libxl/libxl.c  |  6 ++++++
 2 files changed, 16 insertions(+)

diff --git a/docs/man/xl.pod.1.in b/docs/man/xl.pod.1.in
index 09c1faa..7caed08 100644
--- a/docs/man/xl.pod.1.in
+++ b/docs/man/xl.pod.1.in
@@ -401,6 +401,16 @@ for bytes.
 The mem-max value may not correspond to the actual memory used in the
 domain, as it may balloon down its memory to give more back to the OS.

+The value given just sets the memory amount the domain is allowed to allocate
+in the hypervisor. It can't be set lower than the current reservation, but
+it is allowed to be higher than the configured maximum memory size of the
+domain (B<maxmem> parameter in the domain's configuration). Using B<xl mem-max>
+to set the maximum memory above the initial B<maxmem> value will not allow the
+additional memory to be used via B<xl mem-set>. The initial B<maxmem> value is
+still used as an upper limit for B<xl mem-set>.
+
+The domain is not receiving any signal regarding the changed memory limit.
+
 =item B<mem-set> I<domain-id> I<mem>

 Set the domain's used memory using the balloon driver; append 't' for
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 0622311..ed59510 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -4018,6 +4018,12 @@ out:

 
/******************************************************************************/

+/*
+ * Set the maximum memory size of the domain in the hypervisor. There is no
+ * change of the current memory size involved. The allowed memory size can

s/allowed/specified/ ? Or perhaps "The value of max_memkb can even..." ? Sorry I didn't look closely at this hunk in V1.

+ * even be above the configured maxmem size of the domain, but the related
+ * Xenstore entry memory/static-max isn't modified!
+ */
 int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint64_t max_memkb)
 {
     GC_INIT(ctx);

I have a related question for you (or Ian, Wei, ...): What does max_pages (as seen with 'q' debug key') represent? How is it related to memory/static-max in xenstore, if at all?

When a domain is running, libvirt reports maximum memory through max_memkb field of libxl_dominfo struct. max_memkb is filled with PAGE_TO_MEMKB(xcinfo->max_pages). AFAICT, xcinfo->max_pages contains the same value as max_pages from 'q' debug key, but neither of those represent the maxmem value used at domain creation. E.g.

# cat test.xl | grep mem
maxmem = 8192
memory = 2048
# xl create test.xl
# xl debug-key q && xl dmesg | grep max_pages
(XEN) nr_pages=524205 xenheap_pages=6 shared_pages=0 paged_pages=0 dirty_cpus={20,42} max_pages=524544

On this system, 524544*4096=2049M which is closer to 'memory' than 'maxmem'.

I have a patch which fixes this in libvirt, but I'm having a hard time articulating why the current use of max_pages is incorrect :-).

TIA for any comments you might have on that.

Regards,
Jim


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.