From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161176AbcG0Ba6 (ORCPT ); Tue, 26 Jul 2016 21:30:58 -0400 Received: from mga09.intel.com ([134.134.136.24]:47359 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932591AbcG0Bay (ORCPT ); Tue, 26 Jul 2016 21:30:54 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,427,1464678000"; d="scan'208";a="1003177540" From: Liang Li To: linux-kernel@vger.kernel.org Cc: virtualization@lists.linux-foundation.org, linux-mm@kvack.org, virtio-dev@lists.oasis-open.org, kvm@vger.kernel.org, qemu-devel@nongnu.org, dgilbert@redhat.com, quintela@redhat.com, Liang Li Subject: [PATCH v2 repost 0/7] Extend virtio-balloon for fast (de)inflating & fast live migration Date: Wed, 27 Jul 2016 09:23:29 +0800 Message-Id: <1469582616-5729-1-git-send-email-liang.z.li@intel.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patchset is for kernel and contains two parts of change to the virtio-balloon. One is the change for speeding up the inflating & deflating process, the main idea of this optimization is to use bitmap to send the page information to host instead of the PFNs, to reduce the overhead of virtio data transmission, address translation and madvise(). This can help to improve the performance by about 85%. Another change is for speeding up live migration. By skipping process guest's free pages in the first round of data copy, to reduce needless data processing, this can help to save quite a lot of CPU cycles and network bandwidth. We put guest's free page information in bitmap and send it to host with the virt queue of virtio-balloon. For an idle 8GB guest, this can help to shorten the total live migration time from 2Sec to about 500ms in the 10Gbps network environment. Changes from v1 to v2: * Abandon the patch for dropping page cache. * Put some structures to uapi head file. * Use a new way to determine the page bitmap size. * Use a unified way to send the free page information with the bitmap * Address the issues referred in MST's comments Liang Li (7): virtio-balloon: rework deflate to add page to a list virtio-balloon: define new feature bit and page bitmap head mm: add a function to get the max pfn virtio-balloon: speed up inflate/deflate process virtio-balloon: define feature bit and head for misc virt queue mm: add the related functions to get free page info virtio-balloon: tell host vm's free page info drivers/virtio/virtio_balloon.c | 306 +++++++++++++++++++++++++++++++----- include/uapi/linux/virtio_balloon.h | 41 +++++ mm/page_alloc.c | 52 ++++++ 3 files changed, 359 insertions(+), 40 deletions(-) -- 1.9.1