huang...@chinatelecom.cn writes: > From: Hyman Huang(黄勇) <huang...@chinatelecom.cn> > > 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. > > Signed-off-by: Hyman Huang(黄勇) <huang...@chinatelecom.cn>
[...] > diff --git a/qapi/migration.json b/qapi/migration.json > index ac5fa56..9d406f4 100644 > --- a/qapi/migration.json > +++ b/qapi/migration.json > @@ -1869,6 +1869,66 @@ > 'current-rate': 'int64' } } > > ## > +# @set-vcpu-dirty-limit: > +# > +# Set the upper limit of dirty page rate for virtual CPU. "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 virtual CPU, default is all. > +# > +# @dirty-rate: upper limit of dirty page rate for virtual CPU. Lacks a unit. Is it bytes per second? pages per second? > +# > +# Since: 7.0 > +# > +# Example: > +# {"execute": "set-vcpu-dirty-limit"} > +# "arguments": { "dirty-rate": 200, > +# "cpu-index": 1 } } > +# > +## > +{ 'command': 'set-vcpu-dirty-limit', > + 'data': { '*cpu-index': 'uint64', Use 'int' for consistency with cpu-index arguments elsewhere. > + 'dirty-rate': 'uint64' } } > + > +## > +# @cancel-vcpu-dirty-limit: > +# > +# Cancel the upper limit of dirty page rate for virtual CPU. "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 virtual CPU, default is all. > +# > +# Since: 7.0 > +# > +# Example: > +# {"execute": "cancel-vcpu-dirty-limit"} > +# "arguments": { "cpu-index": 1 } } > +# > +## > +{ 'command': 'cancel-vcpu-dirty-limit', > + 'data': { '*cpu-index': 'uint64'} } Use 'int' for consistency with cpu-index arguments elsewhere. > + > +## > +# @query-vcpu-dirty-limit: > +# > +# Returns information about all virtual CPU dirty limit if enabled. Suggest "about virtual CPU dirty page rate limits, if any". > +# > +# Since: 7.0 > +# > +# Example: > +# {"execute": "query-vcpu-dirty-limit"} > +# > +## > +{ 'command': 'query-vcpu-dirty-limit', > + 'returns': [ 'DirtyLimitInfo' ] } > + > +## > # @snapshot-save: > # > # Save a VM snapshot [...]