From: Liang Li <liang.z.li@intel.com>
To: kvm@vger.kernel.org
Cc: virtio-dev@lists.oasis-open.org, qemu-devel@nongnu.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, amit.shah@redhat.com,
dave.hansen@intel.com, cornelia.huck@de.ibm.com,
pbonzini@redhat.com, mst@redhat.com, david@redhat.com,
aarcange@redhat.com, dgilbert@redhat.com, quintela@redhat.com,
Liang Li <liang.z.li@intel.com>
Subject: [PATCH v6 kernel 0/5] Extend virtio-balloon for fast (de)inflating & fast live migration
Date: Wed, 21 Dec 2016 14:52:23 +0800 [thread overview]
Message-ID: <1482303148-22059-1-git-send-email-liang.z.li@intel.com> (raw)
This patch set contains two parts of changes to the virtio-balloon.
One is the change for speeding up the inflating & deflating process,
the main idea of this optimization is to use {pfn|length} to present
the page information instead of the PFNs, to reduce the overhead of
virtio data transmission, address translation and madvise(). This can
help to improve the performance by about 85%.
Another change is for speeding up live migration. By skipping process
guest's unused pages in the first round of data copy, to reduce needless
data processing, this can help to save quite a lot of CPU cycles and
network bandwidth. We put guest's unused page information in a
{pfn|length} array and send it to host with the virt queue of
virtio-balloon. For an idle guest with 8GB RAM, this can help to shorten
the total live migration time from 2Sec to about 500ms in 10Gbps network
environment. For an guest with quite a lot of page cache and with little
unused pages, it's possible to let the guest drop it's page cache before
live migration, this case can benefit from this new feature too.
Changes from v5 to v6:
* Drop the bitmap from the virtio ABI, use {pfn|length} only.
* Enhance the API to get the unused page information from mm.
Changes from v4 to v5:
* Drop the code to get the max_pfn, use another way instead.
* Simplify the API to get the unused page information from mm.
Changes from v3 to v4:
* Use the new scheme suggested by Dave Hansen to encode the bitmap.
* Add code which is missed in v3 to handle migrate page.
* Free the memory for bitmap intime once the operation is done.
* Address some of the comments in v3.
Changes from v2 to v3:
* Change the name of 'free page' to 'unused page'.
* Use the scatter & gather bitmap instead of a 1MB page bitmap.
* Fix overwriting the page bitmap after kicking.
* Some of MST's comments for v2.
Changes from v1 to v2:
* Abandon the patch for dropping page cache.
* Put some structures to uapi head file.
* Use a new way to determine the page bitmap size.
* Use a unified way to send the free page information with the bitmap
* Address the issues referred in MST's comments
Liang Li (5):
virtio-balloon: rework deflate to add page to a list
virtio-balloon: define new feature bit and head struct
virtio-balloon: speed up inflate/deflate process
virtio-balloon: define flags and head for host request vq
virtio-balloon: tell host vm's unused page info
drivers/virtio/virtio_balloon.c | 510 ++++++++++++++++++++++++++++++++----
include/linux/mm.h | 3 +
include/uapi/linux/virtio_balloon.h | 34 +++
mm/page_alloc.c | 120 +++++++++
4 files changed, 621 insertions(+), 46 deletions(-)
--
1.9.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2016-12-21 6:58 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-21 6:52 Liang Li [this message]
2016-12-21 6:52 ` [PATCH v6 kernel 1/5] virtio-balloon: rework deflate to add page to a list Liang Li
2016-12-21 6:52 ` [PATCH v6 kernel 2/5] virtio-balloon: define new feature bit and head struct Liang Li
2017-01-12 19:43 ` Michael S. Tsirkin
2017-01-13 9:24 ` [virtio-dev] " Li, Liang Z
2017-01-17 19:11 ` Michael S. Tsirkin
2017-01-18 1:55 ` Li, Liang Z
2017-01-18 15:30 ` Michael S. Tsirkin
2017-01-19 1:30 ` Li, Liang Z
2016-12-21 6:52 ` [PATCH v6 kernel 3/5] virtio-balloon: speed up inflate/deflate process Liang Li
2017-01-17 19:15 ` Michael S. Tsirkin
2017-01-18 4:56 ` Li, Liang Z
2017-01-18 15:30 ` Michael S. Tsirkin
2017-01-19 1:44 ` Li, Liang Z
2017-01-20 16:34 ` Michael S. Tsirkin
2017-01-20 11:48 ` Dr. David Alan Gilbert
2017-02-04 4:35 ` Li, Liang Z
2016-12-21 6:52 ` [PATCH v6 kernel 4/5] virtio-balloon: define flags and head for host request vq Liang Li
2016-12-21 6:52 ` [PATCH v6 kernel 5/5] virtio-balloon: tell host vm's unused page info Liang Li
2017-01-10 6:43 ` [PATCH v6 kernel 0/5] Extend virtio-balloon for fast (de)inflating & fast live migration Li, Liang Z
2017-01-18 10:09 ` David Hildenbrand
2017-01-18 13:29 ` Li, Liang Z
2017-01-18 15:38 ` Michael S. Tsirkin
2017-01-19 17:24 ` 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=1482303148-22059-1-git-send-email-liang.z.li@intel.com \
--to=liang.z.li@intel.com \
--cc=aarcange@redhat.com \
--cc=amit.shah@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=dave.hansen@intel.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=kvm@vger.kernel.org \
--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=virtio-dev@lists.oasis-open.org \
--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).