qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Krempa <pkrempa@redhat.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: imammedo@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/2] docs: add memory-hotplug.txt
Date: Mon, 2 Mar 2015 15:52:48 +0100	[thread overview]
Message-ID: <20150302145248.GM681446@andariel.home> (raw)
In-Reply-To: <1424980156-25556-3-git-send-email-lcapitulino@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 4150 bytes --]

On Thu, Feb 26, 2015 at 14:49:16 -0500, Luiz Capitulino wrote:
> This document describes how to use memory hotplug in QEMU.
> 
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
>  docs/memory-hotplug.txt | 77 +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 77 insertions(+)
>  create mode 100644 docs/memory-hotplug.txt
> 
> diff --git a/docs/memory-hotplug.txt b/docs/memory-hotplug.txt
> new file mode 100644
> index 0000000..e821449
> --- /dev/null
> +++ b/docs/memory-hotplug.txt
> @@ -0,0 +1,77 @@
> +QEMU memory hotplug
> +===================
> +
> +This document explains how to use the memory hotplug feature in QEMU,
> +which is present since v2.1.0.
> +
> +Please, note that memory hot unplug is not supported yet. This means
> +that you're able to add memory, but you're not able to remove it.
> +Also, proper proper guest support is required for memory hotplug
> +to work.
> +
> +Basic RAM hotplug
> +-----------------
> +
> +In order to be able to hotplug memory, QEMU has to be told how many
> +hotpluggable memory slots to create and what is the maximum amount of
> +memory the guest can grow. This is done at startup time by means of
> +the -m command-line option, which has the following format:
> +
> + -m [size=]megs[,slots=n,maxmem=size]
> +
> +Where,
> +
> + - "megs" is the startup RAM. It is the RAM the guest will boot with
> + - "slots" is the number of hotpluggable memory slots

Limit is 256 IIRC.

> + - "maxmem" is the maximum RAM size the guest can grow

And this has to be aligned properly (see reply to 1/2).

> +
> +For example, the following command-line:
> +
> + qemu [...] 1G,slots=3,maxmem=4G
> +
> +Creates a guest with 1GB of memory and three hotpluggable memory slots.
> +The hotpluggable memory slots are empty when the guest is booted, so all
> +memory the guest will see after boot is 1GB. The maximum memory the
> +guest can reach is 4GB. This means that three additional gigas can be
> +hotplugged by using any combination of the available memory slots.
> +
> +Two monitor commands are used to hotplug memory:
> +
> + - "object_add": creates a memory backend object
> + - "device_add": creates the front-end pc-dimm device and inserts it
> +                 into an empty slot
> +
> +For example, the following commands add another 1GB to the guest
> +discussed earlier:
> +
> +  (qemu) object_add memory-backend-ram,id=mem1,size=1G

The size here is also checked for alignment AFAIK. Also a sane minimum
for linux guests is 128MiB.

> +  (qemu) device_add pc-dimm,id=dimm1,memdev=mem1
> +
> +Using the file backend
> +----------------------
> +
> +Besides basic RAM hotplug, QEMU also supports using files as a memory
> +backend. This is useful for using hugetlbfs in Linux, which provides
> +access to bigger page sizes.
> +
> +For example, assuming that the host has 1GB hugepages available in
> +the /mnt/hugepages-1GB directory, a 1GB hugepage could be hotplugged
> +into the guest from the previous section with the following commnands:
> +
> +  (qemu) object_add memory-backend-file,id=mem1,size=1G,mem-path=/mnt/hugepages-1GB
> +  (qemu) device_add pc-dimm,id=dimm1,memdev=mem1
> +
> +It's also possible to start a guest with memory plugged into the
> +hotpluggable memory slots. This might seem counterintuitive at first,
> +but this allows for a lot of flexibility when using the file backend.
> +
> +In the following command-line example, a 8GB guest is created where 6GB
> +comes from regular RAM, 1GB is a 1GB hugepage page and 256MB is from
> +2MB pages. Also, the guest has additional memory slots to hotplug more
> +2GB if needed:
> +
> + qemu [...] -m 6GB,slots=4,maxmem=10G \
> +   -object memory-backend-file,id=mem1,size=1G,mem-path=/mnt/hugepages-1G \
> +   -device pc-dimm,id=dimm1,memdev=mem1 \
> +   -object memory-backend-file,id=mem2,size=256M,mem-path=/mnt/hugepages-2MB \
> +   -device pc-dimm,id=dimm2,memdev=mem2

Otherwise a very helpful text :). Shame that it wasn't available sooner
I had to figure out the details myself.

Peter

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2015-03-02 14:53 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-26 19:49 [Qemu-devel] [PATCH 0/2] improve memory hotplug documentation Luiz Capitulino
2015-02-26 19:49 ` [Qemu-devel] [PATCH 1/2] qemu-options.hx: improve -m description Luiz Capitulino
2015-03-02 14:50   ` Peter Krempa
2015-03-02 15:03     ` Igor Mammedov
2015-02-26 19:49 ` [Qemu-devel] [PATCH 2/2] docs: add memory-hotplug.txt Luiz Capitulino
2015-02-26 20:54   ` Eric Blake
2015-03-02  9:59   ` Paulo Ricardo Paz Vital
2015-03-02 21:51     ` Luiz Capitulino
2015-03-02 14:52   ` Peter Krempa [this message]
2015-03-02 15:06     ` Igor Mammedov
  -- strict thread matches above, loose matches on Subject: below --
2015-03-02 22:14 [Qemu-devel] [PATCH v2 0/2] improve memory hotplug documentation Luiz Capitulino
2015-03-02 22:14 ` [Qemu-devel] [PATCH 2/2] docs: add memory-hotplug.txt Luiz Capitulino
2015-03-03 13:20   ` Igor Mammedov
2015-03-03 14:32     ` Luiz Capitulino
2015-03-03 17:40   ` Eric Blake
2015-03-03 17:57     ` Luiz Capitulino
2015-03-03 14:47 [Qemu-devel] [PATCH v3 0/2] improve memory hotplug documentation Luiz Capitulino
2015-03-03 14:47 ` [Qemu-devel] [PATCH 2/2] docs: add memory-hotplug.txt Luiz Capitulino
2015-03-03 15:12   ` Paulo Ricardo Paz Vital
2015-03-03 16:16     ` Luiz Capitulino
2015-03-04  8:16       ` Paulo Ricardo Paz Vital
2015-03-04 15:50         ` Luiz Capitulino
2015-03-04 12:04   ` Igor Mammedov
2015-03-04 17:00   ` Paulo Ricardo Paz Vital

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=20150302145248.GM681446@andariel.home \
    --to=pkrempa@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).