From: Damian Tometzki <damian.tometzki@icloud.com>
To: Wei Wang <wei.w.wang@intel.com>,
virtio-dev@lists.oasis-open.org, linux-kernel@vger.kernel.org,
qemu-devel@nongnu.org, virtualization@lists.linux-foundation.org,
kvm@vger.kernel.org, linux-mm@kvack.org, mst@redhat.com,
mhocko@kernel.org, akpm@linux-foundation.org,
mawilcox@microsoft.com
Cc: david@redhat.com, cornelia.huck@de.ibm.com,
mgorman@techsingularity.net, aarcange@redhat.com,
amit.shah@redhat.com, pbonzini@redhat.com, willy@infradead.org,
liliang.opensource@gmail.com, yang.zhang.wz@gmail.com,
quan.xu@aliyun.com
Subject: Re: [Qemu-devel] [PATCH v16 0/5] Virtio-balloon Enhancement
Date: Sun, 01 Oct 2017 15:25:27 +0200 [thread overview]
Message-ID: <1506864327.1916.3.camel@icloud.com> (raw)
In-Reply-To: <1506744354-20979-1-git-send-email-wei.w.wang@intel.com>
Hello,
where i can found the patch in git.kernel.org ?
Best regards
Damian
Am Samstag, den 30.09.2017, 12:05 +0800 schrieb Wei Wang:
> This patch series enhances the existing virtio-balloon with the
> following
> new features:
> 1) fast ballooning: transfer ballooned pages between the guest and
> host in
> chunks using sgs, instead of one array each time; and
> 2) free page block reporting: a new virtqueue to report guest free
> pages
> to the host.
>
> The second feature can be used to accelerate live migration of VMs.
> Here
> are some details:
>
> Live migration needs to transfer the VM's memory from the source
> machine
> to the destination round by round. For the 1st round, all the VM's
> memory
> is transferred. From the 2nd round, only the pieces of memory that
> were
> written by the guest (after the 1st round) are transferred. One
> method
> that is popularly used by the hypervisor to track which part of
> memory is
> written is to write-protect all the guest memory.
>
> The second feature enables the optimization of the 1st round memory
> transfer - the hypervisor can skip the transfer of guest free pages
> in the
> 1st round. It is not concerned that the memory pages are used after
> they
> are given to the hypervisor as a hint of the free pages, because they
> will
> be tracked by the hypervisor and transferred in the next round if
> they are
> used and written.
>
> Change Log:
> v15->v16:
> 1) mm: stop reporting the free pfn range if the callback returns
> false;
> 2) mm: move some implementaion of walk_free_mem_block into a function
> to
> make the code layout looks better;
> 3) xbitmap: added some optimizations suggested by Matthew, please
> refer to
> the ChangLog in the xbitmap patch for details.
> 4) xbitmap: added a test suite
> 5) virtio-balloon: bail out with a warning when virtqueue_add_inbuf
> returns
> an error
> 6) virtio-balloon: some small code re-arrangement, e.g. detachinf
> used buf
> from the vq before adding a new buf
>
> v14->v15:
> 1) mm: make the report callback return a bool value - returning 1 to
> stop
> walking through the free page list.
> 2) virtio-balloon: batching sgs of balloon pages till the vq is full
> 3) virtio-balloon: create a new workqueue, rather than using the
> default
> system_wq, to queue the free page reporting work item.
> 4) virtio-balloon: add a ctrl_vq to be a central control plane which
> will
> handle all the future control related commands between the host and
> guest.
> Add free page report as the first feature controlled under ctrl_vq,
> and
> the free_page_vq is a data plane vq dedicated to the transmission of
> free
> page blocks.
>
> v13->v14:
> 1) xbitmap: move the code from lib/radix-tree.c to lib/xbitmap.c.
> 2) xbitmap: consolidate the implementation of xb_bit_set/clear/test
> into
> one xb_bit_ops.
> 3) xbitmap: add documents for the exported APIs.
> 4) mm: rewrite the function to walk through free page blocks.
> 5) virtio-balloon: when reporting a free page blcok to the device, if
> the
> vq is full (less likey to happen in practice), just skip reporting
> this
> block, instead of busywaiting till an entry gets released.
> 6) virtio-balloon: fail the probe function if adding the signal buf
> in
> init_vqs fails.
>
> v12->v13:
> 1) mm: use a callback function to handle the the free page blocks
> from the
> report function. This avoids exposing the zone internal to a kernel
> module.
> 2) virtio-balloon: send balloon pages or a free page block using a
> single
> sg each time. This has the benefits of simpler implementation with no
> new
> APIs.
> 3) virtio-balloon: the free_page_vq is used to report free pages only
> (no
> multiple usages interleaving)
> 4) virtio-balloon: Balloon pages and free page blocks are sent via
> input
> sgs, and the completion signal to the host is sent via an output sg.
>
> v11->v12:
> 1) xbitmap: use the xbitmap from Matthew Wilcox to record ballooned
> pages.
> 2) virtio-ring: enable the driver to build up a desc chain using
> vring
> desc.
> 3) virtio-ring: Add locking to the existing START_USE() and END_USE()
> macro to lock/unlock the vq when a vq operation starts/ends.
> 4) virtio-ring: add virtqueue_kick_sync() and virtqueue_kick_async()
> 5) virtio-balloon: describe chunks of ballooned pages and free pages
> blocks directly using one or more chains of desc from the vq.
>
> v10->v11:
> 1) virtio_balloon: use vring_desc to describe a chunk;
> 2) virtio_ring: support to add an indirect desc table to virtqueue;
> 3) virtio_balloon: use cmdq to report guest memory statistics.
>
> v9->v10:
> 1) mm: put report_unused_page_block() under CONFIG_VIRTIO_BALLOON;
> 2) virtio-balloon: add virtballoon_validate();
> 3) virtio-balloon: msg format change;
> 4) virtio-balloon: move miscq handling to a task on
> system_freezable_wq;
> 5) virtio-balloon: code cleanup.
>
> v8->v9:
> 1) Split the two new features, VIRTIO_BALLOON_F_BALLOON_CHUNKS and
> VIRTIO_BALLOON_F_MISC_VQ, which were mixed together in the previous
> implementation;
> 2) Simpler function to get the free page block.
>
> v7->v8:
> 1) Use only one chunk format, instead of two.
> 2) re-write the virtio-balloon implementation patch.
> 3) commit changes
> 4) patch re-org
>
> Matthew Wilcox (2):
> lib/xbitmap: Introduce xbitmap
> radix tree test suite: add tests for xbitmap
>
> Wei Wang (3):
> virtio-balloon: VIRTIO_BALLOON_F_SG
> mm: support reporting free page blocks
> virtio-balloon: VIRTIO_BALLOON_F_CTRL_VQ
>
> drivers/virtio/virtio_balloon.c | 437
> +++++++++++++++++++++++++++++---
> include/linux/mm.h | 6 +
> include/linux/radix-tree.h | 2 +
> include/linux/xbitmap.h | 66 +++++
> include/uapi/linux/virtio_balloon.h | 16 ++
> lib/Makefile | 2 +-
> lib/radix-tree.c | 42 ++-
> lib/xbitmap.c | 264 +++++++++++++++++++
> mm/page_alloc.c | 91 +++++++
> tools/include/linux/bitmap.h | 34 +++
> tools/include/linux/kernel.h | 2 +
> tools/testing/radix-tree/Makefile | 7 +-
> tools/testing/radix-tree/linux/kernel.h | 2 -
> tools/testing/radix-tree/main.c | 5 +
> tools/testing/radix-tree/test.h | 1 +
> tools/testing/radix-tree/xbitmap.c | 269 ++++++++++++++++++++
> 16 files changed, 1203 insertions(+), 43 deletions(-)
> create mode 100644 include/linux/xbitmap.h
> create mode 100644 lib/xbitmap.c
> create mode 100644 tools/testing/radix-tree/xbitmap.c
>
next prev parent reply other threads:[~2017-10-01 13:26 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-30 4:05 [Qemu-devel] [PATCH v16 0/5] Virtio-balloon Enhancement Wei Wang
2017-09-30 4:05 ` [Qemu-devel] [PATCH v16 1/5] lib/xbitmap: Introduce xbitmap Wei Wang
2017-10-09 11:30 ` Tetsuo Handa
2017-09-30 4:05 ` [Qemu-devel] [PATCH v16 2/5] radix tree test suite: add tests for xbitmap Wei Wang
2017-09-30 4:05 ` [Qemu-devel] [PATCH v16 3/5] virtio-balloon: VIRTIO_BALLOON_F_SG Wei Wang
2017-10-02 4:30 ` Michael S. Tsirkin
2017-10-02 12:39 ` Wang, Wei W
2017-10-02 13:44 ` Michael S. Tsirkin
2017-10-09 15:20 ` Michael S. Tsirkin
2017-10-10 7:28 ` Wei Wang
2017-10-10 11:08 ` Tetsuo Handa
2017-10-10 12:32 ` Wei Wang
2017-10-10 13:09 ` Tetsuo Handa
2017-10-11 1:51 ` Wei Wang
2017-10-11 2:26 ` Tetsuo Handa
2017-10-11 3:16 ` Wei Wang
2017-09-30 4:05 ` [Qemu-devel] [PATCH v16 4/5] mm: support reporting free page blocks Wei Wang
2017-10-03 14:50 ` Michal Hocko
2017-09-30 4:05 ` [Qemu-devel] [PATCH v16 5/5] virtio-balloon: VIRTIO_BALLOON_F_CTRL_VQ Wei Wang
2017-10-01 3:18 ` Michael S. Tsirkin
2017-10-02 16:38 ` Wang, Wei W
2017-10-10 15:15 ` Michael S. Tsirkin
2017-10-11 6:03 ` Wei Wang
2017-10-11 13:49 ` Michael S. Tsirkin
2017-10-12 3:54 ` Wei Wang
2017-10-13 13:38 ` Michael S. Tsirkin
2017-10-19 8:07 ` Wei Wang
2017-10-01 13:16 ` [Qemu-devel] [PATCH v16 0/5] Virtio-balloon Enhancement Damian Tometzki
2017-10-01 13:25 ` Damian Tometzki [this message]
2017-10-09 9:39 ` Wei Wang
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=1506864327.1916.3.camel@icloud.com \
--to=damian.tometzki@icloud.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=amit.shah@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=david@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=liliang.opensource@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mawilcox@microsoft.com \
--cc=mgorman@techsingularity.net \
--cc=mhocko@kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quan.xu@aliyun.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=wei.w.wang@intel.com \
--cc=willy@infradead.org \
--cc=yang.zhang.wz@gmail.com \
/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).