Re: [PATCH RFC kernel] balloon: speed up inflating/deflating process

From: Paolo Bonzini
Date: Fri May 20 2016 - 07:20:00 EST




On 20/05/2016 11:59, Liang Li wrote:
> +
> + sg_init_table(sg, 5);
> + sg_set_buf(&sg[0], &flags, sizeof(flags));
> + sg_set_buf(&sg[1], &start_pfn, sizeof(start_pfn));
> + sg_set_buf(&sg[2], &page_shift, sizeof(page_shift));
> + sg_set_buf(&sg[3], &bmap_len, sizeof(bmap_len));

These four should probably be placed in a single struct and therefore a
single sg entry. It might even be faster to place it together with the
bitmap, thus avoiding the use of indirect descriptors.

You should also test ballooning of a 64GB guest after filling in the
page cache, not just ballooning of a freshly booted 4GB guest. This
will give you a much more sparse bitmap. Still, the improvement in
sending PFNs to the host are impressive.

Thanks,

Paolo

> + sg_set_buf(&sg[4], vb->page_bitmap +
> + (start_pfn / BITS_PER_LONG), bmap_len);
> + virtqueue_add_outbuf(vq, sg, 5, vb, GFP_KERNEL);