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

From: Michael S. Tsirkin
Date: Fri Apr 14 2017 - 10:23:01 EST


On Fri, Apr 14, 2017 at 02:47:40AM -0700, Matthew Wilcox wrote:
> On Fri, Apr 14, 2017 at 04:50:48AM +0300, 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 understand this second bit. You leave the pages on the free list,
> > > and tell the host they're free. What's preventing somebody else from
> > > allocating them and using them for something? Is the guest semi-frozen
> > > at this point with just enough of it running to ask the balloon driver
> > > to do things?
> >
> > There's missing documentation here.
> >
> > The way things actually work is host sends to guest
> > a request for unused pages and then write-protects all memory.
>
> ... hopefully you mean "write protects all memory, then sends a request
> for unused pages", otherwise there's a race condition.

Exactly.

> And I see the utility of this, but does this functionality belong in
> the balloon driver?

We have historically put all kind of memory-related functionality in the
balloon device. Consider for example memory statistics - seems related
conceptually. See patches 1-2: the new mechanism for reporting lists of
pages seems to be benefitial for both which seems to indicate using the
balloon for this is a good idea.

> It seems like it's something you might want even if you don't have the
> balloon driver loaded. Or something you might not want if you do have
> the balloon driver loaded.

Most of balloon functionality is kind of loosely coupled. Yes we could
split it up but I'm not sure what would this buy us. What do you have
in mind?

--
MST