Li, Liang Z
2016-Mar-10 08:36 UTC
[RFC qemu 0/4] A PV solution for live migration optimization
> > Could provide more information on how to use virtio-serial to exchange > data? Thread , Wiki or code are all OK. > > I have not find some useful information yet. > > See this commit in the Linux sources: > > 108fc82596e3b66b819df9d28c1ebbc9ab5de14c > > that adds a way to send guest trace data over to the host. I think that's the > most relevant to your use-case. However, you'll have to add an in-kernel > user of virtio-serial (like the virtio-console code > -- the code that deals with tty and hvc currently). There's no other non-tty > user right now, and this is the right kind of use-case to add one for! > > For many other (userspace) use-cases, see the qemu-guest-agent in the > qemu sources. > > The API is documented in the wiki: > > http://www.linux-kvm.org/page/Virtio-serial_API > > and the feature pages have some information that may help as well: > > https://fedoraproject.org/wiki/Features/VirtioSerial > > There are some links in here too: > > http://log.amitshah.net/2010/09/communication-between-guests-and- > hosts/ > > Hope this helps. > > > AmitThanks a lot !! Liang
Dr. David Alan Gilbert
2016-Mar-10 11:18 UTC
[RFC qemu 0/4] A PV solution for live migration optimization
Hi, I'm just catching back up on this thread; so without reference to any particular previous mail in the thread. 1) How many of the free pages do we tell the host about? Your main change is telling the host about all the free pages. If we tell the host about all the free pages, then we might end up needing to allocate more pages and update the host with pages we now want to use; that would have to wait for the host to acknowledge that use of these pages, since if we don't wait for it then it might have skipped migrating a page we just started using (I don't understand how your series solves that). So the guest probably needs to keep some free pages - how many? 2) Clearing out caches Does it make sense to clean caches? They're apparently useful data so if we clean them it's likely to slow the guest down; I guess they're also likely to be fairly static data - so at least fairly easy to migrate. The answer here partially depends on what you want from your migration; if you're after the fastest possible migration time it might make sense to clean the caches and avoid migrating them; but that might be at the cost of more disruption to the guest - there's a trade off somewhere and it's not clear to me how you set that depending on your guest/network/reqirements. 3) Why is ballooning slow? You've got a figure of 5s to balloon on an 8GB VM - but an 8GB VM isn't huge; so I worry about how long it would take on a big VM. We need to understand why it's slow * is it due to the guest shuffling pages around? * is it due to the virtio-balloon protocol sending one page at a time? + Do balloon pages normally clump in physical memory - i.e. would a 'large balloon' message help - or do we need a bitmap because it tends not to clump? * is it due to the madvise on the host? If we were using the normal balloon messages, then we could, during migration, just route those to the migration code rather than bothering with the madvise. If they're clumping together we could just turn that into one big madvise; if they're not then would we benefit from a call that lets us madvise lots of areas? 4) Speeding up the migration of those free pages You're using the bitmap to avoid migrating those free pages; HPe's patchset is reconstructing a bitmap from the balloon data; OK, so this all makes sense to avoid migrating them - I'd also been thinking of using pagemap to spot zero pages that would help find other zero'd pages, but perhaps ballooned is enough? 5) Second-migrate Given a VM where you've done all those tricks on, what happens when you migrate it a second time? I guess you're aiming for the guest to update it's bitmap; HPe's solution is to migrate it's balloon bitmap along with the migration data. Dave -- Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK
Li, Liang Z
2016-Mar-11 02:38 UTC
[RFC qemu 0/4] A PV solution for live migration optimization
> > Hi, > I'm just catching back up on this thread; so without reference to any > particular previous mail in the thread. > > 1) How many of the free pages do we tell the host about? > Your main change is telling the host about all the > free pages.Yes, all the guest's free pages.> If we tell the host about all the free pages, then we might > end up needing to allocate more pages and update the host > with pages we now want to use; that would have to wait for the > host to acknowledge that use of these pages, since if we don't > wait for it then it might have skipped migrating a page we > just started using (I don't understand how your series solves that). > So the guest probably needs to keep some free pages - how many?Actually, there is no need to care about whether the free pages will be used by the host. We only care about some of the free pages we get reused by the guest, right? The dirty page logging can be used to solve this, starting the dirty page logging before getting the free pages informant from guest. Even some of the free pages are modified by the guest during the process of getting the free pages information, these modified pages will be traced by the dirty page logging mechanism. So in the following migration_bitmap_sync() function. The pages in the free pages bitmap, but latter was modified, will be reset to dirty. We won't omit any dirtied pages. So, guest doesn't need to keep any free pages.> 2) Clearing out caches > Does it make sense to clean caches? They're apparently useful data > so if we clean them it's likely to slow the guest down; I guess > they're also likely to be fairly static data - so at least fairly > easy to migrate. > The answer here partially depends on what you want from your migration; > if you're after the fastest possible migration time it might make > sense to clean the caches and avoid migrating them; but that might > be at the cost of more disruption to the guest - there's a trade off > somewhere and it's not clear to me how you set that depending on your > guest/network/reqirements. >Yes, clean the caches is an option. Let the users decide using it or not.> 3) Why is ballooning slow? > You've got a figure of 5s to balloon on an 8GB VM - but an > 8GB VM isn't huge; so I worry about how long it would take > on a big VM. We need to understand why it's slow > * is it due to the guest shuffling pages around? > * is it due to the virtio-balloon protocol sending one page > at a time? > + Do balloon pages normally clump in physical memory > - i.e. would a 'large balloon' message help > - or do we need a bitmap because it tends not to clump? >I didn't do a comprehensive test. But I found most of the time spending on allocating the pages and sending the PFNs to guest, I don't know that's the most time consuming operation, allocating the pages or sending the PFNs.> * is it due to the madvise on the host? > If we were using the normal balloon messages, then we > could, during migration, just route those to the migration > code rather than bothering with the madvise. > If they're clumping together we could just turn that into > one big madvise; if they're not then would we benefit from > a call that lets us madvise lots of areas? >My test showed madvise() is not the main reason for the long time, only taken 10% of the total inflating balloon operation time. Big madvise can more or less improve the performance.> 4) Speeding up the migration of those free pages > You're using the bitmap to avoid migrating those free pages; HPe's > patchset is reconstructing a bitmap from the balloon data; OK, so > this all makes sense to avoid migrating them - I'd also been thinking > of using pagemap to spot zero pages that would help find other zero'd > pages, but perhaps ballooned is enough? >Could you describe your ideal with more details?> 5) Second-migrate > Given a VM where you've done all those tricks on, what happens when > you migrate it a second time? I guess you're aiming for the guest > to update it's bitmap; HPe's solution is to migrate it's balloon > bitmap along with the migration data.Nothing is special in the second migration, QEMU will request the guest for free pages Information, and the guest will traverse it's current free page list to construct a new free page bitmap and send it to QEMU. Just like in the first migration. Liang> > Dave > > -- > Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK
Possibly Parallel Threads
- [RFC qemu 0/4] A PV solution for live migration optimization
- [RFC qemu 0/4] A PV solution for live migration optimization
- [RFC qemu 0/4] A PV solution for live migration optimization
- [RFC qemu 0/4] A PV solution for live migration optimization
- [RFC qemu 0/4] A PV solution for live migration optimization