Li, Liang Z
2016-Mar-04 01:52 UTC
[RFC qemu 0/4] A PV solution for live migration optimization
> Subject: Re: [RFC qemu 0/4] A PV solution for live migration optimization > > * Liang Li (liang.z.li at intel.com) wrote: > > The current QEMU live migration implementation mark the all the > > guest's RAM pages as dirtied in the ram bulk stage, all these pages > > will be processed and that takes quit a lot of CPU cycles. > > > > From guest's point of view, it doesn't care about the content in free > > pages. We can make use of this fact and skip processing the free pages > > in the ram bulk stage, it can save a lot CPU cycles and reduce the > > network traffic significantly while speed up the live migration > > process obviously. > > > > This patch set is the QEMU side implementation. > > > > The virtio-balloon is extended so that QEMU can get the free pages > > information from the guest through virtio. > > > > After getting the free pages information (a bitmap), QEMU can use it > > to filter out the guest's free pages in the ram bulk stage. This make > > the live migration process much more efficient. > > Hi, > An interesting solution; I know a few different people have been looking at > how to speed up ballooned VM migration. >Ooh, different solutions for the same purpose, and both based on the balloon.> I wonder if it would be possible to avoid the kernel changes by parsing > /proc/self/pagemap - if that can be used to detect unmapped/zero mapped > pages in the guest ram, would it achieve the same result? >Only detect the unmapped/zero mapped pages is not enough. Consider the situation like case 2, it can't achieve the same result.> > This RFC version doesn't take the post-copy and RDMA into > > consideration, maybe both of them can benefit from this PV solution by > > with some extra modifications. > > For postcopy to be safe, you would still need to send a message to the > destination telling it that there were zero pages, otherwise the destination > can't tell if it's supposed to request the page from the source or treat the > page as zero. > > DaveI will consider this later, thanks, Dave. Liang> > > > > Performance data > > ===============> > > > Test environment: > > > > CPU: Intel (R) Xeon(R) CPU ES-2699 v3 @ 2.30GHz Host RAM: 64GB > > Host Linux Kernel: 4.2.0 Host OS: CentOS 7.1 > > Guest Linux Kernel: 4.5.rc6 Guest OS: CentOS 6.6 > > Network: X540-AT2 with 10 Gigabit connection Guest RAM: 8GB > > > > Case 1: Idle guest just boots: > > ===========================================> > | original | pv > > ------------------------------------------- > > total time(ms) | 1894 | 421 > > -------------------------------------------- > > transferred ram(KB) | 398017 | 353242 > > ===========================================> > > > > > Case 2: The guest has ever run some memory consuming workload, the > > workload is terminated just before live migration. > > ===========================================> > | original | pv > > ------------------------------------------- > > total time(ms) | 7436 | 552 > > -------------------------------------------- > > transferred ram(KB) | 8146291 | 361375 > > ===========================================> >
Roman Kagan
2016-Mar-04 08:14 UTC
[Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
On Fri, Mar 04, 2016 at 01:52:53AM +0000, Li, Liang Z wrote:> > I wonder if it would be possible to avoid the kernel changes by parsing > > /proc/self/pagemap - if that can be used to detect unmapped/zero mapped > > pages in the guest ram, would it achieve the same result? > > Only detect the unmapped/zero mapped pages is not enough. Consider the > situation like case 2, it can't achieve the same result.Your case 2 doesn't exist in the real world. If people could stop their main memory consumer in the guest prior to migration they wouldn't need live migration at all. I tend to think you can safely assume there's no free memory in the guest, so there's little point optimizing for it. OTOH it makes perfect sense optimizing for the unmapped memory that's made up, in particular, by the ballon, and consider inflating the balloon right before migration unless you already maintain it at the optimal size for other reasons (like e.g. a global resource manager optimizing the VM density). Roman.
Li, Liang Z
2016-Mar-04 09:08 UTC
[Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
> On Fri, Mar 04, 2016 at 01:52:53AM +0000, Li, Liang Z wrote: > > > I wonder if it would be possible to avoid the kernel changes by > > > parsing /proc/self/pagemap - if that can be used to detect > > > unmapped/zero mapped pages in the guest ram, would it achieve the > same result? > > > > Only detect the unmapped/zero mapped pages is not enough. Consider > the > > situation like case 2, it can't achieve the same result. > > Your case 2 doesn't exist in the real world. If people could stop their main > memory consumer in the guest prior to migration they wouldn't need live > migration at all.The case 2 is just a simplified scenario, not a real case. As long as the guest's memory usage does not keep increasing, or not always run out, it can be covered by the case 2.> I tend to think you can safely assume there's no free memory in the guest, so > there's little point optimizing for it.If this is true, we should not inflate the balloon either.> OTOH it makes perfect sense optimizing for the unmapped memory that's > made up, in particular, by the ballon, and consider inflating the balloon right > before migration unless you already maintain it at the optimal size for other > reasons (like e.g. a global resource manager optimizing the VM density). >Yes, I believe the current balloon works and it's simple. Do you take the performance impact for consideration? For and 8G guest, it takes about 5s to inflating the balloon. But it only takes 20ms to traverse the free_list and construct the free pages bitmap. In this period, the guest are very busy. By inflating the balloon, all the guest's pages are still be processed (zero page checking). The only advantage of ' inflating the balloon before live migration' is simple, nothing more. Liang> Roman.
Apparently Analagous Threads
- [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
- [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
- [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
- [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization
- [Qemu-devel] [RFC qemu 0/4] A PV solution for live migration optimization