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);

Reply via email to