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

Re: [Xen-devel] [PATCH v4 --for 4.6 COLOPre 20/25] tools/libx{l, c}: add back channel to libxc





On 07/15/2015 09:21 PM, Andrew Cooper wrote:
On 15/07/15 08:45, Yang Hongyang wrote:
In COLO mode, both VMs are running, and are considered in sync if the
visible network traffic is identical.  After some time, they fall out of
sync.

At this point, the two VMs have definitely diverged.  Lets call the
primary dirty bitmap set A, while the secondary dirty bitmap set B.

Sets A and B are different.

Under normal migration, the page data for set A will be sent form the
primary to the secondary.

However, the set difference B - A (lets call this C) is out-of-date on
the secondary (with respect to the primary) and will not be sent by the
primary, as it was not memory dirtied by the primary.  The secondary
needs the page data for C to reconstruct an exact copy of the primary at
the checkpoint.

The secondary cannot calculate C as it doesn't know A.  Instead, the
secondary must send B to the primary, at which point the primary
calculates the union of A and B (lets call this D) which is all the
pages dirtied by both the primary and the secondary, and sends all page
data covered by D.

In the general case, D is a superset of both A and B.  Without the
backchannel dirty bitmap, a COLO checkpoint can't reconstruct a valid
copy of the primary.

We transfer the dirty bitmap on libxc side, so we need to introduce back
channel to libxc.

Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx>
commit message:
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
---
  tools/libxc/include/xenguest.h   |  8 ++++----
  tools/libxc/xc_domain_restore.c  |  4 ++--
  tools/libxc/xc_domain_save.c     |  4 ++--
  tools/libxc/xc_sr_restore.c      |  2 +-
  tools/libxc/xc_sr_save.c         |  2 +-
  tools/libxl/libxl_save_callout.c | 39 ++++++++++++++++++++++++++-------------
  tools/libxl/libxl_save_helper.c  |  8 ++++++--
  7 files changed, 42 insertions(+), 25 deletions(-)

You have not patched xc_nomigrate.c, which means this will break the ARM
build.  (I fell into the same trap, requiring c/s f50fe3a5 as a fixup).

Thank you for pointing this out, I will look at that commit.


Having said that, I plan to throw together some cleanup patches removing
files like xc_domain_{save,restore}.c and dropping most of the
parameters from the parameter list, as they are superfluous.

I will try to get my cleanup done shortly, which should make this prereq
series easier,

That would be great, thanks!

although I am focusing on some hypervisor side fixes
right at the moment.

~Andrew
.


--
Thanks,
Yang.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.