Andrei Gudkov <[email protected]> writes:
> Rewrote calc-dirty-rate documentation. Briefly described
> different modes of dirty page rate measurement. Added some
> examples. Fixed obvious grammar errors.
>
> Signed-off-by: Andrei Gudkov <[email protected]>
> ---
> qapi/migration.json | 107 +++++++++++++++++++++++++++++++-------------
> 1 file changed, 77 insertions(+), 30 deletions(-)
>
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 179af0c4d8..19b51444b5 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -1735,14 +1735,14 @@
> ##
> # @DirtyRateStatus:
> #
> -# An enumeration of dirtyrate status.
> +# Dirty page rate measurement status.
> #
> -# @unstarted: the dirtyrate thread has not been started.
> +# @unstarted: measuring thread has not been started yet
> #
> -# @measuring: the dirtyrate thread is measuring.
> +# @measuring: measuring thread is running
> #
> -# @measured: the dirtyrate thread has measured and results are
> -# available.
> +# @measured: dirty page rate is measured and the results are
> +# available
> #
> # Since: 5.2
> ##
> @@ -1752,13 +1752,14 @@
> ##
> # @DirtyRateMeasureMode:
> #
> -# An enumeration of mode of measuring dirtyrate.
> +# Method used to measure dirty page rate. Differences between
> +# available methods are explained in @calc-dirty-rate.
> #
> -# @page-sampling: calculate dirtyrate by sampling pages.
> +# @page-sampling: use page sampling
> #
> -# @dirty-ring: calculate dirtyrate by dirty ring.
> +# @dirty-ring: use dirty ring
> #
> -# @dirty-bitmap: calculate dirtyrate by dirty bitmap.
> +# @dirty-bitmap: use dirty bitmap
> #
> # Since: 6.2
> ##
> @@ -1768,26 +1769,25 @@
> ##
> # @DirtyRateInfo:
> #
> -# Information about current dirty page rate of vm.
> +# Information about measured dirty page rate.
> #
> # @dirty-rate: an estimate of the dirty page rate of the VM in units
> -# of MB/s, present only when estimating the rate has completed.
> +# of MiB/s. Value is present only when @status is 'measured'.
For consistency, please put two spaces between setences.
> #
> -# @status: status containing dirtyrate query status includes
> -# 'unstarted' or 'measuring' or 'measured'
> +# @status: current status of dirty page rate measurements
> #
> # @start-time: start time in units of second for calculation
> #
> -# @calc-time: time in units of second for sample dirty pages
> +# @calc-time: time period in units of second for which dirty page
> +# rate was measured
Maybe
# @calc-time: time period for which dirty page rate was measured
# (in seconds)
> #
> -# @sample-pages: page count per GB for sample dirty pages the default
> -# value is 512 (since 6.1)
> +# @sample-pages: number of sampled pages per each GiB of guest
per GiB
> +# memory. Value is valid only in page-sampling mode (Since 6.1)
Suggest "Valid only in ..."
> #
> -# @mode: mode containing method of calculate dirtyrate includes
> -# 'page-sampling' and 'dirty-ring' (Since 6.2)
> +# @mode: mode that was used to measure dirty page rate (Since 6.2)
> #
> -# @vcpu-dirty-rate: dirtyrate for each vcpu if dirty-ring mode
> -# specified (Since 6.2)
> +# @vcpu-dirty-rate: dirty rate for each vCPU if dirty-ring mode
> +# was specified (Since 6.2)
> #
> # Since: 5.2
> ##
> @@ -1803,15 +1803,50 @@
> ##
> # @calc-dirty-rate:
> #
> -# start calculating dirty page rate for vm
> -#
> -# @calc-time: time in units of second for sample dirty pages
> -#
> -# @sample-pages: page count per GB for sample dirty pages the default
> -# value is 512 (since 6.1)
> -#
> -# @mode: mechanism of calculating dirtyrate includes 'page-sampling'
> -# and 'dirty-ring' (Since 6.1)
> +# Starts measuring dirty page rate of the VM. Results can be
Imperative mood: "Start measuring ..."
> +# retrieved with @query-dirty-rate after measurements are completed.
> +#
> +# Dirty page rate is the number of pages changed in a given time
> +# period expressed in MiB/s. The following methods of calculation
> +# are available:
> +#
> +# 1. In page sampling mode, a random subset of pages are selected
> +# and hashed twice: once in the beginning of measurement time
Suggest "once at the beginning"
> +# period, another one -- in the end. If two hashes for some page
Suggest ", and once again at the end".
> +# are different, the page is counted as changed. Since this
> +# method relies on sampling and hashing, calculated dirty page
> +# rate is only the estimation of its true value. Setting
> +# @sample-pages to higher value improves estimation quality but
Suggest "Increasing @sample-pages improves estimation quality at the
cost ..."
> +# at the cost of higher computational overhead.
> +#
> +# 2. Dirty bitmap mode captures writes to memory by temporarily
> +# revoking write access to all pages and counting page faults.
Comma before "and".
> +# Information about modified pages is collected into bitmap,
"into a bitmap"
> +# where each bit corresponds to one guest page. This mode
> +# requires that KVM accelerator property "dirty-ring-size=N"
Suggest just "dirty-ring-size" (omit "=N").
> +# is *not* set.
> +#
> +# 3. Dirty ring mode is similar to dirty bitmap mode, but the
> +# information about modified pages is collected into ring buffer.
> +# This mode tracks page modification per each vCPU separately.
Either "for each vCPU" or "per vCPU".
> +# It requires that KVM accelerator property "dirty-ring-size=N"
> +# is set.
Suggest just "dirty-ring-size" (omit "=N").
> +#
> +# @calc-time: time period in units of second for which dirty page rate
> +# is calculated. Note that larger @calc-time values will typically
> +# result in smaller dirty page rates because page dirtying is a
> +# one-time event. Once some page is counted as dirty during
> +# @calc-time period, further writes to this page will not increase
> +# dirty page rate anymore.
Please indent one more, for consistency.
> +#
> +# @sample-pages: number of sampled pages per each GiB of guest memory.
> +# Default value is 512. For 4KiB guest pages this corresponds to
> +# sampling ratio of 0.2%. This argument is used only in page
> +# sampling mode. (Since 6.1)
Two spaces between '.' and '(', please.
> +#
> +# @mode: mechanism for tracking dirty pages. Default value is
> +# 'page-sampling'. Others are 'dirty-bitmap' and 'dirty-ring'.
> +# (Since 6.1)
> #
> # Since: 5.2
> #
> @@ -1828,9 +1863,21 @@
> ##
> # @query-dirty-rate:
> #
> -# query dirty page rate in units of MB/s for vm
> +# Query results of the most recent invocation of @calc-dirty-rate.
> #
> # Since: 5.2
> +#
> +# Examples:
> +#
> +# 1. Measurement is in progress:
> +#
> +# <- {"status": "measuring", "sample-pages": 512,
> +# "mode": "page-sampling", "start-time": 3665220, "calc-time": 10}
> +#
> +# 2. Measurement has been completed:
> +#
> +# <- {"status": "measured", "sample-pages": 512, "dirty-rate": 108,
> +# "mode": "page-sampling", "start-time": 3665220, "calc-time": 10}
> ##
> { 'command': 'query-dirty-rate', 'returns': 'DirtyRateInfo' }
This is *sooo* much better than before. Thank you!
An R-by from a migration maintainer would be nice.
If you agree with my suggestions, I can apply them in my tree, saving
you a respin. Let me know.
Acked-by: Markus Armbruster <[email protected]>