qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH COLO-Frame v17 00/34] COarse-grain LOck-stepping


From: Hailiang Zhang
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v17 00/34] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT)
Date: Fri, 29 Jul 2016 08:41:16 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

On 2016/7/29 3:07, Dr. David Alan Gilbert wrote:
* zhanghailiang (address@hidden) wrote:
This is the 17th version of COLO FT feature.

Here is only COLO frame part, you can get the whole codes from github:
https://github.com/coloft/qemu/commits/colo-v3.0-periodic-mode

Migration now switches to use the new QIOChannel API. It only affects COLO's
patch 9 and patch 12, which we used the old qsb buffer before, and we updated
them with the new API. It's only involving tiny changes.

I notice that the block code has nearly been accepted; so perhaps it's
worth posting a version rebased on the current rc and then hopefully
we can line this core code up for the start of 2.8 as soon as the block
code lands.


Yes, thanks for reminding, I'll post next version in the next few days.

Hailiang

Dave

Patch status:
Unreviewed: patch 32 ~ 35
Updated: patch 9, 12, 32

Cc: Stefan Hajnoczi <address@hidden>
Cc: Jeff Cody <address@hidden>
Cc: Kevin Wolf <address@hidden>
Cc: Max Reitz <address@hidden>
Cc: Juan Quintela <address@hidden>
Cc: Amit Shah <address@hidden>
Cc: Dr. David Alan Gilbert <address@hidden>
Cc: Jason Wang <address@hidden>

PS: These series has been in community for a long time, it depends on
Changlong's block-replicaton series, but that has been blocked for a long
time, we really need help on reviewing that and this series.  Thanks.

TODO:
1. Checkpoint based on proxy in qemu
2. The capability of continuous FT
3. Optimize the VM's downtime during checkpoint

v17:
  - Rebase master to use the new QIOChannel API, only affect patch 9 and 12
  - Reorganize some ugly comments
  - Rename colo_sem to colo_exit_sem (patch 21)

v16:
  - Fix compile broken due to missing osdep.h
  - Add reviewed-by tag for patch 27, 28, 29
  - Rename the 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, 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 (34):
   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
   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 buffer 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: Control 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      |  43 +++
  include/migration/failover.h  |  33 ++
  include/migration/migration.h |  16 +
  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              | 844 ++++++++++++++++++++++++++++++++++++++++++
  migration/migration.c         |  84 ++++-
  migration/ram.c               | 175 ++++++++-
  migration/savevm.c            | 114 ++++--
  net/filter-buffer.c           |  12 -
  net/net.c                     |  12 +
  qapi-schema.json              | 102 ++++-
  qapi/event.json               |  15 +
  qmp-commands.hx               |  24 +-
  stubs/Makefile.objs           |   1 +
  stubs/migration-colo.c        |  55 +++
  trace-events                  |   8 +
  vl.c                          |  31 +-
  28 files changed, 1744 insertions(+), 63 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


--
Dr. David Alan Gilbert / address@hidden / Manchester, UK

.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]