On Thu, Jul 13, 2023 at 8:44 PM Markus Armbruster <arm...@redhat.com> wrote:

> ~hyman <hy...@git.sr.ht> writes:
>
> > From: Hyman Huang(黄勇) <yong.hu...@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.hu...@smartx.com>
> > Acked-by: Peter Xu <pet...@redhat.com>
> > Reviewed-by: Juan Quintela <quint...@redhat.com>
>
> [...]
>
> > diff --git a/qapi/migration.json b/qapi/migration.json
> > index e43371955a..031832cde5 100644
> > --- a/qapi/migration.json
> > +++ b/qapi/migration.json
> > @@ -497,6 +497,15 @@
> >  #     are present.  'return-path' capability must be enabled to use
> >  #     it.  (since 8.1)
> >  #
> > +# @dirty-limit: If enabled, migration will use the dirty-limit
> > +#     algorithm to throttle down guest instead of auto-converge
> > +#     algorithm. This algorithm only works when vCPU's dirtyrate
>
> Two spaces after sentence-ending punctuation, please.
>
> "dirty rate" with a space, because that's how we spell it elsewhere.
>
> > +#     greater than 'vcpu-dirty-limit', read processes in guest os
> > +#     aren't penalized any more, so the algorithm 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 algorithm. (since 8.1)
> > +#
>
> I'm still confused.
>
> The text suggests there are two separate algorithms "to throttle down
> guest": "auto converge" and "dirty limit", and we get to pick one.
> Correct?
>
Yes, indeed !

>
> If it is correct, then the last sentence feels redundant: picking
> another algorithm can't affect the algorithm we're *not* using.  What
> are you trying to express here?
>
What i want to express is that the new algorithm implementation does
not affect the original algorithm, leaving it in the comments seems
redundant indeed.  I'll drop this in the next version.

>
> When do we use "auto converge", and when do we use "dirty limit"?
>
> What does the user really need to know about these algorithms?  Enough
> to pick one, I guess.  That means advantages and disadvantages of the
> two algorithms.  Which are?

1. The implementation of dirty-limit is based on dirty-ring, which is
qualified
   to big systems with huge memories and can improve huge guest VM
    responsiveness remarkably during live migration. As a consequence,
dirty-limit
    is recommended on platforms with huge guest VMs as is the way with
dirty-ring.
2. dirty-limit convergence algorithm does not affect the "read-process" in
guest
   VM, so guest VM gains the equal read performance nearly as it runs on
host
   during the live migration. As a result, dirty-limit is recommended if
the guest
    VM requires a stable read performance.
The above explanation is about the recommendation of dirty-limit, please
review,
if it's ok, i'll place it in the comment of the dirty-limit capability.

>
> >  # Features:
> >  #
> >  # @unstable: Members @x-colo and @x-ignore-shared are experimental.
> > @@ -512,7 +521,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:
>
> [...]
>
> Thank Markus again for the attention to this patchset. :)
Yong
-- 
Best regards

Reply via email to