mirror of https://gitee.com/openkylin/qemu.git
qmp-commands: move 'query-migrate' doc to schema
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
66c2f5a56c
commit
104b1caf05
|
@ -2458,175 +2458,6 @@ Example:
|
|||
]
|
||||
}
|
||||
|
||||
query-migrate
|
||||
-------------
|
||||
|
||||
Migration status.
|
||||
|
||||
Return a json-object. If migration is active there will be another json-object
|
||||
with RAM migration status and if block migration is active another one with
|
||||
block migration status.
|
||||
|
||||
The main json-object contains the following:
|
||||
|
||||
- "status": migration status (json-string)
|
||||
- Possible values: "setup", "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)
|
||||
- "setup-time" amount of setup time in milliseconds _before_ the
|
||||
iterations begin but _after_ the QMP command is issued.
|
||||
This is designed to provide an accounting of any activities
|
||||
(such as RDMA pinning) which may be expensive, but do not
|
||||
actually occur during the iterative migration rounds
|
||||
themselves. (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)
|
||||
- "ram": only present if "status" is "active", it is a json-object with the
|
||||
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 transferred. 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)
|
||||
- "dirty-sync-count": times that dirty ram was synchronized (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:
|
||||
- "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 in bytes
|
||||
- "bytes": number of bytes transferred for XBZRLE compressed pages
|
||||
- "pages": number of XBZRLE compressed pages
|
||||
- "cache-miss": number of XBRZRLE page cache misses
|
||||
- "cache-miss-rate": rate 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
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- { "return": {} }
|
||||
|
||||
2. Migration is done and has succeeded
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- { "return": {
|
||||
"status": "completed",
|
||||
"ram":{
|
||||
"transferred":123,
|
||||
"remaining":123,
|
||||
"total":246,
|
||||
"total-time":12345,
|
||||
"setup-time":12345,
|
||||
"downtime":12345,
|
||||
"duplicate":123,
|
||||
"normal":123,
|
||||
"normal-bytes":123456,
|
||||
"dirty-sync-count":15
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
3. Migration is done and has failed
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- { "return": { "status": "failed" } }
|
||||
|
||||
4. Migration is being performed and is not a block migration:
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- {
|
||||
"return":{
|
||||
"status":"active",
|
||||
"ram":{
|
||||
"transferred":123,
|
||||
"remaining":123,
|
||||
"total":246,
|
||||
"total-time":12345,
|
||||
"setup-time":12345,
|
||||
"expected-downtime":12345,
|
||||
"duplicate":123,
|
||||
"normal":123,
|
||||
"normal-bytes":123456,
|
||||
"dirty-sync-count":15
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5. Migration is being performed and is a block migration:
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- {
|
||||
"return":{
|
||||
"status":"active",
|
||||
"ram":{
|
||||
"total":1057024,
|
||||
"remaining":1053304,
|
||||
"transferred":3720,
|
||||
"total-time":12345,
|
||||
"setup-time":12345,
|
||||
"expected-downtime":12345,
|
||||
"duplicate":123,
|
||||
"normal":123,
|
||||
"normal-bytes":123456,
|
||||
"dirty-sync-count":15
|
||||
},
|
||||
"disk":{
|
||||
"total":20971520,
|
||||
"remaining":20880384,
|
||||
"transferred":91136
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
6. Migration is being performed and XBZRLE is active:
|
||||
|
||||
-> { "execute": "query-migrate" }
|
||||
<- {
|
||||
"return":{
|
||||
"status":"active",
|
||||
"capabilities" : [ { "capability": "xbzrle", "state" : true } ],
|
||||
"ram":{
|
||||
"total":1057024,
|
||||
"remaining":1053304,
|
||||
"transferred":3720,
|
||||
"total-time":12345,
|
||||
"setup-time":12345,
|
||||
"expected-downtime":12345,
|
||||
"duplicate":10,
|
||||
"normal":3333,
|
||||
"normal-bytes":3412992,
|
||||
"dirty-sync-count":15
|
||||
},
|
||||
"xbzrle-cache":{
|
||||
"cache-size":67108864,
|
||||
"bytes":20971520,
|
||||
"pages":2444343,
|
||||
"cache-miss":2244,
|
||||
"cache-miss-rate":0.123,
|
||||
"overflow":34434
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
migrate-set-capabilities
|
||||
------------------------
|
||||
|
||||
|
|
115
qapi-schema.json
115
qapi-schema.json
|
@ -655,11 +655,124 @@
|
|||
##
|
||||
# @query-migrate:
|
||||
#
|
||||
# Returns information about current migration process.
|
||||
# Returns information about current migration process. If migration
|
||||
# is active there will be another json-object with RAM migration
|
||||
# status and if block migration is active another one with block
|
||||
# migration status.
|
||||
#
|
||||
# Returns: @MigrationInfo
|
||||
#
|
||||
# Since: 0.14.0
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# 1. Before the first migration
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- { "return": {} }
|
||||
#
|
||||
# 2. Migration is done and has succeeded
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- { "return": {
|
||||
# "status": "completed",
|
||||
# "ram":{
|
||||
# "transferred":123,
|
||||
# "remaining":123,
|
||||
# "total":246,
|
||||
# "total-time":12345,
|
||||
# "setup-time":12345,
|
||||
# "downtime":12345,
|
||||
# "duplicate":123,
|
||||
# "normal":123,
|
||||
# "normal-bytes":123456,
|
||||
# "dirty-sync-count":15
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# 3. Migration is done and has failed
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- { "return": { "status": "failed" } }
|
||||
#
|
||||
# 4. Migration is being performed and is not a block migration:
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- {
|
||||
# "return":{
|
||||
# "status":"active",
|
||||
# "ram":{
|
||||
# "transferred":123,
|
||||
# "remaining":123,
|
||||
# "total":246,
|
||||
# "total-time":12345,
|
||||
# "setup-time":12345,
|
||||
# "expected-downtime":12345,
|
||||
# "duplicate":123,
|
||||
# "normal":123,
|
||||
# "normal-bytes":123456,
|
||||
# "dirty-sync-count":15
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# 5. Migration is being performed and is a block migration:
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- {
|
||||
# "return":{
|
||||
# "status":"active",
|
||||
# "ram":{
|
||||
# "total":1057024,
|
||||
# "remaining":1053304,
|
||||
# "transferred":3720,
|
||||
# "total-time":12345,
|
||||
# "setup-time":12345,
|
||||
# "expected-downtime":12345,
|
||||
# "duplicate":123,
|
||||
# "normal":123,
|
||||
# "normal-bytes":123456,
|
||||
# "dirty-sync-count":15
|
||||
# },
|
||||
# "disk":{
|
||||
# "total":20971520,
|
||||
# "remaining":20880384,
|
||||
# "transferred":91136
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# 6. Migration is being performed and XBZRLE is active:
|
||||
#
|
||||
# -> { "execute": "query-migrate" }
|
||||
# <- {
|
||||
# "return":{
|
||||
# "status":"active",
|
||||
# "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
|
||||
# "ram":{
|
||||
# "total":1057024,
|
||||
# "remaining":1053304,
|
||||
# "transferred":3720,
|
||||
# "total-time":12345,
|
||||
# "setup-time":12345,
|
||||
# "expected-downtime":12345,
|
||||
# "duplicate":10,
|
||||
# "normal":3333,
|
||||
# "normal-bytes":3412992,
|
||||
# "dirty-sync-count":15
|
||||
# },
|
||||
# "xbzrle-cache":{
|
||||
# "cache-size":67108864,
|
||||
# "bytes":20971520,
|
||||
# "pages":2444343,
|
||||
# "cache-miss":2244,
|
||||
# "cache-miss-rate":0.123,
|
||||
# "overflow":34434
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
#
|
||||
##
|
||||
{ 'command': 'query-migrate', 'returns': 'MigrationInfo' }
|
||||
|
||||
|
|
Loading…
Reference in New Issue