Merge remote-tracking branch 'quintela/migration.next' into staging

# By Peter Lieven (9) and others
# Via Juan Quintela
* quintela/migration.next: (22 commits)
  Use qemu_put_buffer_async for guest memory pages
  Add qemu_put_buffer_async
  Use writev ops if available
  Store the data to send also in iovec
  Update bytes_xfer in qemu_put_byte
  Add socket_writev_buffer function
  Add QemuFileWritevBuffer QemuFileOps
  migration: use XBZRLE only after bulk stage
  migration: do not search dirty pages in bulk stage
  migration: do not sent zero pages in bulk stage
  migration: add an indicator for bulk state of ram migration
  migration: search for zero instead of dup pages
  bitops: unroll while loop in find_next_bit()
  buffer_is_zero: use vector optimizations if possible
  cutils: add a function to find non-zero content in a buffer
  move vector definitions to qemu-common.h
  savevm: Fix bugs in the VMSTATE_VBUFFER_MULTIPLY definition
  savevm: Add VMSTATE_STRUCT_VARRAY_POINTER_UINT32
  savevm: Add VMSTATE_FLOAT64 helpers
  savevm: Add VMSTATE_UINTTL_EQUAL helper
  ...
This commit is contained in:
Anthony Liguori 2013-03-26 13:38:00 -05:00
commit 18501ae6e8
13 changed files with 375 additions and 87 deletions

View file

@ -666,7 +666,7 @@ EQMP
SQMP
migrate-set-cache-size
---------------------
----------------------
Set cache size to be used by XBZRLE migration, the cache size will be rounded
down to the nearest power of 2
@ -689,7 +689,7 @@ EQMP
SQMP
query-migrate-cache-size
---------------------
------------------------
Show cache size to be used by XBZRLE migration
@ -2453,32 +2453,43 @@ The main json-object contains the following:
- Possible values: "active", "completed", "failed", "cancelled"
- "total-time": total amount of ms since migration started. If
migration has ended, it returns the total migration
time (json-int)
time (json-int)
- "downtime": only present when migration has finished correctly
total amount in ms for downtime that happened (json-int)
- "expected-downtime": only present while migration is active
total amount in ms for downtime that was calculated on
the last bitmap round (json-int)
the last bitmap round (json-int)
- "ram": only present if "status" is "active", it is a json-object with the
following RAM information (in bytes):
- "transferred": amount transferred (json-int)
- "remaining": amount remaining (json-int)
- "total": total (json-int)
- "duplicate": number of duplicated pages (json-int)
- "normal" : number of normal pages transferred (json-int)
- "normal-bytes" : number of normal bytes transferred (json-int)
following RAM information:
- "transferred": amount transferred in bytes (json-int)
- "remaining": amount remaining to transfer in bytes (json-int)
- "total": total amount of memory in bytes (json-int)
- "duplicate": number of pages filled entirely with the same
byte (json-int)
These are sent over the wire much more efficiently.
- "skipped": number of skipped zero pages (json-int)
- "normal" : number of whole pages transfered. I.e. they
were not sent as duplicate or xbzrle pages (json-int)
- "normal-bytes" : number of bytes transferred in whole
pages. This is just normal pages times size of one page,
but this way upper levels don't need to care about page
size (json-int)
- "disk": only present if "status" is "active" and it is a block migration,
it is a json-object with the following disk information (in bytes):
- "transferred": amount transferred (json-int)
- "remaining": amount remaining (json-int)
- "total": total (json-int)
it is a json-object with the following disk information:
- "transferred": amount transferred in bytes (json-int)
- "remaining": amount remaining to transfer in bytes json-int)
- "total": total disk size in bytes (json-int)
- "xbzrle-cache": only present if XBZRLE is active.
It is a json-object with the following XBZRLE information:
- "cache-size": XBZRLE cache size
- "bytes": total XBZRLE bytes transferred
- "cache-size": XBZRLE cache size in bytes
- "bytes": number of bytes transferred for XBZRLE compressed pages
- "pages": number of XBZRLE compressed pages
- "cache-miss": number of cache misses
- "overflow": number of XBZRLE overflows
- "cache-miss": number of XBRZRLE page cache misses
- "overflow": number of times XBZRLE overflows. This means
that the XBZRLE encoding was bigger than just sent the
whole page, and then we sent the whole page instead (as as
normal page).
Examples:
1. Before the first migration
@ -2589,11 +2600,11 @@ EQMP
SQMP
migrate-set-capabilities
-------
------------------------
Enable/Disable migration capabilities
- "xbzrle": xbzrle support
- "xbzrle": XBZRLE support
Arguments:
@ -2612,7 +2623,7 @@ EQMP
},
SQMP
query-migrate-capabilities
-------
--------------------------
Query current migration capabilities