From: "Michael S. Tsirkin" <mst@redhat.com>
To: Wei Wang <wei.w.wang@intel.com>
Cc: "virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Liang Li <liang.z.li@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Amit Shah <amit.shah@redhat.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
David Hildenbrand <david@redhat.com>,
Liang Li <liliang324@gmail.com>
Subject: Re: [virtio-dev] Re: [PATCH v7 kernel 3/5] virtio-balloon: implementation of VIRTIO_BALLOON_F_CHUNK_TRANSFER
Date: Fri, 10 Mar 2017 17:37:38 +0200 [thread overview]
Message-ID: <20170310173602-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <58C279B7.2060106@intel.com>
On Fri, Mar 10, 2017 at 06:02:31PM +0800, Wei Wang wrote:
> On 03/08/2017 12:01 PM, Michael S. Tsirkin wrote:
> > On Fri, Mar 03, 2017 at 01:40:28PM +0800, Wei Wang wrote:
> > > From: Liang Li <liang.z.li@intel.com>
> > >
> > > The implementation of the current virtio-balloon is not very
> > > efficient, because the pages are transferred to the host one by one.
> > > Here is the breakdown of the time in percentage spent on each
> > > step of the balloon inflating process (inflating 7GB of an 8GB
> > > idle guest).
> > >
> > > 1) allocating pages (6.5%)
> > > 2) sending PFNs to host (68.3%)
> > > 3) address translation (6.1%)
> > > 4) madvise (19%)
> > >
> > > It takes about 4126ms for the inflating process to complete.
> > > The above profiling shows that the bottlenecks are stage 2)
> > > and stage 4).
> > >
> > > This patch optimizes step 2) by transfering pages to the host in
> > > chunks. A chunk consists of guest physically continuous pages, and
> > > it is offered to the host via a base PFN (i.e. the start PFN of
> > > those physically continuous pages) and the size (i.e. the total
> > > number of the pages). A normal chunk is formated as below:
> > > -----------------------------------------------
> > > | Base (52 bit) | Size (12 bit)|
> > > -----------------------------------------------
> > > For large size chunks, an extended chunk format is used:
> > > -----------------------------------------------
> > > | Base (64 bit) |
> > > -----------------------------------------------
> > > -----------------------------------------------
> > > | Size (64 bit) |
> > > -----------------------------------------------
> > >
> > > By doing so, step 4) can also be optimized by doing address
> > > translation and madvise() in chunks rather than page by page.
> > >
> > > This optimization requires the negotation of a new feature bit,
> > > VIRTIO_BALLOON_F_CHUNK_TRANSFER.
> > >
> > > With this new feature, the above ballooning process takes ~590ms
> > > resulting in an improvement of ~85%.
> > >
> > > TODO: optimize stage 1) by allocating/freeing a chunk of pages
> > > instead of a single page each time.
> > >
> > > Signed-off-by: Liang Li <liang.z.li@intel.com>
> > > Signed-off-by: Wei Wang <wei.w.wang@intel.com>
> > > Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> > > Cc: Amit Shah <amit.shah@redhat.com>
> > > Cc: Dave Hansen <dave.hansen@intel.com>
> > > Cc: Andrea Arcangeli <aarcange@redhat.com>
> > > Cc: David Hildenbrand <david@redhat.com>
> > > Cc: Liang Li <liliang324@gmail.com>
> > > Cc: Wei Wang <wei.w.wang@intel.com>
> > Does this pass sparse? I see some endian-ness issues here.
>
> "pass sparse"- what does that mean?
> I didn't see any complaints from "make" on my machine.
Run with make C=1 (or C=2 to check all source).
Generally there's a ton of useful info you will find
if you run make help.
--
MST
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Wei Wang <wei.w.wang@intel.com>
Cc: "virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Liang Li <liang.z.li@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Amit Shah <amit.shah@redhat.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
David Hildenbrand <david@redhat.com>,
Liang Li <liliang324@gmail.com>
Subject: Re: [virtio-dev] Re: [PATCH v7 kernel 3/5] virtio-balloon: implementation of VIRTIO_BALLOON_F_CHUNK_TRANSFER
Date: Fri, 10 Mar 2017 17:37:38 +0200 [thread overview]
Message-ID: <20170310173602-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <58C279B7.2060106@intel.com>
On Fri, Mar 10, 2017 at 06:02:31PM +0800, Wei Wang wrote:
> On 03/08/2017 12:01 PM, Michael S. Tsirkin wrote:
> > On Fri, Mar 03, 2017 at 01:40:28PM +0800, Wei Wang wrote:
> > > From: Liang Li <liang.z.li@intel.com>
> > >
> > > The implementation of the current virtio-balloon is not very
> > > efficient, because the pages are transferred to the host one by one.
> > > Here is the breakdown of the time in percentage spent on each
> > > step of the balloon inflating process (inflating 7GB of an 8GB
> > > idle guest).
> > >
> > > 1) allocating pages (6.5%)
> > > 2) sending PFNs to host (68.3%)
> > > 3) address translation (6.1%)
> > > 4) madvise (19%)
> > >
> > > It takes about 4126ms for the inflating process to complete.
> > > The above profiling shows that the bottlenecks are stage 2)
> > > and stage 4).
> > >
> > > This patch optimizes step 2) by transfering pages to the host in
> > > chunks. A chunk consists of guest physically continuous pages, and
> > > it is offered to the host via a base PFN (i.e. the start PFN of
> > > those physically continuous pages) and the size (i.e. the total
> > > number of the pages). A normal chunk is formated as below:
> > > -----------------------------------------------
> > > | Base (52 bit) | Size (12 bit)|
> > > -----------------------------------------------
> > > For large size chunks, an extended chunk format is used:
> > > -----------------------------------------------
> > > | Base (64 bit) |
> > > -----------------------------------------------
> > > -----------------------------------------------
> > > | Size (64 bit) |
> > > -----------------------------------------------
> > >
> > > By doing so, step 4) can also be optimized by doing address
> > > translation and madvise() in chunks rather than page by page.
> > >
> > > This optimization requires the negotation of a new feature bit,
> > > VIRTIO_BALLOON_F_CHUNK_TRANSFER.
> > >
> > > With this new feature, the above ballooning process takes ~590ms
> > > resulting in an improvement of ~85%.
> > >
> > > TODO: optimize stage 1) by allocating/freeing a chunk of pages
> > > instead of a single page each time.
> > >
> > > Signed-off-by: Liang Li <liang.z.li@intel.com>
> > > Signed-off-by: Wei Wang <wei.w.wang@intel.com>
> > > Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> > > Cc: Amit Shah <amit.shah@redhat.com>
> > > Cc: Dave Hansen <dave.hansen@intel.com>
> > > Cc: Andrea Arcangeli <aarcange@redhat.com>
> > > Cc: David Hildenbrand <david@redhat.com>
> > > Cc: Liang Li <liliang324@gmail.com>
> > > Cc: Wei Wang <wei.w.wang@intel.com>
> > Does this pass sparse? I see some endian-ness issues here.
>
> "pass sparse"- what does that mean?
> I didn't see any complaints from "make" on my machine.
Run with make C=1 (or C=2 to check all source).
Generally there's a ton of useful info you will find
if you run make help.
--
MST
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Wei Wang <wei.w.wang@intel.com>
Cc: "virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Liang Li <liang.z.li@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Amit Shah <amit.shah@redhat.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
David Hildenbrand <david@redhat.com>,
Liang Li <liliang324@gmail.com>
Subject: Re: [Qemu-devel] [virtio-dev] Re: [PATCH v7 kernel 3/5] virtio-balloon: implementation of VIRTIO_BALLOON_F_CHUNK_TRANSFER
Date: Fri, 10 Mar 2017 17:37:38 +0200 [thread overview]
Message-ID: <20170310173602-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <58C279B7.2060106@intel.com>
On Fri, Mar 10, 2017 at 06:02:31PM +0800, Wei Wang wrote:
> On 03/08/2017 12:01 PM, Michael S. Tsirkin wrote:
> > On Fri, Mar 03, 2017 at 01:40:28PM +0800, Wei Wang wrote:
> > > From: Liang Li <liang.z.li@intel.com>
> > >
> > > The implementation of the current virtio-balloon is not very
> > > efficient, because the pages are transferred to the host one by one.
> > > Here is the breakdown of the time in percentage spent on each
> > > step of the balloon inflating process (inflating 7GB of an 8GB
> > > idle guest).
> > >
> > > 1) allocating pages (6.5%)
> > > 2) sending PFNs to host (68.3%)
> > > 3) address translation (6.1%)
> > > 4) madvise (19%)
> > >
> > > It takes about 4126ms for the inflating process to complete.
> > > The above profiling shows that the bottlenecks are stage 2)
> > > and stage 4).
> > >
> > > This patch optimizes step 2) by transfering pages to the host in
> > > chunks. A chunk consists of guest physically continuous pages, and
> > > it is offered to the host via a base PFN (i.e. the start PFN of
> > > those physically continuous pages) and the size (i.e. the total
> > > number of the pages). A normal chunk is formated as below:
> > > -----------------------------------------------
> > > | Base (52 bit) | Size (12 bit)|
> > > -----------------------------------------------
> > > For large size chunks, an extended chunk format is used:
> > > -----------------------------------------------
> > > | Base (64 bit) |
> > > -----------------------------------------------
> > > -----------------------------------------------
> > > | Size (64 bit) |
> > > -----------------------------------------------
> > >
> > > By doing so, step 4) can also be optimized by doing address
> > > translation and madvise() in chunks rather than page by page.
> > >
> > > This optimization requires the negotation of a new feature bit,
> > > VIRTIO_BALLOON_F_CHUNK_TRANSFER.
> > >
> > > With this new feature, the above ballooning process takes ~590ms
> > > resulting in an improvement of ~85%.
> > >
> > > TODO: optimize stage 1) by allocating/freeing a chunk of pages
> > > instead of a single page each time.
> > >
> > > Signed-off-by: Liang Li <liang.z.li@intel.com>
> > > Signed-off-by: Wei Wang <wei.w.wang@intel.com>
> > > Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Michael S. Tsirkin <mst@redhat.com>
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> > > Cc: Amit Shah <amit.shah@redhat.com>
> > > Cc: Dave Hansen <dave.hansen@intel.com>
> > > Cc: Andrea Arcangeli <aarcange@redhat.com>
> > > Cc: David Hildenbrand <david@redhat.com>
> > > Cc: Liang Li <liliang324@gmail.com>
> > > Cc: Wei Wang <wei.w.wang@intel.com>
> > Does this pass sparse? I see some endian-ness issues here.
>
> "pass sparse"- what does that mean?
> I didn't see any complaints from "make" on my machine.
Run with make C=1 (or C=2 to check all source).
Generally there's a ton of useful info you will find
if you run make help.
--
MST
next prev parent reply other threads:[~2017-03-10 15:37 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-03 5:40 [PATCH v7 kernel 0/5] Extend virtio-balloon for fast (de)inflating & fast live migration Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [PATCH v7 kernel 1/5] virtio-balloon: rework deflate to add page to a list Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [PATCH v7 kernel 2/5] virtio-balloon: VIRTIO_BALLOON_F_CHUNK_TRANSFER Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-08 4:01 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-09 7:12 ` Wei Wang
2017-03-09 7:12 ` [Qemu-devel] " Wei Wang
2017-03-09 7:12 ` Wei Wang
2017-03-09 7:12 ` Wei Wang
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-03 5:40 ` [PATCH v7 kernel 3/5] virtio-balloon: implementation of VIRTIO_BALLOON_F_CHUNK_TRANSFER Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-08 4:01 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-10 10:02 ` Wei Wang
2017-03-10 10:02 ` [Qemu-devel] [virtio-dev] " Wei Wang
2017-03-10 10:02 ` Wei Wang
2017-03-10 10:02 ` Wei Wang
2017-03-10 13:26 ` David Hildenbrand
2017-03-10 13:26 ` [Qemu-devel] " David Hildenbrand
2017-03-10 13:26 ` David Hildenbrand
2017-03-10 13:26 ` David Hildenbrand
2017-03-10 15:37 ` Michael S. Tsirkin [this message]
2017-03-10 15:37 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-10 15:37 ` Michael S. Tsirkin
2017-03-10 15:37 ` Michael S. Tsirkin
2017-03-10 10:02 ` Wei Wang
2017-03-08 4:01 ` Michael S. Tsirkin
2017-03-09 14:14 ` Matthew Wilcox
2017-03-09 14:14 ` Matthew Wilcox
2017-03-09 14:14 ` [Qemu-devel] " Matthew Wilcox
2017-03-09 14:14 ` Matthew Wilcox
2017-03-10 11:37 ` Wei Wang
2017-03-10 11:37 ` [Qemu-devel] " Wei Wang
2017-03-10 11:37 ` Wei Wang
2017-03-10 15:58 ` Michael S. Tsirkin
2017-03-10 15:58 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-10 15:58 ` Michael S. Tsirkin
2017-03-10 17:11 ` Matthew Wilcox
2017-03-10 17:11 ` Matthew Wilcox
2017-03-10 17:11 ` [Qemu-devel] " Matthew Wilcox
2017-03-10 17:11 ` Matthew Wilcox
2017-03-10 19:10 ` Michael S. Tsirkin
2017-03-10 19:10 ` Michael S. Tsirkin
2017-03-10 19:10 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-10 19:10 ` Michael S. Tsirkin
2017-03-10 21:18 ` Matthew Wilcox
2017-03-10 21:18 ` [Qemu-devel] " Matthew Wilcox
2017-03-10 21:18 ` Matthew Wilcox
2017-03-10 21:18 ` Matthew Wilcox
2017-03-10 19:35 ` Michael S. Tsirkin
2017-03-10 19:35 ` Michael S. Tsirkin
2017-03-10 19:35 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-10 19:35 ` Michael S. Tsirkin
2017-03-10 21:25 ` Matthew Wilcox
2017-03-10 21:25 ` [Qemu-devel] " Matthew Wilcox
2017-03-10 21:25 ` Matthew Wilcox
2017-03-12 0:05 ` Michael S. Tsirkin
2017-03-12 0:05 ` Michael S. Tsirkin
2017-03-12 0:05 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-12 0:05 ` Michael S. Tsirkin
2017-03-10 21:25 ` Matthew Wilcox
2017-03-11 11:59 ` Wei Wang
2017-03-11 11:59 ` Wei Wang
2017-03-11 11:59 ` [Qemu-devel] " Wei Wang
2017-03-11 11:59 ` Wei Wang
2017-03-11 14:09 ` Matthew Wilcox
2017-03-11 14:09 ` [Qemu-devel] " Matthew Wilcox
2017-03-11 14:09 ` Matthew Wilcox
2017-03-12 1:59 ` Wang, Wei W
2017-03-12 1:59 ` [Qemu-devel] " Wang, Wei W
2017-03-12 1:59 ` Wang, Wei W
2017-03-12 4:04 ` Michael S. Tsirkin
2017-03-12 4:04 ` Michael S. Tsirkin
2017-03-12 4:04 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-12 4:04 ` Michael S. Tsirkin
2017-03-13 12:41 ` Wang, Wei W
2017-03-13 12:41 ` [Qemu-devel] " Wang, Wei W
2017-03-13 12:41 ` Wang, Wei W
2017-03-13 12:41 ` Wang, Wei W
2017-03-12 1:59 ` Wang, Wei W
2017-03-11 14:09 ` Matthew Wilcox
2017-03-12 0:07 ` Michael S. Tsirkin
2017-03-12 0:07 ` Michael S. Tsirkin
2017-03-12 0:07 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-12 0:07 ` Michael S. Tsirkin
2017-03-10 15:58 ` Michael S. Tsirkin
2017-03-10 11:37 ` Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [PATCH v7 kernel 4/5] virtio-balloon: define flags and head for host request vq Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-08 4:02 ` Michael S. Tsirkin
2017-03-08 4:02 ` Michael S. Tsirkin
2017-03-08 4:02 ` [Qemu-devel] " Michael S. Tsirkin
2017-03-08 4:02 ` Michael S. Tsirkin
2017-03-03 5:40 ` [PATCH v7 kernel 5/5] This patch contains two parts: Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-03 5:40 ` [Qemu-devel] " Wei Wang
2017-03-03 5:40 ` Wei Wang
2017-03-06 13:23 ` David Hildenbrand
2017-03-06 13:23 ` David Hildenbrand
2017-03-06 13:23 ` [Qemu-devel] " David Hildenbrand
2017-03-06 13:23 ` David Hildenbrand
2017-03-09 7:04 ` Wei Wang
2017-03-09 7:04 ` Wei Wang
2017-03-09 7:04 ` [Qemu-devel] " Wei Wang
2017-03-09 7:04 ` 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=20170310173602-mutt-send-email-mst@kernel.org \
--to=mst@redhat.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=kvm@vger.kernel.org \
--cc=liang.z.li@intel.com \
--cc=liliang324@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=wei.w.wang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.