qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC kernel 0/2]A PV solution for KVM live migration optimization
@ 2016-03-03 10:46 Liang Li
  2016-03-03 10:46 ` [Qemu-devel] [RFC kernel 1/2] mm: Add the functions used to get free pages information Liang Li
  2016-03-03 10:46 ` [Qemu-devel] [RFC kernel 2/2] virtio-balloon: extend balloon driver to support a new feature Liang Li
  0 siblings, 2 replies; 6+ messages in thread
From: Liang Li @ 2016-03-03 10:46 UTC (permalink / raw)
  To: mst, linux-kernel
  Cc: ehabkost, kvm, quintela, Liang Li, qemu-devel, virtualization,
	linux-mm, amit.shah, pbonzini, akpm, dgilbert, rth

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 kernel side implementation.

It get the free pages information by traversing
zone->free_area[order].free_list, and construct a free pages bitmap.
The virtio-balloon driver is extended so as to send the free pages
bitmap to QEMU for live migration optimization.

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
============================================

Liang Li (2):
  mm: Add the functions used to get free pages information
  virtio-balloon: extend balloon driver to support a new feature

 drivers/virtio/virtio_balloon.c     | 108 ++++++++++++++++++++++++++++++++++--
 include/uapi/linux/virtio_balloon.h |   1 +
 mm/page_alloc.c                     |  58 +++++++++++++++++++
 3 files changed, 162 insertions(+), 5 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [RFC kernel 0/2]A PV solution for KVM live migration optimization
@ 2016-03-10  7:01 Jitendra Kolhe
  2016-03-10  7:22 ` Li, Liang Z
  2016-03-10  7:30 ` Amit Shah
  0 siblings, 2 replies; 6+ messages in thread
From: Jitendra Kolhe @ 2016-03-10  7:01 UTC (permalink / raw)
  To: amit.shah
  Cc: ehabkost, kvm, quintela, qemu-devel, liang.z.li, dgilbert,
	linux-kernel, linux-mm, mst, mohan_parthasarathy, simhan,
	pbonzini, akpm, virtualization, rth

On 3/8/2016 4:44 PM, Amit Shah wrote:
> On (Fri) 04 Mar 2016 [15:02:47], Jitendra Kolhe wrote:
>>>>
>>>> * Liang Li (liang.z.li@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.
>>
>> We were also tying to address similar problem, without actually needing to modify
>> the guest driver. Please find patch details under mail with subject.
>> migration: skip sending ram pages released by virtio-balloon driver
>
> The scope of this patch series seems to be wider: don't send free
> pages to a dest at all, vs. don't send pages that are ballooned out.
>
> 		Amit

Hi,

Thanks for your response. The scope of this patch series doesn’t seem to take care 
of ballooned out pages. To balloon out a guest ram page the guest balloon driver does 
a alloc_page() and then return the guest pfn to Qemu, so ballooned out pages will not 
be seen as free ram pages by the guest.
Thus we will still end up scanning (for zero page) for ballooned out pages during 
migration. It would be ideal if we could have both solutions.

Thanks,
- Jitendra

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-10  7:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-03 10:46 [Qemu-devel] [RFC kernel 0/2]A PV solution for KVM live migration optimization Liang Li
2016-03-03 10:46 ` [Qemu-devel] [RFC kernel 1/2] mm: Add the functions used to get free pages information Liang Li
2016-03-03 10:46 ` [Qemu-devel] [RFC kernel 2/2] virtio-balloon: extend balloon driver to support a new feature Liang Li
  -- strict thread matches above, loose matches on Subject: below --
2016-03-10  7:01 [Qemu-devel] [RFC kernel 0/2]A PV solution for KVM live migration optimization Jitendra Kolhe
2016-03-10  7:22 ` Li, Liang Z
2016-03-10  7:30 ` Amit Shah

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).