[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC v3 23/27] COLO: Improve checkpoint efficiency by
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH RFC v3 23/27] COLO: Improve checkpoint efficiency by do additional periodic checkpoint |
Date: |
Thu, 12 Feb 2015 11:17:10 +0800 |
Besides normal checkpoint which according to the result of net packets
comparing, We do additional checkpoint periodically, it will reduce the number
of dirty pages when do one checkpoint, if we don't do checkpoint for a long
time (This is a special case when the net packets is always consistent).
Signed-off-by: zhanghailiang <address@hidden>
Signed-off-by: Yang Hongyang <address@hidden>
---
migration/colo.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/migration/colo.c b/migration/colo.c
index 3e13611..579aabf 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -10,6 +10,7 @@
* later. See the COPYING file in the top-level directory.
*/
+#include "qemu/timer.h"
#include "sysemu/sysemu.h"
#include "migration/migration-colo.h"
#include "qemu/error-report.h"
@@ -290,6 +291,8 @@ out:
static void *colo_thread(void *opaque)
{
MigrationState *s = opaque;
+ int64_t start_time = qemu_clock_get_ms(QEMU_CLOCK_HOST);
+ int64_t current_time;
QEMUFile *colo_control = NULL;
int ret;
@@ -338,8 +341,14 @@ static void *colo_thread(void *opaque)
* No checkpoint is needed, wait for 1ms and then
* check if we need checkpoint again
*/
- usleep(1000);
- continue;
+ current_time = qemu_clock_get_ms(QEMU_CLOCK_HOST);
+ if (current_time - start_time < CHKPOINT_TIMER) {
+ if (failover_request_is_set()) {
+ goto out;
+ }
+ usleep(1000);
+ continue;
+ }
} else {
DPRINTF("Net packets is not consistent!!!\n");
}
@@ -348,6 +357,8 @@ static void *colo_thread(void *opaque)
if (do_colo_transaction(s, colo_control)) {
goto out;
}
+
+ start_time = qemu_clock_get_ms(QEMU_CLOCK_HOST);
}
out:
--
1.7.12.4
- [Qemu-devel] [PATCH RFC v3 22/27] COLO: Do checkpoint according to the result of net packets comparing, (continued)
- [Qemu-devel] [PATCH RFC v3 22/27] COLO: Do checkpoint according to the result of net packets comparing, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 26/27] COLO: Implement shutdown checkpoint, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 25/27] COLO: Disable qdev hotplug when VM is in COLO mode, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 24/27] COLO NIC: Implement NIC checkpoint and failover, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 27/27] COLO: Add block replication into colo process, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 05/27] migration: Integrate COLO checkpoint process into loadvm, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 11/27] COLO RAM: Load PVM's dirty page into SVM's RAM cache temporarily, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 14/27] COLO failover: Introduce a new command to trigger a failover, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 06/27] migration: Don't send vm description in COLO mode, zhanghailiang, 2015/02/11
- [Qemu-devel] [PATCH RFC v3 23/27] COLO: Improve checkpoint efficiency by do additional periodic checkpoint,
zhanghailiang <=
- [Qemu-devel] [PATCH RFC v3 03/27] COLO: migrate colo related info to slave, zhanghailiang, 2015/02/11
- Re: [Qemu-devel] [PATCH RFC v3 00/27] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service, Dr. David Alan Gilbert, 2015/02/16
- Re: [Qemu-devel] [PATCH RFC v3 00/27] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service, Dr. David Alan Gilbert, 2015/02/24
- Re: [Qemu-devel] [PATCH RFC v3 00/27] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service, Dr. David Alan Gilbert, 2015/02/24