All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Yong Huang <yong.huang@smartx.com>
Cc: ~hyman <hyman@git.sr.ht>, qemu-devel <qemu-devel@nongnu.org>,
	"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>,
	"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 v8 4/9] migration: Introduce dirty-limit capability
Date: Tue, 18 Jul 2023 13:04:01 +0200	[thread overview]
Message-ID: <87zg3tjxb2.fsf@pond.sub.org> (raw)
In-Reply-To: <CAK9dgmZ73F2qrD-iM-EBSiARRmwGPPorsLdt8NqmkOSyYaRCVw@mail.gmail.com> (Yong Huang's message of "Tue, 18 Jul 2023 09:42:19 +0800")

Yong Huang <yong.huang@smartx.com> writes:

> On Thu, Jul 13, 2023 at 8:44 PM Markus Armbruster <armbru@redhat.com> wrote:
>
>> ~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/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.

Works for me.

>> 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.

Yes, please.  But before that, I have still more questions.  "This
algorithm only works when vCPU's dirtyrate greater than
'vcpu-dirty-limit'" is a condition: "FEATURE only works when CONDITION".
What happens when the condition is not met?  How can the user ensure the
condition is met?

[...]



  reply	other threads:[~2023-07-18 11:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-07  4:10 [PATCH QEMU v8 0/9] migration: introduce dirtylimit capability ~hyman
2022-11-18  2:08 ` [PATCH QEMU v8 1/9] softmmu/dirtylimit: Add parameter check for hmp "set_vcpu_dirty_limit" ~hyman
2023-06-07 13:32 ` [PATCH QEMU v8 2/9] qapi/migration: Introduce x-vcpu-dirty-limit-period parameter ~hyman
2023-07-13 12:32   ` Markus Armbruster
2023-06-07 14:58 ` [PATCH QEMU v8 3/9] qapi/migration: Introduce vcpu-dirty-limit parameters ~hyman
2023-06-07 15:30 ` [PATCH QEMU v8 4/9] migration: Introduce dirty-limit capability ~hyman
2023-07-13 12:44   ` Markus Armbruster
2023-07-18  1:42     ` Yong Huang
2023-07-18 11:04       ` Markus Armbruster [this message]
2023-07-19  4:10         ` Yong Huang
2023-07-19  5:26           ` Markus Armbruster
2023-07-19  6:14             ` Yong Huang
2023-07-19  9:03               ` Markus Armbruster
2023-07-19  9:31                 ` Yong Huang
2023-06-07 15:32 ` [PATCH QEMU v8 5/9] migration: Refactor auto-converge capability logic ~hyman
2023-06-07 16:12 ` [PATCH QEMU v8 7/9] migration: Implement dirty-limit convergence algo ~hyman
2023-06-07 16:21 ` [PATCH QEMU v8 8/9] migration: Extend query-migrate to provide dirty page limit info ~hyman
2023-07-13 12:45   ` Markus Armbruster
2023-06-07 16:46 ` [PATCH QEMU v8 9/9] tests: Add migration dirty-limit capability test ~hyman
2023-06-15 13:29 ` [PATCH QEMU v8 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=87zg3tjxb2.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.