mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
softmmu/dirtylimit: Implement dirty page rate limit
Implement dirtyrate calculation periodically basing on dirty-ring and throttle virtual CPU until it reachs the quota dirty page rate given by user. Introduce qmp commands "set-vcpu-dirty-limit", "cancel-vcpu-dirty-limit", "query-vcpu-dirty-limit" to enable, disable, query dirty page limit for virtual CPU. Meanwhile, introduce corresponding hmp commands "set_vcpu_dirty_limit", "cancel_vcpu_dirty_limit", "info vcpu_dirty_limit" so the feature can be more usable. "query-vcpu-dirty-limit" success depends on enabling dirty page rate limit, so just add it to the list of skipped command to ensure qmp-cmd-test run successfully. Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn> Acked-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Message-Id: <4143f26706d413dd29db0b672fe58b3d3fbe34bc.1656177590.git.huangy81@chinatelecom.cn> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
baa609832e
commit
f3b2e38cfb
6 changed files with 324 additions and 0 deletions
|
@ -1868,6 +1868,86 @@
|
|||
##
|
||||
{ 'command': 'query-dirty-rate', 'returns': 'DirtyRateInfo' }
|
||||
|
||||
##
|
||||
# @DirtyLimitInfo:
|
||||
#
|
||||
# Dirty page rate limit information of a virtual CPU.
|
||||
#
|
||||
# @cpu-index: index of a virtual CPU.
|
||||
#
|
||||
# @limit-rate: upper limit of dirty page rate (MB/s) for a virtual
|
||||
# CPU, 0 means unlimited.
|
||||
#
|
||||
# @current-rate: current dirty page rate (MB/s) for a virtual CPU.
|
||||
#
|
||||
# Since: 7.1
|
||||
#
|
||||
##
|
||||
{ 'struct': 'DirtyLimitInfo',
|
||||
'data': { 'cpu-index': 'int',
|
||||
'limit-rate': 'uint64',
|
||||
'current-rate': 'uint64' } }
|
||||
|
||||
##
|
||||
# @set-vcpu-dirty-limit:
|
||||
#
|
||||
# Set the upper limit of dirty page rate for virtual CPUs.
|
||||
#
|
||||
# Requires KVM with accelerator property "dirty-ring-size" set.
|
||||
# A virtual CPU's dirty page rate is a measure of its memory load.
|
||||
# To observe dirty page rates, use @calc-dirty-rate.
|
||||
#
|
||||
# @cpu-index: index of a virtual CPU, default is all.
|
||||
#
|
||||
# @dirty-rate: upper limit of dirty page rate (MB/s) for virtual CPUs.
|
||||
#
|
||||
# Since: 7.1
|
||||
#
|
||||
# Example:
|
||||
# {"execute": "set-vcpu-dirty-limit"}
|
||||
# "arguments": { "dirty-rate": 200,
|
||||
# "cpu-index": 1 } }
|
||||
#
|
||||
##
|
||||
{ 'command': 'set-vcpu-dirty-limit',
|
||||
'data': { '*cpu-index': 'int',
|
||||
'dirty-rate': 'uint64' } }
|
||||
|
||||
##
|
||||
# @cancel-vcpu-dirty-limit:
|
||||
#
|
||||
# Cancel the upper limit of dirty page rate for virtual CPUs.
|
||||
#
|
||||
# Cancel the dirty page limit for the vCPU which has been set with
|
||||
# set-vcpu-dirty-limit command. Note that this command requires
|
||||
# support from dirty ring, same as the "set-vcpu-dirty-limit".
|
||||
#
|
||||
# @cpu-index: index of a virtual CPU, default is all.
|
||||
#
|
||||
# Since: 7.1
|
||||
#
|
||||
# Example:
|
||||
# {"execute": "cancel-vcpu-dirty-limit"}
|
||||
# "arguments": { "cpu-index": 1 } }
|
||||
#
|
||||
##
|
||||
{ 'command': 'cancel-vcpu-dirty-limit',
|
||||
'data': { '*cpu-index': 'int'} }
|
||||
|
||||
##
|
||||
# @query-vcpu-dirty-limit:
|
||||
#
|
||||
# Returns information about virtual CPU dirty page rate limits, if any.
|
||||
#
|
||||
# Since: 7.1
|
||||
#
|
||||
# Example:
|
||||
# {"execute": "query-vcpu-dirty-limit"}
|
||||
#
|
||||
##
|
||||
{ 'command': 'query-vcpu-dirty-limit',
|
||||
'returns': [ 'DirtyLimitInfo' ] }
|
||||
|
||||
##
|
||||
# @snapshot-save:
|
||||
#
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue