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
|
migrate-set-capabilities
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
115
qapi-schema.json
115
qapi-schema.json
@ -655,11 +655,124 @@
|
|||||||
##
|
##
|
||||||
# @query-migrate:
|
# @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
|
# Returns: @MigrationInfo
|
||||||
#
|
#
|
||||||
# Since: 0.14.0
|
# 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' }
|
{ 'command': 'query-migrate', 'returns': 'MigrationInfo' }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user