[PATCH v14 4/5] mm: support reporting free page blocks

2017-08-16 Thread Wei Wang
This patch adds support to walk through the free page blocks in the system and report them via a callback function. Some page blocks may leave the free list after zone->lock is released, so it is the caller's responsibility to either detect or prevent the use of such pages. Signed-off-by:

[PATCH v14 5/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_VQ

2017-08-16 Thread Wei Wang
Add a new vq to report hints of guest free pages to the host. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> --- drivers/virtio/virtio_balloon.c | 167 +++- include/uapi/linux/virtio_balloon.h |

[PATCH v14 0/5] Virtio-balloon Enhancement

2017-08-16 Thread Wei Wang
plementation patch. 3) commit changes 4) patch re-org Matthew Wilcox (1): lib/xbitmap: Introduce xbitmap Wei Wang (4): lib/xbitmap: add xb_find_next_bit() and xb_zero() virtio-balloon: VIRTIO_BALLOON_F_SG mm: support reporting free page blocks virtio-balloon: VIRTIO_BALLOON_F_FREE_PAG

[PATCH v14 1/5] lib/xbitmap: Introduce xbitmap

2017-08-16 Thread Wei Wang
st_bit(). Signed-off-by: Matthew Wilcox <mawil...@microsoft.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> Cc: Andrew Morton <a...@linux-foundation.org> Cc: Michal Hocko <mho...@kernel.org> Cc: Michael S. Tsirkin <m...@redhat.com> --- include/linux/radix-tree.h | 3

[PATCH v14 3/5] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-08-16 Thread Wei Wang
() in chunks rather than page by page. With this new feature, the above ballooning process takes ~541ms resulting in an improvement of ~87%. TODO: optimize stage 1) by allocating/freeing a chunk of pages instead of a single page each time. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Sign

[PATCH v14 2/5] lib/xbitmap: add xb_find_next_bit() and xb_zero()

2017-08-16 Thread Wei Wang
xb_find_next_bit() is used to find the next "1" or "0" bit in the given range. xb_zero() is used to zero the given range of bits. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Cc: Andrew Morton <a...@linux-foundation.org> Cc: Matthew Wilcox <mawil...@m

Re: [virtio-dev] [PATCH v13 0/5] Virtio-balloon Enhancement

2017-08-16 Thread Wei Wang
On 08/16/2017 01:57 PM, Adam Tao wrote: On Thu, Aug 03, 2017 at 02:38:14PM +0800, Wei Wang wrote: 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

Re: [virtio-dev] Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-10 Thread Wei Wang
On 08/10/2017 03:05 PM, Michal Hocko wrote: On Tue 08-08-17 14:34:25, Wei Wang wrote: On 08/08/2017 02:12 PM, Wei Wang wrote: On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: This is just too ugly and wrong actually. Never provide struct page pointers

Re: [PATCH v13 1/5] Introduce xbitmap

2017-08-10 Thread Wei Wang
On 08/10/2017 05:36 AM, Andrew Morton wrote: On Thu, 3 Aug 2017 14:38:15 +0800 Wei Wang <wei.w.w...@intel.com> wrote: From: Matthew Wilcox <mawil...@microsoft.com> The eXtensible Bitmap is a sparse bitmap representation which is efficient for set bits which tend to cluster. It

Re: [virtio-dev] Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-08 Thread Wei Wang
On 08/08/2017 02:12 PM, Wei Wang wrote: On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: This is just too ugly and wrong actually. Never provide struct page pointers outside of the zone->lock. What I've had in mind was to simply walk free li

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-08 Thread Wei Wang
On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: This is just too ugly and wrong actually. Never provide struct page pointers outside of the zone->lock. What I've had in mind was to simply walk free lists of the suitable order and call the callback for e

Re: [PATCH RESEND] mm: don't zero ballooned pages

2017-08-07 Thread Wei Wang
On 08/07/2017 04:44 PM, David Hildenbrand wrote: On 03.08.2017 13:59, Wei Wang wrote: This patch is a revert of 'commit bb01b64cfab7 ("mm/balloon_compaction.c: enqueue zero page to balloon device")' Ballooned pages will be marked as MADV_DONTNEED by the hypervisor and shouldn'

Re: [PATCH v13 1/5] Introduce xbitmap

2017-08-07 Thread Wei Wang
On 08/03/2017 02:38 PM, Wei Wang wrote: From: Matthew Wilcox <mawil...@microsoft.com> The eXtensible Bitmap is a sparse bitmap representation which is efficient for set bits which tend to cluster. It supports up to 'unsigned long' worth of bits, and this commit adds the bare

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-04 Thread Wei Wang
On 08/04/2017 04:24 PM, Michal Hocko wrote: For our use case, the callback just puts the reported page block to the ring, then returns. If the ring is full as the host is busy, then I think it should skip this one, and just return. Because: A. This is an optimization feature, losing a

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-04 Thread Wei Wang
On 08/04/2017 03:53 PM, Michal Hocko wrote: On Fri 04-08-17 00:02:01, Michael S. Tsirkin wrote: On Thu, Aug 03, 2017 at 03:20:09PM +, Wang, Wei W wrote: On Thursday, August 3, 2017 9:51 PM, Michal Hocko: As I've said earlier. Start simple optimize incrementally with some numbers to

