From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Liang Li <liang.z.li@intel.com>
Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com,
quintela@redhat.com, linux-kernel@vger.kernel.org,
qemu-devel@nongnu.org, linux-mm@kvack.org, amit.shah@redhat.com,
pbonzini@redhat.com, akpm@linux-foundation.org,
virtualization@lists.linux-foundation.org, rth@twiddle.net
Subject: Re: [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
Date: Thu, 3 Mar 2016 17:46:15 +0000 [thread overview]
Message-ID: <20160303174615.GF2115@work-vm> (raw)
In-Reply-To: <1457001868-15949-1-git-send-email-liang.z.li@intel.com>
* Liang Li (liang.z.li@intel.com) wrote:
> The current QEMU live migration implementation mark the all the
> guest's RAM pages as dirtied in the ram bulk stage, all these pages
> will be processed and that takes quit a lot of CPU cycles.
>
> From guest's point of view, it doesn't care about the content in free
> pages. We can make use of this fact and skip processing the free
> pages in the ram bulk stage, it can save a lot CPU cycles and reduce
> the network traffic significantly while speed up the live migration
> process obviously.
>
> This patch set is the QEMU side implementation.
>
> The virtio-balloon is extended so that QEMU can get the free pages
> information from the guest through virtio.
>
> After getting the free pages information (a bitmap), QEMU can use it
> to filter out the guest's free pages in the ram bulk stage. This make
> the live migration process much more efficient.
Hi,
An interesting solution; I know a few different people have been looking
at how to speed up ballooned VM migration.
I wonder if it would be possible to avoid the kernel changes by
parsing /proc/self/pagemap - if that can be used to detect unmapped/zero
mapped pages in the guest ram, would it achieve the same result?
> This RFC version doesn't take the post-copy and RDMA into
> consideration, maybe both of them can benefit from this PV solution
> by with some extra modifications.
For postcopy to be safe, you would still need to send a message to the
destination telling it that there were zero pages, otherwise the destination
can't tell if it's supposed to request the page from the source or
treat the page as zero.
Dave
>
> Performance data
> ================
>
> Test environment:
>
> CPU: Intel (R) Xeon(R) CPU ES-2699 v3 @ 2.30GHz
> Host RAM: 64GB
> Host Linux Kernel: 4.2.0 Host OS: CentOS 7.1
> Guest Linux Kernel: 4.5.rc6 Guest OS: CentOS 6.6
> Network: X540-AT2 with 10 Gigabit connection
> Guest RAM: 8GB
>
> Case 1: Idle guest just boots:
> ============================================
> | original | pv
> -------------------------------------------
> total time(ms) | 1894 | 421
> --------------------------------------------
> transferred ram(KB) | 398017 | 353242
> ============================================
>
>
> Case 2: The guest has ever run some memory consuming workload, the
> workload is terminated just before live migration.
> ============================================
> | original | pv
> -------------------------------------------
> total time(ms) | 7436 | 552
> --------------------------------------------
> transferred ram(KB) | 8146291 | 361375
> ============================================
>
> Liang Li (4):
> pc: Add code to get the lowmem form PCMachineState
> virtio-balloon: Add a new feature to balloon device
> migration: not set migration bitmap in setup stage
> migration: filter out guest's free pages in ram bulk stage
>
> balloon.c | 30 ++++++++-
> hw/i386/pc.c | 5 ++
> hw/i386/pc_piix.c | 1 +
> hw/i386/pc_q35.c | 1 +
> hw/virtio/virtio-balloon.c | 81 ++++++++++++++++++++++++-
> include/hw/i386/pc.h | 3 +-
> include/hw/virtio/virtio-balloon.h | 17 +++++-
> include/standard-headers/linux/virtio_balloon.h | 1 +
> include/sysemu/balloon.h | 10 ++-
> migration/ram.c | 64 +++++++++++++++----
> 10 files changed, 195 insertions(+), 18 deletions(-)
>
> --
> 1.8.3.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2016-03-03 17:46 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-03 10:44 [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization Liang Li
2016-03-03 10:44 ` [Qemu-devel] [RFC qemu 1/4] pc: Add code to get the lowmem form PCMachineState Liang Li
2016-03-03 10:44 ` [Qemu-devel] [RFC qemu 2/4] virtio-balloon: Add a new feature to balloon device Liang Li
2016-03-03 12:23 ` Cornelia Huck
2016-03-04 2:38 ` Li, Liang Z
2016-03-03 12:56 ` Michael S. Tsirkin
2016-03-04 2:29 ` Li, Liang Z
2016-03-03 10:44 ` [Qemu-devel] [RFC qemu 3/4] migration: not set migration bitmap in setup stage Liang Li
2016-03-03 10:44 ` [Qemu-devel] [RFC qemu 4/4] migration: filter out guest's free pages in ram bulk stage Liang Li
2016-03-03 12:16 ` Cornelia Huck
2016-03-04 2:32 ` Li, Liang Z
2016-03-03 12:45 ` Daniel P. Berrange
2016-03-04 2:43 ` Li, Liang Z
2016-03-03 13:58 ` [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization Roman Kagan
2016-03-04 1:35 ` Li, Liang Z
2016-03-03 17:46 ` Dr. David Alan Gilbert [this message]
2016-03-04 1:52 ` Li, Liang Z
2016-03-04 8:14 ` Roman Kagan
2016-03-04 9:08 ` Li, Liang Z
2016-03-04 10:23 ` Roman Kagan
2016-03-04 14:26 ` Li, Liang Z
2016-03-04 14:45 ` Michael S. Tsirkin
2016-03-04 15:49 ` Li, Liang Z
2016-03-05 19:55 ` Michael S. Tsirkin
2016-03-07 6:49 ` Li, Liang Z
2016-03-07 11:40 ` Michael S. Tsirkin
2016-03-07 15:06 ` Li, Liang Z
2016-03-09 14:28 ` Roman Kagan
2016-03-09 15:27 ` Li, Liang Z
2016-03-09 15:30 ` Michael S. Tsirkin
2016-03-10 1:41 ` Li, Liang Z
2016-03-10 12:29 ` Michael S. Tsirkin
2016-03-09 15:41 ` Michael S. Tsirkin
2016-03-09 17:04 ` Roman Kagan
2016-03-09 17:39 ` Michael S. Tsirkin
2016-03-10 10:21 ` Roman Kagan
2016-03-09 19:38 ` Rik van Riel
2016-03-10 9:30 ` Roman Kagan
2016-03-04 16:24 ` Paolo Bonzini
2016-03-04 18:51 ` Dr. David Alan Gilbert
2016-03-07 5:34 ` Li, Liang Z
2016-03-09 13:22 ` Roman Kagan
2016-03-09 14:19 ` Li, Liang Z
2016-03-09 6:18 ` Li, Liang Z
2016-03-04 7:55 ` Roman Kagan
2016-03-04 8:23 ` Li, Liang Z
2016-03-04 8:35 ` Roman Kagan
2016-03-04 9:08 ` Dr. David Alan Gilbert
2016-03-04 9:12 ` Li, Liang Z
2016-03-04 9:47 ` Michael S. Tsirkin
2016-03-04 10:11 ` Li, Liang Z
2016-03-04 10:36 ` Michael S. Tsirkin
2016-03-04 15:13 ` Li, Liang Z
2016-03-08 14:03 ` Michael S. Tsirkin
2016-03-08 14:17 ` Li, Liang Z
2016-03-04 9:35 ` Roman Kagan
2016-03-08 11:13 ` Amit Shah
2016-03-08 13:11 ` Li, Liang Z
2016-03-10 7:44 ` Li, Liang Z
2016-03-10 7:57 ` Amit Shah
2016-03-10 8:36 ` Li, Liang Z
2016-03-10 11:18 ` Dr. David Alan Gilbert
2016-03-11 2:38 ` Li, Liang Z
2016-03-14 17:03 ` Dr. David Alan Gilbert
2016-03-15 3:31 ` Li, Liang Z
2016-03-15 10:29 ` Michael S. Tsirkin
2016-03-15 11:11 ` Li, Liang Z
2016-03-15 19:55 ` Dr. David Alan Gilbert
2016-03-16 1:20 ` Li, Liang Z
-- strict thread matches above, loose matches on Subject: below --
2016-03-04 9:32 Jitendra Kolhe
2016-03-04 9:36 ` Li, Liang Z
2016-03-08 11:14 ` Amit Shah
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=20160303174615.GF2115@work-vm \
--to=dgilbert@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=amit.shah@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=liang.z.li@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=virtualization@lists.linux-foundation.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).