All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: ~hyman <hyman@git.sr.ht>
Cc: qemu-devel <qemu-devel@nongnu.org>,
	~hyman <yong.huang@smartx.com>, "Peter Xu" <peterx@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PATCH QEMU v7 4/9] migration: Introduce dirty-limit capability
Date: Thu, 06 Jul 2023 16:59:11 +0200	[thread overview]
Message-ID: <877crdozls.fsf@pond.sub.org> (raw)
In-Reply-To: <168853615963.17240.15832775267134683267-4@git.sr.ht> (hyman@git.sr.ht's message of "Wed, 07 Jun 2023 23:30:50 +0800")

~hyman <hyman@git.sr.ht> writes:

> From: Hyman Huang(黄勇) <yong.huang@smartx.com>
>
> Introduce migration dirty-limit capability, which can
> be turned on before live migration and limit dirty
> page rate durty live migration.
>
> Introduce migrate_dirty_limit function to help check
> if dirty-limit capability enabled during live migration.
>
> Meanwhile, refactor vcpu_dirty_rate_stat_collect
> so that period can be configured instead of hardcoded.
>
> dirty-limit capability is kind of like auto-converge
> but using dirty limit instead of traditional cpu-throttle
> to throttle guest down. To enable this feature, turn on
> the dirty-limit capability before live migration using
> migrate-set-capabilities, and set the parameters
> "x-vcpu-dirty-limit-period", "vcpu-dirty-limit" suitably
> to speed up convergence.
>
> Signed-off-by: Hyman Huang(黄勇) <yong.huang@smartx.com>
> Acked-by: Peter Xu <peterx@redhat.com>
> Reviewed-by: Juan Quintela <quintela@redhat.com>

[...]

> diff --git a/migration/options.h b/migration/options.h
> index 9aaf363322..b5a950d4e4 100644
> --- a/migration/options.h
> +++ b/migration/options.h
> @@ -24,6 +24,7 @@ extern Property migration_properties[];
>  /* capabilities */
>  
>  bool migrate_auto_converge(void);
> +bool migrate_dirty_limit(void);
>  bool migrate_background_snapshot(void);
>  bool migrate_block(void);
>  bool migrate_colo(void);
> diff --git a/qapi/migration.json b/qapi/migration.json
> index aa590dbf0e..cc51835cdd 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -497,6 +497,16 @@
>  #     are present.  'return-path' capability must be enabled to use
>  #     it.  (since 8.1)
>  #
> +# @dirty-limit: If enabled, migration will use the dirty-limit algo to
> +#               throttle down guest instead of auto-converge algo.
> +#               Throttle algo only works when vCPU's dirtyrate greater
> +#               than 'vcpu-dirty-limit', read processes in guest os
> +#               aren't penalized any more, so this algo can improve
> +#               performance of vCPU during live migration. This is an
> +#               optional performance feature and should not affect the
> +#               correctness of the existing auto-converge algo.
> +#               (since 8.1)
> +#

Please format like

   # @dirty-limit: If enabled, migration will use the dirty-limit algo to
   #     throttle down guest instead of auto-converge algo.  Throttle
   #     algo only works when vCPU's dirtyrate greater than
   #     'vcpu-dirty-limit', read processes in guest os aren't penalized
   #     any more, so this algo can improve performance of vCPU during
   #     live migration.  This is an optional performance feature and
   #     should not affect the correctness of the existing auto-converge
   #     algo.  (since 8.1)

to blend in with recent commit a937b6aa739 (qapi: Reformat doc comments
to conform to current conventions).

"Dirty rate" with a space, because that's how we spell it elsewhere.

Moreover, "algo" is not a word, "algorithm" is :)

Is "the dirty-limit algorithm" defined anywhere?  

More word-smithing is needed, but I'd like to get the reference to "the
dirty-limit algorithm" clarified first.

>  # Features:
>  #
>  # @unstable: Members @x-colo and @x-ignore-shared are experimental.
> @@ -512,7 +522,8 @@
>             'dirty-bitmaps', 'postcopy-blocktime', 'late-block-activate',
>             { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] },
>             'validate-uuid', 'background-snapshot',
> -           'zero-copy-send', 'postcopy-preempt', 'switchover-ack'] }
> +           'zero-copy-send', 'postcopy-preempt', 'switchover-ack',
> +           'dirty-limit'] }
>  
>  ##
>  # @MigrationCapabilityStatus:

[...]



  reply	other threads:[~2023-07-06 15:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-05  5:49 [PATCH QEMU v7 0/9] migration: introduce dirtylimit capability ~hyman
2022-11-18  2:08 ` [PATCH QEMU v7 1/9] softmmu/dirtylimit: Add parameter check for hmp "set_vcpu_dirty_limit" ~hyman
2023-06-07 13:32 ` [PATCH QEMU v7 2/9] qapi/migration: Introduce x-vcpu-dirty-limit-period parameter ~hyman
2023-07-06 14:42   ` Markus Armbruster
2023-06-07 14:58 ` [PATCH QEMU v7 3/9] qapi/migration: Introduce vcpu-dirty-limit parameters ~hyman
2023-07-06 14:47   ` Markus Armbruster
2023-06-07 15:30 ` [PATCH QEMU v7 4/9] migration: Introduce dirty-limit capability ~hyman
2023-07-06 14:59   ` Markus Armbruster [this message]
2023-07-07  3:56     ` Yong Huang
2023-06-07 15:32 ` [PATCH QEMU v7 5/9] migration: Refactor auto-converge capability logic ~hyman
2023-06-07 16:12 ` [PATCH QEMU v7 7/9] migration: Implement dirty-limit convergence algo ~hyman
2023-06-07 16:21 ` [PATCH QEMU v7 8/9] migration: Extend query-migrate to provide dirty page limit info ~hyman
2023-07-06 15:08   ` Markus Armbruster
2023-06-07 16:46 ` [PATCH QEMU v7 9/9] tests: Add migration dirty-limit capability test ~hyman
2023-06-15 13:29 ` [PATCH QEMU v7 6/9] migration: Put the detection logic before auto-converge checking ~hyman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877crdozls.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=hyman@git.sr.ht \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=yong.huang@smartx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.