[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH COLO-Frame v16 for-2.7 00/35] COarse-grain LOck-step
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH COLO-Frame v16 for-2.7 00/35] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT) |
Date: |
Fri, 8 Apr 2016 14:26:02 +0800 |
This is the 16th version of COLO (Still only support periodic checkpoint).
Here is only COLO frame part, you can get the whole codes from github:
https://github.com/coloft/qemu/commits/colo-v2.7-periodic-mode
There are little changes for this series except the netfilter releated part.
Patch status:
Unreviewed: patch 21, 32 ~ 35
Updated: patch 7, 13, 32 ~ 35
Cc: Jason Wang <address@hidden>
TODO:
1. Checkpoint based on proxy in qemu
2. The capability of continuous FT
3. Optimize the VM's downtime during checkpoint
v16:
- Fix compile broken due to missing osdep.h
- Add reviewed-by tag for patch 27, 28, 29
- Rename the COLO message send/receive helper function (patch 7, 13)
- Simplify the codes by using some notifier helpers in QEMU (patch 32)
- Remove the useless check in colo_add_buffer_filter() (patch 33)
- Remove the previous patch 36, 37 which export filter_buffer_flush()
to release the buffered packets for COLO, we simplify it by stopping
buffer filter while doing checkpoint, which will flush the buffered
packets by default. (patch 34)
v15:
- Go on the shutdown process if encounter error while sending shutdown
message to SVM. (patch 24)
- Rename qemu_need_skip_netfilter to qemu_netfilter_can_skip and Remove
some useless comment. (patch 31, Jason)
- Call object_new_with_props() directly to add filter in
colo_add_buffer_filter. (patch 34, Jason)
- Re-implement colo_set_filter_status() based on COLOBufferFilters
list. (patch 35)
- Re-implement colo_flush_filter_packets() based on COLOBufferFilters
list. (patch 37)
v14:
- Re-implement the network processing based on netfilter (Jason Wang)
- Rename 'COLOCommand' to 'COLOMessage'. (Markus's suggestion)
- Split two new patches (patch 27/28) from patch 29
- Fix some other comments from Dave and Markus.
v13:
- Refactor colo_*_cmd helper functions to use 'Error **errp' parameter
instead of return value to indicate success or failure. (patch 10)
- Remove the optional error message for COLO_EXIT event. (patch 25)
- Use semaphore to notify colo/colo incoming loop that failover work is
finished. (patch 26)
- Move COLO shutdown related codes to colo.c file. (patch 28)
- Fix memory leak bug for colo incoming loop. (new patch 31)
- Re-use some existed helper functions to realize the process of
saving/loading ram and device. (patch 32)
- Fix some other comments from Dave and Markus.
zhanghailiang (35):
configure: Add parameter for configure to enable/disable COLO support
migration: Introduce capability 'x-colo' to migration
COLO: migrate colo related info to secondary node
migration: Integrate COLO checkpoint process into migration
migration: Integrate COLO checkpoint process into loadvm
COLO/migration: Create a new communication path from destination to
source
COLO: Implement colo checkpoint protocol
COLO: Add a new RunState RUN_STATE_COLO
QEMUSizedBuffer: Introduce two help functions for qsb
COLO: Save PVM state to secondary side when do checkpoint
COLO: Load PVM's dirty pages into SVM's RAM cache temporarily
ram/COLO: Record the dirty pages that SVM received
COLO: Load VMState into qsb before restore it
COLO: Flush PVM's cached RAM into SVM's memory
COLO: Add checkpoint-delay parameter for migrate-set-parameters
COLO: synchronize PVM's state to SVM periodically
COLO failover: Introduce a new command to trigger a failover
COLO failover: Introduce state to record failover process
COLO: Implement failover work for Primary VM
COLO: Implement failover work for Secondary VM
qmp event: Add COLO_EXIT event to notify users while exited from COLO
COLO failover: Shutdown related socket fd when do failover
COLO failover: Don't do failover during loading VM's state
COLO: Process shutdown command for VM in COLO state
COLO: Update the global runstate after going into colo state
savevm: Introduce two helper functions for save/find loadvm_handlers
entry
migration/savevm: Add new helpers to process the different stages of
loadvm
migration/savevm: Export two helper functions for savevm process
COLO: Separate the process of saving/loading ram and device state
COLO: Split qemu_savevm_state_begin out of checkpoint process
filter-buffer: Accept zero interval
net: Add notifier/callback for netdev init
COLO/filter: add each netdev a buffer filter
COLO: manage the status of buffer filters for PVM
COLO: Add block replication into colo process
configure | 11 +
docs/qmp-events.txt | 16 +
hmp-commands.hx | 15 +
hmp.c | 15 +
hmp.h | 1 +
include/exec/ram_addr.h | 1 +
include/migration/colo.h | 42 +++
include/migration/failover.h | 33 ++
include/migration/migration.h | 16 +
include/migration/qemu-file.h | 3 +-
include/net/filter.h | 2 +
include/net/net.h | 3 +
include/sysemu/sysemu.h | 9 +
migration/Makefile.objs | 2 +
migration/colo-comm.c | 79 ++++
migration/colo-failover.c | 84 +++++
migration/colo.c | 855 ++++++++++++++++++++++++++++++++++++++++++
migration/migration.c | 90 ++++-
migration/qemu-file-buf.c | 61 +++
migration/ram.c | 175 ++++++++-
migration/savevm.c | 114 ++++--
net/filter-buffer.c | 12 -
net/net.c | 12 +
qapi-schema.json | 104 ++++-
qapi/event.json | 15 +
qmp-commands.hx | 24 +-
stubs/Makefile.objs | 1 +
stubs/migration-colo.c | 55 +++
trace-events | 8 +
vl.c | 31 +-
30 files changed, 1824 insertions(+), 65 deletions(-)
create mode 100644 include/migration/colo.h
create mode 100644 include/migration/failover.h
create mode 100644 migration/colo-comm.c
create mode 100644 migration/colo-failover.c
create mode 100644 migration/colo.c
create mode 100644 stubs/migration-colo.c
--
1.8.3.1
- [Qemu-devel] [PATCH COLO-Frame v16 for-2.7 00/35] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT),
zhanghailiang <=
- [Qemu-devel] [PATCH COLO-Frame v16 03/35] COLO: migrate colo related info to secondary node, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 05/35] migration: Integrate COLO checkpoint process into loadvm, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 02/35] migration: Introduce capability 'x-colo' to migration, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 01/35] configure: Add parameter for configure to enable/disable COLO support, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 06/35] COLO/migration: Create a new communication path from destination to source, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 07/35] COLO: Implement colo checkpoint protocol, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 04/35] migration: Integrate COLO checkpoint process into migration, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 09/35] QEMUSizedBuffer: Introduce two help functions for qsb, zhanghailiang, 2016/04/08
- [Qemu-devel] [PATCH COLO-Frame v16 13/35] COLO: Load VMState into qsb before restore it, zhanghailiang, 2016/04/08