RE: [PATCH v6 kernel 0/5] Extend virtio-balloon for fast (de)inflating & fast live migration

From: Li, Liang Z
Date: Tue Jan 10 2017 - 01:43:36 EST


Hi guys,

Could you help to review this patch set?

Thanks!
Liang

> -----Original Message-----
> From: Li, Liang Z
> Sent: Wednesday, December 21, 2016 2:52 PM
> To: kvm@xxxxxxxxxxxxxxx
> Cc: virtio-dev@xxxxxxxxxxxxxxxxxxxx; qemu-devel@xxxxxxxxxx; linux-
> mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; virtualization@xxxxxxxxxxxx
> foundation.org; amit.shah@xxxxxxxxxx; Hansen, Dave;
> cornelia.huck@xxxxxxxxxx; pbonzini@xxxxxxxxxx; mst@xxxxxxxxxx;
> david@xxxxxxxxxx; aarcange@xxxxxxxxxx; dgilbert@xxxxxxxxxx;
> quintela@xxxxxxxxxx; Li, Liang Z
> Subject: [PATCH v6 kernel 0/5] Extend virtio-balloon for fast (de)inflating &
> fast live migration
>
> 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