[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v4 12/28] arch_init: Start to trace dirty pages
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [RFC PATCH v4 12/28] arch_init: Start to trace dirty pages of SVM |
Date: |
Thu, 26 Mar 2015 13:29:18 +0800 |
we will use this dirty bitmap together with VM's cache RAM dirty bitmap
to decide which page in cache should be flushed into VM's RAM.
Signed-off-by: zhanghailiang <address@hidden>
---
arch_init.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch_init.c b/arch_init.c
index e32d258..f3f2460 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -1277,6 +1277,7 @@ static int ram_load(QEMUFile *f, void *opaque, int
version_id)
void create_and_init_ram_cache(void)
{
RAMBlock *block;
+ int64_t ram_cache_pages = last_ram_offset() >> TARGET_PAGE_BITS;
rcu_read_lock();
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
@@ -1286,6 +1287,14 @@ void create_and_init_ram_cache(void)
rcu_read_unlock();
ram_cache_enable = true;
+ /*
+ * Start dirty log for slave VM, we will use this dirty bitmap together with
+ * VM's cache RAM dirty bitmap to decide which page in cache should be
+ * flushed into VM's RAM.
+ */
+ migration_bitmap = bitmap_new(ram_cache_pages);
+ migration_dirty_pages = 0;
+ memory_global_dirty_log_start();
}
void release_ram_cache(void)
@@ -1294,6 +1303,12 @@ void release_ram_cache(void)
ram_cache_enable = false;
+ if (migration_bitmap) {
+ memory_global_dirty_log_stop();
+ g_free(migration_bitmap);
+ migration_bitmap = NULL;
+ }
+
rcu_read_lock();
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
g_free(block->host_cache);
--
1.7.12.4
- [Qemu-devel] [RFC PATCH v4 00/28] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 11/28] COLO VMstate: Load VM state into qsb before restore it, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 04/28] migration: Integrate COLO checkpoint process into migration, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 12/28] arch_init: Start to trace dirty pages of SVM,
zhanghailiang <=
- [Qemu-devel] [RFC PATCH v4 09/28] COLO: Save VM state to slave when do checkpoint, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 07/28] COLO: Add a new RunState RUN_STATE_COLO, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 08/28] QEMUSizedBuffer: Introduce two help functions for qsb, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 01/28] configure: Add parameter for configure to enable/disable COLO support, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 02/28] migration: Introduce capability 'colo' to migration, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 23/28] COLO: Improve checkpoint efficiency by do additional periodic checkpoint, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 18/28] COLO NIC: Init/remove colo nic devices when add/cleanup tap devices, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 19/28] COLO NIC: Implement colo nic device interface configure(), zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 05/28] migration: Integrate COLO checkpoint process into loadvm, zhanghailiang, 2015/03/26
- [Qemu-devel] [RFC PATCH v4 26/28] COLO: Disable qdev hotplug when VM is in COLO mode, zhanghailiang, 2015/03/26