From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yoshiaki Tamura Subject: [PATCH v2 0/6] Introduce bit-based phys_ram_dirty, and bit-based dirty page checker. Date: Tue, 6 Apr 2010 09:51:18 +0900 Message-ID: <1270515084-24120-1-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> Cc: avi@redhat.com, anthony@codemonkey.ws, aliguori@us.ibm.com, mtosatti@redhat.com, ohmura.kei@lab.ntt.co.jp To: kvm@vger.kernel.org, qemu-devel@nongnu.org Return-path: Received: from sh.osrg.net ([192.16.179.4]:47254 "EHLO sh.osrg.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755877Ab0DFA5P (ORCPT ); Mon, 5 Apr 2010 20:57:15 -0400 Sender: kvm-owner@vger.kernel.org List-ID: The dirty and non-dirty pages are checked one by one. When most of the memory is not dirty, checking the dirty and non-dirty pages by multiple page size should be much faster than checking them one by one. We introduced bit-based phys_ram_dirty for VGA, CODE, MIGRATION, MASTER, and cpu_physical_memory_get_dirty_range() for this purpose. This patch set is v2 based on the following discussion. http://www.mail-archive.com/kvm@vger.kernel.org/msg30722.html I also rebased to qemu.git, but it needs the folloing patch set to be applied. http://article.gmane.org/gmane.comp.emulators.qemu/66007 Yoshiaki Tamura (6): Modify DIRTY_FLAG value to use as indexes of bit-based phys_ram_dirty. Introduce bit-based phys_ram_dirty for VGA, CODE, MIGRATION and MASTER. Modifies wrapper functions for byte-based phys_ram_dirty bitmap to bit-based phys_ram_dirty bitmap. Introduce cpu_physical_memory_get_dirty_range(). Use cpu_physical_memory_set_dirty_range() to update phys_ram_dirty. Use cpu_physical_memory_get_dirty_range() to check multiple dirty pages. arch_init.c | 54 ++++++++++++++++++++------------ bswap.h | 2 + cpu-all.h | 95 +++++++++++++++++++++++++++++++++++++++++++++++--------- exec.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- kvm-all.c | 33 +++++++++----------- 5 files changed, 222 insertions(+), 60 deletions(-) From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nyx6J-0001tU-49 for qemu-devel@nongnu.org; Mon, 05 Apr 2010 20:57:07 -0400 Received: from [140.186.70.92] (port=43929 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nyx6E-0001rj-DQ for qemu-devel@nongnu.org; Mon, 05 Apr 2010 20:57:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Nyx6C-0001fa-L5 for qemu-devel@nongnu.org; Mon, 05 Apr 2010 20:57:02 -0400 Received: from sh.osrg.net ([192.16.179.4]:60019) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Nyx6B-0001ep-EC for qemu-devel@nongnu.org; Mon, 05 Apr 2010 20:56:59 -0400 From: Yoshiaki Tamura Date: Tue, 6 Apr 2010 09:51:18 +0900 Message-Id: <1270515084-24120-1-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> Subject: [Qemu-devel] [PATCH v2 0/6] Introduce bit-based phys_ram_dirty, and bit-based dirty page checker. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: kvm@vger.kernel.org, qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, mtosatti@redhat.com, avi@redhat.com, ohmura.kei@lab.ntt.co.jp The dirty and non-dirty pages are checked one by one. When most of the memory is not dirty, checking the dirty and non-dirty pages by multiple page size should be much faster than checking them one by one. We introduced bit-based phys_ram_dirty for VGA, CODE, MIGRATION, MASTER, and cpu_physical_memory_get_dirty_range() for this purpose. This patch set is v2 based on the following discussion. http://www.mail-archive.com/kvm@vger.kernel.org/msg30722.html I also rebased to qemu.git, but it needs the folloing patch set to be applied. http://article.gmane.org/gmane.comp.emulators.qemu/66007 Yoshiaki Tamura (6): Modify DIRTY_FLAG value to use as indexes of bit-based phys_ram_dirty. Introduce bit-based phys_ram_dirty for VGA, CODE, MIGRATION and MASTER. Modifies wrapper functions for byte-based phys_ram_dirty bitmap to bit-based phys_ram_dirty bitmap. Introduce cpu_physical_memory_get_dirty_range(). Use cpu_physical_memory_set_dirty_range() to update phys_ram_dirty. Use cpu_physical_memory_get_dirty_range() to check multiple dirty pages. arch_init.c | 54 ++++++++++++++++++++------------ bswap.h | 2 + cpu-all.h | 95 +++++++++++++++++++++++++++++++++++++++++++++++--------- exec.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- kvm-all.c | 33 +++++++++----------- 5 files changed, 222 insertions(+), 60 deletions(-)