Re: [PATCH v13 5/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_VQ

2017-08-03 Thread Wei Wang
On 08/03/2017 09:05 PM, Pankaj Gupta wrote: On 08/03/2017 04:13 PM, Pankaj Gupta wrote: +/* Allocate space for find_vqs parameters */ +vqs = kcalloc(nvqs, sizeof(*vqs), GFP_KERNEL); +if (!vqs) +goto err_vq; +callbacks = kmalloc_array(nvqs,

Re: [PATCH RESEND] mm: don't zero ballooned pages

2017-08-03 Thread Wei Wang
On 08/03/2017 08:54 PM, Michal Hocko wrote: On Thu 03-08-17 19:59:17, Wei Wang wrote: This patch is a revert of 'commit bb01b64cfab7 ("mm/balloon_compaction.c: enqueue zero page to balloon device")' Ballooned pages will be marked as MADV_DONTNEED by the hypervisor and shouldn'

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-03 Thread Wei Wang
On 08/03/2017 08:41 PM, Michal Hocko wrote: On Thu 03-08-17 20:11:58, Wei Wang wrote: On 08/03/2017 07:28 PM, Michal Hocko wrote: On Thu 03-08-17 19:27:19, Wei Wang wrote: On 08/03/2017 06:44 PM, Michal Hocko wrote: On Thu 03-08-17 18:42:15, Wei Wang wrote: On 08/03/2017 05:11 PM, Michal

Re: [PATCH v13 5/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_VQ

2017-08-03 Thread Wei Wang
On 08/03/2017 04:13 PM, Pankaj Gupta wrote: +/* Allocate space for find_vqs parameters */ +vqs = kcalloc(nvqs, sizeof(*vqs), GFP_KERNEL); +if (!vqs) +goto err_vq; +callbacks = kmalloc_array(nvqs, sizeof(*callbacks), GFP_KERNEL); +if

[PATCH RESEND] mm: don't zero ballooned pages

2017-08-03 Thread Wei Wang
ch is very time consuming when the page amount is large. The ongoing fast balloon tests show that the time to balloon 7G pages is increased from ~491ms to 2.8 seconds with __GFP_ZERO added. So, this patch removes the flag. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Cc: Michal Hocko <mh

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-03 Thread Wei Wang
On 08/03/2017 07:28 PM, Michal Hocko wrote: On Thu 03-08-17 19:27:19, Wei Wang wrote: On 08/03/2017 06:44 PM, Michal Hocko wrote: On Thu 03-08-17 18:42:15, Wei Wang wrote: On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: [...] +static int

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-03 Thread Wei Wang
On 08/03/2017 06:44 PM, Michal Hocko wrote: On Thu 03-08-17 18:42:15, Wei Wang wrote: On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: [...] +static int report_free_page_block(struct zone *zone, unsigned int order

Re: [PATCH v13 4/5] mm: support reporting free page blocks

2017-08-03 Thread Wei Wang
On 08/03/2017 05:11 PM, Michal Hocko wrote: On Thu 03-08-17 14:38:18, Wei Wang wrote: This patch adds support to walk through the free page blocks in the system and report them via a callback function. Some page blocks may leave the free list after the report function returns, so

[PATCH v13 5/5] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_VQ

2017-08-03 Thread Wei Wang
Add a new vq to report hints of guest free pages to the host. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> --- drivers/virtio/virtio_balloon.c | 164 ++-- include/uapi/linux/virtio_balloon.h |

[PATCH v13 4/5] mm: support reporting free page blocks

2017-08-03 Thread Wei Wang
-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> Cc: Michal Hocko <mho...@kernel.org> Cc: Michael S. Tsirkin <m...@redhat.com> --- include/linux/mm.h | 7 include/linux/mmzone.h | 5 +++ mm/p

[PATCH v13 3/5] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-08-03 Thread Wei Wang
() in chunks rather than page by page. With this new feature, the above ballooning process takes ~541ms resulting in an improvement of ~87%. TODO: optimize stage 1) by allocating/freeing a chunk of pages instead of a single page each time. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Sign

[PATCH v13 2/5] xbitmap: add xb_find_next_bit() and xb_zero()

2017-08-03 Thread Wei Wang
xb_find_next_bit() supports to find the next "1" or "0" bit in the given range. xb_zero() supports to zero the given range of bits. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- include/linux/xbitmap.h | 4 lib/radix-tree.c| 28 +++

[PATCH v13 0/5] Virtio-balloon Enhancement

2017-08-03 Thread Wei Wang
e-write the virtio-balloon implementation patch. 3) commit changes 4) patch re-org Matthew Wilcox (1): Introduce xbitmap Wei Wang (4): xbitmap: add xb_find_next_bit() and xb_zero() virtio-balloon: VIRTIO_BALLOON_F_SG mm: support reporting free page blocks virtio-balloon: VIRTIO_BALLOON_F_FREE

[PATCH v13 1/5] Introduce xbitmap

2017-08-03 Thread Wei Wang
st_bit(). Signed-off-by: Matthew Wilcox <mawil...@microsoft.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- include/linux/radix-tree.h | 2 + include/linux/xbitmap.h| 49 lib/radix-tree.c | 139 - 3

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-31 Thread Wei Wang
On 07/31/2017 12:20 AM, Michael S. Tsirkin wrote: On Sun, Jul 30, 2017 at 07:18:33PM +0300, Michael S. Tsirkin wrote: On Sun, Jul 30, 2017 at 05:59:17AM +, Wang, Wei W wrote: That's a hypervisor implementation detail. From guest point of view, discarding contents can not be distinguished

Re: [PATCH] mm: don't zero ballooned pages

2017-07-31 Thread Wei Wang
On 07/31/2017 02:55 PM, Michal Hocko wrote: On Mon 31-07-17 12:13:33, Wei Wang wrote: Ballooned pages will be marked as MADV_DONTNEED by the hypervisor and shouldn't be given to the host ksmd to scan. Could you point me where this MADV_DONTNEED is done, please? Sure. It's done

[PATCH] mm: don't zero ballooned pages

2017-07-30 Thread Wei Wang
pages is increased from ~491ms to 2.8 seconds with __GFP_ZERO added. So, this patch removes the flag. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- mm/balloon_compaction.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-29 Thread Wei Wang
On 07/29/2017 07:08 AM, Michael S. Tsirkin wrote: On Thu, Jul 27, 2017 at 10:50:11AM +0800, Wei Wang wrote: OK I thought this over. While we might need these new APIs in the future, I think that at the moment, there's a way to implement this feature that is significantly simpler. Just add each

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-28 Thread Wei Wang
On 07/12/2017 08:40 PM, Wei Wang wrote: Add a new feature, VIRTIO_BALLOON_F_SG, which enables to transfer a chunk of ballooned (i.e. inflated/deflated) pages using scatter-gather lists to the host. The implementation of the previous virtio-balloon is not very efficient, because the balloon

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-26 Thread Wei Wang
On 07/27/2017 01:02 AM, Michael S. Tsirkin wrote: On Wed, Jul 26, 2017 at 11:48:41AM +0800, Wei Wang wrote: On 07/23/2017 09:45 AM, Michael S. Tsirkin wrote: On Fri, Jul 14, 2017 at 03:12:43PM +0800, Wei Wang wrote: On 07/14/2017 04:19 AM, Michael S. Tsirkin wrote: On Thu, Jul 13, 2017 at 03

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-26 Thread Wei Wang
On 07/26/2017 06:24 PM, Michal Hocko wrote: On Wed 26-07-17 10:22:23, Wei Wang wrote: On 07/25/2017 10:53 PM, Michal Hocko wrote: On Tue 25-07-17 14:47:16, Wang, Wei W wrote: On Tuesday, July 25, 2017 8:42 PM, hal Hocko wrote: On Tue 25-07-17 19:56:24, Wei Wang wrote: On 07/25/2017 07:25 PM

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-25 Thread Wei Wang
On 07/23/2017 09:45 AM, Michael S. Tsirkin wrote: On Fri, Jul 14, 2017 at 03:12:43PM +0800, Wei Wang wrote: On 07/14/2017 04:19 AM, Michael S. Tsirkin wrote: On Thu, Jul 13, 2017 at 03:42:35PM +0800, Wei Wang wrote: On 07/12/2017 09:56 PM, Michael S. Tsirkin wrote: So the way I see

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-25 Thread Wei Wang
On 07/25/2017 10:53 PM, Michal Hocko wrote: On Tue 25-07-17 14:47:16, Wang, Wei W wrote: On Tuesday, July 25, 2017 8:42 PM, hal Hocko wrote: On Tue 25-07-17 19:56:24, Wei Wang wrote: On 07/25/2017 07:25 PM, Michal Hocko wrote: On Tue 25-07-17 17:32:00, Wei Wang wrote: On 07/24/2017 05:00 PM

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-25 Thread Wei Wang
On 07/25/2017 07:25 PM, Michal Hocko wrote: On Tue 25-07-17 17:32:00, Wei Wang wrote: On 07/24/2017 05:00 PM, Michal Hocko wrote: On Wed 19-07-17 20:01:18, Wei Wang wrote: On 07/19/2017 04:13 PM, Michal Hocko wrote: [... All you should need is the check for the page reference count, no? I

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-25 Thread Wei Wang
On 07/24/2017 05:00 PM, Michal Hocko wrote: On Wed 19-07-17 20:01:18, Wei Wang wrote: On 07/19/2017 04:13 PM, Michal Hocko wrote: [... All you should need is the check for the page reference count, no? I assume you do some sort of pfn walk and so you should be able to get an access

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-19 Thread Wei Wang
On 07/19/2017 04:13 PM, Michal Hocko wrote: On Tue 18-07-17 10:12:14, Wei Wang wrote: [...] Probably I should have included the introduction of the usages in the log. Hope it is not too later to explain here: Yes this should have been described in the cover. OK, I will do it in the next

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-17 Thread Wei Wang
On 07/17/2017 11:24 PM, Michal Hocko wrote: On Fri 14-07-17 22:17:13, Michael S. Tsirkin wrote: On Fri, Jul 14, 2017 at 02:30:23PM +0200, Michal Hocko wrote: On Wed 12-07-17 20:40:19, Wei Wang wrote: This patch adds support for reporting blocks of pages on the free list specified

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-14 Thread Wei Wang
On 07/14/2017 04:19 AM, Michael S. Tsirkin wrote: On Thu, Jul 13, 2017 at 03:42:35PM +0800, Wei Wang wrote: On 07/12/2017 09:56 PM, Michael S. Tsirkin wrote: So the way I see it, there are several issues: - internal wait - forces multiple APIs like kick/kick_sync note how kick_sync can

Re: [PATCH v12 8/8] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-07-13 Thread Wei Wang
On 07/13/2017 08:22 AM, Michael S. Tsirkin wrote: On Wed, Jul 12, 2017 at 08:40:21PM +0800, Wei Wang wrote: Add a new vq, cmdq, to handle requests between the device and driver. This patch implements two commands sent from the device and handled in the driver. 1

Re: [virtio-dev] Re: [PATCH v12 7/8] mm: export symbol of next_zone and first_online_pgdat

2017-07-13 Thread Wei Wang
On 07/13/2017 08:16 AM, Michael S. Tsirkin wrote: On Wed, Jul 12, 2017 at 08:40:20PM +0800, Wei Wang wrote: This patch enables for_each_zone()/for_each_populated_zone() to be invoked by a kernel module. ... for use by virtio balloon. With this patch, other kernel modules can also use

Re: [PATCH v12 6/8] mm: support reporting free page blocks

2017-07-13 Thread Wei Wang
On 07/13/2017 08:33 AM, Michael S. Tsirkin wrote: On Wed, Jul 12, 2017 at 08:40:19PM +0800, Wei Wang wrote: This patch adds support for reporting blocks of pages on the free list specified by the caller. As pages can leave the free list during this call or immediately afterwards

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-13 Thread Wei Wang
On 07/12/2017 09:56 PM, Michael S. Tsirkin wrote: So the way I see it, there are several issues: - internal wait - forces multiple APIs like kick/kick_sync note how kick_sync can fail but your code never checks return code - need to re-write the last descriptor - might not work for

Re: [PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-12 Thread Wei Wang
On 07/12/2017 09:06 PM, Michael S. Tsirkin wrote: On Wed, Jul 12, 2017 at 08:40:18PM +0800, Wei Wang wrote: diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 28b0e96..9f27101 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -57,8 +57,28 @@ int

Re: [virtio-dev] Re: [PATCH v11 3/6] virtio-balloon: VIRTIO_BALLOON_F_PAGE_CHUNKS

2017-07-12 Thread Wei Wang
Hi Matthew, On 06/28/2017 11:04 PM, Matthew Wilcox wrote: On Thu, Jun 15, 2017 at 04:10:17PM +0800, Wei Wang wrote: So you still have a home-grown bitmap. I'd like to know why isn't xbitmap suggested for this purpose by Matthew Wilcox appropriate. Please add a comment explaining

Re: [virtio-dev] Re: [PATCH v11 6/6] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-07-12 Thread Wei Wang
On 06/28/2017 11:01 PM, Michael S. Tsirkin wrote: On Thu, Jun 22, 2017 at 04:40:39PM +0800, Wei Wang wrote: On 06/21/2017 08:28 PM, Michael S. Tsirkin wrote: On Wed, Jun 21, 2017 at 11:28:00AM +0800, Wei Wang wrote: On 06/21/2017 12:18 AM, Michael S. Tsirkin wrote: On Fri, Jun 09, 2017 at 06

[PATCH v12 7/8] mm: export symbol of next_zone and first_online_pgdat

2017-07-12 Thread Wei Wang
This patch enables for_each_zone()/for_each_populated_zone() to be invoked by a kernel module. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- mm/mmzone.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/mmzone.c b/mm/mmzone.c index a51c0a6..08a2a3a 100644 --- a/mm/mmzone.c ++

[PATCH v12 6/8] mm: support reporting free page blocks

2017-07-12 Thread Wei Wang
the function was invoked. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> --- include/linux/mm.h | 5 +++ mm/page_alloc.c| 96 ++ 2 files changed, 101 insertions(+) diff --git a/include/

[PATCH v12 5/8] virtio-balloon: VIRTIO_BALLOON_F_SG

2017-07-12 Thread Wei Wang
and madvise() in chunks rather than page by page. With this new feature, the above ballooning process takes ~491ms resulting in an improvement of ~88%. TODO: optimize stage 1) by allocating/freeing a chunk of pages instead of a single page each time. Signed-off-by: Wei Wang <wei.w.w...@intel.

[PATCH v12 4/8] xbitmap: add xb_find_next_bit() and xb_zero()

2017-07-12 Thread Wei Wang
xb_find_next_bit() is added to support find the next "1" or "0" bit in the given range. xb_zero() is added to support zero the given range of bits. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- include/linux/xbitmap.h | 4 lib/radix-tree.c| 26 +++

[PATCH v12 3/8] Introduce xbitmap

2017-07-12 Thread Wei Wang
st_bit(). Signed-off-by: Matthew Wilcox <mawil...@microsoft.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- include/linux/radix-tree.h | 2 + include/linux/xbitmap.h| 49 lib/radix-tree.c | 138 - 3

[PATCH v12 1/8] virtio-balloon: deflate via a page list

2017-07-12 Thread Wei Wang
From: Liang Li <liang.z...@intel.com> This patch saves the deflated pages to a list, instead of the PFN array. Accordingly, the balloon_pfn_to_page() function is removed. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signe

[PATCH v12 2/8] virtio-balloon: coding format cleanup

2017-07-12 Thread Wei Wang
Clean up the comment format. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- drivers/virtio/virtio_balloon.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 7f38ae6..f0b3a0b 100644 --- a/d

[PATCH v12 0/8] Virtio-balloon Enhancement

2017-07-12 Thread Wei Wang
Matthew Wilcox (1): Introduce xbitmap Wei Wang (6): virtio-balloon: coding format cleanup xbitmap: add xb_find_next_bit() and xb_zero() virtio-balloon: VIRTIO_BALLOON_F_SG mm: support reporting free page blocks mm: export symbol of next_zone and first_online_pgdat

Re: [virtio-dev] Re: [PATCH v11 6/6] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-06-22 Thread Wei Wang
On 06/21/2017 08:28 PM, Michael S. Tsirkin wrote: On Wed, Jun 21, 2017 at 11:28:00AM +0800, Wei Wang wrote: On 06/21/2017 12:18 AM, Michael S. Tsirkin wrote: On Fri, Jun 09, 2017 at 06:41:41PM +0800, Wei Wang wrote: - if (!virtqueue_indirect_desc_table_add(vq, desc, num

Re: [Qemu-devel] [PATCH v11 4/6] mm: function to offer a page block on the free list

2017-06-21 Thread Wei Wang
On 06/21/2017 01:29 AM, Rik van Riel wrote: On Tue, 2017-06-20 at 18:49 +0200, David Hildenbrand wrote: On 20.06.2017 18:44, Rik van Riel wrote: Nitesh Lal (on the CC list) is working on a way to efficiently batch recently freed pages for free page hinting to the hypervisor. If that is done

Re: [virtio-dev] Re: [PATCH v11 6/6] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-06-20 Thread Wei Wang
On 06/21/2017 12:18 AM, Michael S. Tsirkin wrote: On Fri, Jun 09, 2017 at 06:41:41PM +0800, Wei Wang wrote: - if (!virtqueue_indirect_desc_table_add(vq, desc, num)) { + if (!virtqueue_indirect_desc_table_add(vq, desc, *num)) { virtqueue_kick(vq

Re: [virtio-dev] Re: [PATCH v11 3/6] virtio-balloon: VIRTIO_BALLOON_F_PAGE_CHUNKS

2017-06-15 Thread Wei Wang
On 06/14/2017 01:56 AM, Michael S. Tsirkin wrote: On Fri, Jun 09, 2017 at 06:41:38PM +0800, Wei Wang wrote: Add a new feature, VIRTIO_BALLOON_F_PAGE_CHUNKS, which enables the transfer of the ballooned (i.e. inflated/deflated) pages in chunks to the host. so now these chunks are just s/g list

Re: [PATCH v11 6/6] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-06-13 Thread Wei Wang
On 06/12/2017 10:07 PM, Dave Hansen wrote: On 06/09/2017 03:41 AM, Wei Wang wrote: + for_each_populated_zone(zone) { + for (order = MAX_ORDER - 1; order > 0; order--) { + for (migratetype = 0; migratetype < MIGRATE

Re: [PATCH v11 4/6] mm: function to offer a page block on the free list

2017-06-12 Thread Wei Wang
On 06/13/2017 04:54 AM, Dave Hansen wrote: On 06/12/2017 01:34 PM, Michael S. Tsirkin wrote: On Mon, Jun 12, 2017 at 09:42:36AM -0700, Dave Hansen wrote: On 06/12/2017 09:28 AM, Michael S. Tsirkin wrote: The hypervisor is going to throw away the contents of these pages, right? It should be

[PATCH v11 5/6] mm: export symbol of next_zone and first_online_pgdat

2017-06-09 Thread Wei Wang
This patch enables for_each_zone()/for_each_populated_zone() to be invoked by a kernel module. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- mm/mmzone.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/mmzone.c b/mm/mmzone.c index a51c0a6..08a2a3a 100644 --- a/mm/mmzone.c ++

[PATCH v11 6/6] virtio-balloon: VIRTIO_BALLOON_F_CMD_VQ

2017-06-09 Thread Wei Wang
is not used when the cmdq mechanism is enabled. 2) cmd VIRTIO_BALLOON_CMDQ_REPORT_UNUSED_PAGES: this command is used to report the guest unused pages to the host. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- drivers/virtio/virtio_balloon.c | 363 includ

[PATCH v11 4/6] mm: function to offer a page block on the free list

2017-06-09 Thread Wei Wang
Add a function to find a page block on the free list specified by the caller. Pages from the page block may be used immediately after the function returns. The caller is responsible for detecting or preventing the use of such pages. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Sign

[PATCH v11 3/6] virtio-balloon: VIRTIO_BALLOON_F_PAGE_CHUNKS

2017-06-09 Thread Wei Wang
-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> Suggested-by: Michael S. Tsirkin <m...@redhat.com> --- drivers/virtio/virtio_balloon.c | 418 +--- drivers/virtio/virtio_ring.c| 120 ++- incl

[PATCH v11 2/6] virtio-balloon: coding format cleanup

2017-06-09 Thread Wei Wang
Clean up the comment format. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- drivers/virtio/virtio_balloon.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 4a9f307..ecb64e9 100644 --- a/d

[PATCH v11 1/6] virtio-balloon: deflate via a page list

2017-06-09 Thread Wei Wang
From: Liang Li <liang.z...@intel.com> This patch saves the deflated pages to a list, instead of the PFN array. Accordingly, the balloon_pfn_to_page() function is removed. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signe

[PATCH v11 0/6] Virtio-balloon Enhancement

2017-06-09 Thread Wei Wang
commands to report memory stats (replace the old statq mechanism) and report guest unused pages. Liang Li (1): virtio-balloon: deflate via a page list Wei Wang (5): virtio-balloon: coding format cleanup virtio-balloon: VIRTIO_BALLOON_F_PAGE_CHUNKS mm: function to offer a page block on the free

Re: [virtio-dev] Re: [PATCH v9 2/5] virtio-balloon: VIRTIO_BALLOON_F_BALLOON_CHUNKS

2017-05-08 Thread Wei Wang
On 05/09/2017 01:40 AM, Michael S. Tsirkin wrote: On Sun, May 07, 2017 at 04:19:28AM +, Wang, Wei W wrote: On 05/06/2017 06:26 AM, Michael S. Tsirkin wrote: On Thu, Apr 27, 2017 at 02:31:49PM +0800, Wei Wang wrote: On 04/27/2017 07:20 AM, Michael S. Tsirkin wrote: On Wed, Apr 26, 2017

[PATCH v10 6/6] virtio-balloon: VIRTIO_BALLOON_F_MISC_VQ

2017-05-04 Thread Wei Wang
offers to the device the guest unused pages. Tests have shown that skipping the transfer of unused pages of a 32G idle guest can get the live migration time reduced to 1/8. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> --- dr

[PATCH v10 5/6] mm: export symbol of next_zone and first_online_pgdat

2017-05-04 Thread Wei Wang
This patch enables for_each_zone()/for_each_populated_zone() to be invoked by a kernel module. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- mm/mmzone.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/mmzone.c b/mm/mmzone.c index a51c0a6..08a2a3a 100644 --- a/mm/mmzone.c ++

[PATCH v10 4/6] mm: function to offer a page block on the free list

2017-05-04 Thread Wei Wang
Add a function to find a page block on the free list specified by the caller. Pages from the page block may be used immediately after the function returns. The caller is responsible for detecting or preventing the use of such pages. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Sign

[PATCH v10 3/6] virtio-balloon: VIRTIO_BALLOON_F_PAGE_CHUNKS

2017-05-04 Thread Wei Wang
address translation and madvise() in chunks rather than page by page. 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: Wei Wang

[PATCH v10 0/6] Extend virtio-balloon for fast (de)inflating & fast live migration

2017-05-04 Thread Wei Wang
gether 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 Liang Li (1): virtio-balloon: deflate via a page list Wei Wang (5):

[PATCH v10 2/6] virtio-balloon: coding format cleanup

2017-05-04 Thread Wei Wang
Clean up the comment format. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- drivers/virtio/virtio_balloon.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 4a9f307..ecb64e9 100644 --- a/d

[PATCH v10 1/6] virtio-balloon: deflate via a page list

2017-05-04 Thread Wei Wang
From: Liang Li <liang.z...@intel.com> This patch saves the deflated pages to a list, instead of the PFN array. Accordingly, the balloon_pfn_to_page() function is removed. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signe

Re: [PATCH v9 5/5] virtio-balloon: VIRTIO_BALLOON_F_MISC_VQ

2017-04-27 Thread Wei Wang
On 04/14/2017 01:08 AM, Michael S. Tsirkin wrote: On Thu, Apr 13, 2017 at 05:35:08PM +0800, Wei Wang wrote: Add a new vq, miscq, to handle miscellaneous requests between the device and the driver. This patch implemnts the VIRTIO_BALLOON_MISCQ_INQUIRE_UNUSED_PAGES implements request sent

Re: [virtio-dev] Re: [PATCH v9 2/5] virtio-balloon: VIRTIO_BALLOON_F_BALLOON_CHUNKS

2017-04-27 Thread Wei Wang
On 04/27/2017 07:20 AM, Michael S. Tsirkin wrote: On Wed, Apr 26, 2017 at 11:03:34AM +, Wang, Wei W wrote: Hi Michael, could you please give some feedback? I'm sorry, I'm not sure feedback on what you are requesting. Oh, just some trivial things (e.g. use a field in the header,

Re: [virtio-dev] Re: [PATCH v9 2/5] virtio-balloon: VIRTIO_BALLOON_F_BALLOON_CHUNKS

2017-04-16 Thread Wei Wang
On 04/15/2017 05:38 AM, Michael S. Tsirkin wrote: On Fri, Apr 14, 2017 at 04:37:52PM +0800, Wei Wang wrote: On 04/14/2017 12:34 AM, Michael S. Tsirkin wrote: On Thu, Apr 13, 2017 at 05:35:05PM +0800, Wei Wang wrote: So we don't need the bitmap to talk to host, it is just a data structure we

Re: [PATCH v9 3/5] mm: function to offer a page block on the free list

2017-04-14 Thread Wei Wang
On 04/14/2017 10:58 AM, Matthew Wilcox wrote: On Fri, Apr 14, 2017 at 10:30:27AM +0800, Wei Wang wrote: OK. What do you think if we add this: #if defined(CONFIG_VIRTIO_BALLOON) || defined(CONFIG_VIRTIO_BALLOON_MODULE) That's spelled "IS_ENABLED(CONFIG_VIRTIO_BALLOON)", FYI. Rig

Re: [PATCH v9 3/5] mm: function to offer a page block on the free list

2017-04-13 Thread Wei Wang
On 04/14/2017 04:02 AM, Andrew Morton wrote: On Thu, 13 Apr 2017 17:35:06 +0800 Wei Wang <wei.w.w...@intel.com> wrote: Add a function to find a page block on the free list specified by the caller. Pages from the page block may be used immediately after the function returns. The

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

2017-04-13 Thread Wei Wang
On 04/14/2017 09:50 AM, Michael S. Tsirkin wrote: On Thu, Apr 13, 2017 at 01:44:11PM -0700, Matthew Wilcox wrote: On Thu, Apr 13, 2017 at 05:35:03PM +0800, Wei Wang wrote: 2) transfer the guest unused pages to the host so that they can be skipped to migrate in live migration. I don't

Re: [PATCH kernel v8 3/4] mm: add inerface to offer info about unused pages

2017-04-13 Thread Wei Wang
On 03/17/2017 05:28 AM, Andrew Morton wrote: On Thu, 16 Mar 2017 15:08:46 +0800 Wei Wang <wei.w.w...@intel.com> wrote: From: Liang Li <liang.z...@intel.com> This patch adds a function to provides a snapshot of the present system unused pages. An important usage of this function i

[PATCH v9 5/5] virtio-balloon: VIRTIO_BALLOON_F_MISC_VQ

2017-04-13 Thread Wei Wang
shown that skipping the transfer of unused pages of a 32G guest can get the live migration time reduced to 1/8. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> --- drivers/virtio/virtio_balloon.c | 209 +

[PATCH v9 3/5] mm: function to offer a page block on the free list

2017-04-13 Thread Wei Wang
Add a function to find a page block on the free list specified by the caller. Pages from the page block may be used immediately after the function returns. The caller is responsible for detecting or preventing the use of such pages. Signed-off-by: Wei Wang <wei.w.w...@intel.com> Sign

[PATCH v9 4/5] mm: export symbol of next_zone and first_online_pgdat

2017-04-13 Thread Wei Wang
This patch enables for_each_zone()/for_each_populated_zone() to be invoked by a kernel module. Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- mm/mmzone.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/mmzone.c b/mm/mmzone.c index 5652be8..e14b7ec 100644 --- a/mm/mmzone.c ++

[PATCH v9 2/5] virtio-balloon: VIRTIO_BALLOON_F_BALLOON_CHUNKS

2017-04-13 Thread Wei Wang
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: Wei Wang <wei.w.w...@intel.com> Signed-off-by: Liang Li <liang.z...@intel.com> Suggested-by: Michael S

[PATCH v9 1/5] virtio-balloon: deflate via a page list

2017-04-13 Thread Wei Wang
From: Liang Li <liang.z...@intel.com> This patch saves the deflated pages to a list, instead of the PFN array. Accordingly, the balloon_pfn_to_page() function is removed. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signe

[PATCH v9 0/5] Extend virtio-balloon for fast (de)inflating & fast live migration

2017-04-13 Thread Wei Wang
virtio-balloon: deflate via a page list Wei Wang (4): virtio-balloon: VIRTIO_BALLOON_F_BALLOON_CHUNKS mm: function to offer a page block on the free list mm: export symbol of next_zone and first_online_pgdat virtio-balloon: VIRTIO_BALLOON_F_MISC_VQ drivers/virtio/virtio_balloon.c

Re: [PATCH kernel v8 3/4] mm: add inerface to offer info about unused pages

2017-03-31 Thread Wei Wang
On 03/30/2017 01:48 AM, Michael S. Tsirkin wrote: On Fri, Mar 17, 2017 at 02:55:33PM +0800, Wei Wang wrote: On 03/17/2017 05:28 AM, Andrew Morton wrote: On Thu, 16 Mar 2017 15:08:46 +0800 Wei Wang <wei.w.w...@intel.com> wrote: From: Liang Li <liang.z...@intel.com> This patch add

Re: [PATCH kernel v8 3/4] mm: add inerface to offer info about unused pages

2017-03-17 Thread Wei Wang
On 03/17/2017 05:28 AM, Andrew Morton wrote: On Thu, 16 Mar 2017 15:08:46 +0800 Wei Wang <wei.w.w...@intel.com> wrote: From: Liang Li <liang.z...@intel.com> This patch adds a function to provides a snapshot of the present system unused pages. An important usage of this function i

[PATCH kernel v8 4/4] virtio-balloon: VIRTIO_BALLOON_F_HOST_REQ_VQ

2017-03-16 Thread Wei Wang
future. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- drivers/virtio/virtio_balloon.c | 140 ++-- include/uapi/linux/virtio_balloon.h | 22 ++ 2 files changed, 157 insertions(+), 5 deleti

[PATCH kernel v8 3/4] mm: add inerface to offer info about unused pages

2017-03-16 Thread Wei Wang
be re-tracked by the dirty page logging mechanisms. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- include/linux/mm.h | 3 ++ mm/page_alloc.c| 114 + 2 files changed, 117 i

[PATCH kernel v8 2/4] virtio-balloon: VIRTIO_BALLOON_F_CHUNK_TRANSFER

2017-03-16 Thread Wei Wang
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...@intel.com> Signed-off-by: Wei Wang <wei.w.w...@intel.com> Suggested-by: Michael S. Tsirki

[PATCH kernel v8 1/4] virtio-balloon: deflate via a page list

2017-03-16 Thread Wei Wang
From: Liang Li <liang.z...@intel.com> This patch saves the deflated pages to a list, instead of the PFN array. Accordingly, the balloon_pfn_to_page() function is removed. Signed-off-by: Liang Li <liang.z...@intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> Signe

[PATCH kernel v8 0/4] Extend virtio-balloon for fast (de)inflating & fast live migration

2017-03-16 Thread Wei Wang
This patch series implements two optimizations: 1) transfer pages in chuncks between the guest and host; 2) transfer the guest unused pages to the host so that they can be skipped to migrate in live migration. Please read each patch commit log for details. Changes: v7->v8: 1) Use only one chunk

Re: [PATCH v7 kernel 3/5] virtio-balloon: implementation of VIRTIO_BALLOON_F_CHUNK_TRANSFER

2017-03-11 Thread Wei Wang
On 03/11/2017 01:11 AM, Matthew Wilcox wrote: On Fri, Mar 10, 2017 at 05:58:28PM +0200, Michael S. Tsirkin wrote: One of the issues of current balloon is the 4k page size assumption. For example if you free a huge page you have to split it up and pass 4k chunks to host. Quite often host can't

<    1   2   3   4   5   >