Messages in this thread | | | From | "Li, Liang Z" <> | Subject | RE: [PATCH v2 repost 4/7] virtio-balloon: speed up inflate/deflate process | Date | Fri, 29 Jul 2016 00:38:18 +0000 |
| |
> On Thu, Jul 28, 2016 at 03:06:37AM +0000, Li, Liang Z wrote: > > > > + * VIRTIO_BALLOON_PFNS_LIMIT is used to limit the size of page > > > > +bitmap > > > > + * to prevent a very large page bitmap, there are two reasons for this: > > > > + * 1) to save memory. > > > > + * 2) allocate a large bitmap may fail. > > > > + * > > > > + * The actual limit of pfn is determined by: > > > > + * pfn_limit = min(max_pfn, VIRTIO_BALLOON_PFNS_LIMIT); > > > > + * > > > > + * If system has more pages than VIRTIO_BALLOON_PFNS_LIMIT, we > > > > +will scan > > > > + * the page list and send the PFNs with several times. To reduce > > > > +the > > > > + * overhead of scanning the page list. VIRTIO_BALLOON_PFNS_LIMIT > > > > +should > > > > + * be set with a value which can cover most cases. > > > > > > So what if it covers 1/32 of the memory? We'll do 32 exits and not > > > 1, still not a big deal for a big guest. > > > > > > > The issue here is the overhead is too high for scanning the page list for 32 > times. > > Limit the page bitmap size to a fixed value is better for a big guest? > > > > I'd say avoid scanning free lists completely. Scan pages themselves and check > the refcount to see whether they are free. > This way each page needs to be tested once. > > And skip the whole optimization if less than e.g. 10% is free.
That's better than rescanning the free list. Will change in next version.
Thanks!
Liang
| |