> 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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html