From: Fabiano Rosas <farosas@suse.de>
To: Hao Xiang <hao.xiang@bytedance.com>,
Shivam Kumar <shivam.kumar1@nutanix.com>
Cc: "peter.maydell@linaro.org" <peter.maydell@linaro.org>,
"peterx@redhat.com" <peterx@redhat.com>,
"marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>,
"bryan.zhang@bytedance.com" <bryan.zhang@bytedance.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [External] Re: [PATCH v3 01/20] multifd: Add capability to enable/disable zero_page
Date: Tue, 23 Jan 2024 12:10:55 -0300 [thread overview]
Message-ID: <8734uof5kw.fsf@suse.de> (raw)
In-Reply-To: <CAAYibXjw42iB=5YgKsXy4erj6RsGuqDqFnhuOZxkfBit7S5TtA@mail.gmail.com>
Hao Xiang <hao.xiang@bytedance.com> writes:
> On Sun, Jan 14, 2024 at 10:02 PM Shivam Kumar <shivam.kumar1@nutanix.com> wrote:
>>
>>
>>
>> > On 04-Jan-2024, at 6:14 AM, Hao Xiang <hao.xiang@bytedance.com> wrote:
>> >
>> > From: Juan Quintela <quintela@redhat.com>
>> >
>> > We have to enable it by default until we introduce the new code.
>> >
>> > Signed-off-by: Juan Quintela <quintela@redhat.com>
>> > ---
>> > migration/options.c | 15 +++++++++++++++
>> > migration/options.h | 1 +
>> > qapi/migration.json | 8 +++++++-
>> > 3 files changed, 23 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/migration/options.c b/migration/options.c
>> > index 8d8ec73ad9..0f6bd78b9f 100644
>> > --- a/migration/options.c
>> > +++ b/migration/options.c
>> > @@ -204,6 +204,8 @@ Property migration_properties[] = {
>> > DEFINE_PROP_MIG_CAP("x-switchover-ack",
>> > MIGRATION_CAPABILITY_SWITCHOVER_ACK),
>> > DEFINE_PROP_MIG_CAP("x-dirty-limit", MIGRATION_CAPABILITY_DIRTY_LIMIT),
>> > + DEFINE_PROP_MIG_CAP("main-zero-page",
>> > + MIGRATION_CAPABILITY_MAIN_ZERO_PAGE),
>> > DEFINE_PROP_END_OF_LIST(),
>> > };
>> >
>> > @@ -284,6 +286,19 @@ bool migrate_multifd(void)
>> > return s->capabilities[MIGRATION_CAPABILITY_MULTIFD];
>> > }
>> >
>> > +bool migrate_use_main_zero_page(void)
>> > +{
>> > + /* MigrationState *s; */
>> > +
>> > + /* s = migrate_get_current(); */
>> > +
>> > + /*
>> > + * We will enable this when we add the right code.
>> > + * return s->enabled_capabilities[MIGRATION_CAPABILITY_MAIN_ZERO_PAGE];
>> > + */
>> > + return true;
>> > +}
>> > +
>> > bool migrate_pause_before_switchover(void)
>> > {
>> > MigrationState *s = migrate_get_current();
>> > diff --git a/migration/options.h b/migration/options.h
>> > index 246c160aee..c901eb57c6 100644
>> > --- a/migration/options.h
>> > +++ b/migration/options.h
>> > @@ -88,6 +88,7 @@ int migrate_multifd_channels(void);
>> > MultiFDCompression migrate_multifd_compression(void);
>> > int migrate_multifd_zlib_level(void);
>> > int migrate_multifd_zstd_level(void);
>> > +bool migrate_use_main_zero_page(void);
>> > uint8_t migrate_throttle_trigger_threshold(void);
>> > const char *migrate_tls_authz(void);
>> > const char *migrate_tls_creds(void);
>> > diff --git a/qapi/migration.json b/qapi/migration.json
>> > index eb2f883513..80c4b13516 100644
>> > --- a/qapi/migration.json
>> > +++ b/qapi/migration.json
>> > @@ -531,6 +531,12 @@
>> > # and can result in more stable read performance. Requires KVM
>> > # with accelerator property "dirty-ring-size" set. (Since 8.1)
>> > #
>> > +#
>> > +# @main-zero-page: If enabled, the detection of zero pages will be
>> > +# done on the main thread. Otherwise it is done on
>> > +# the multifd threads.
>> > +# (since 8.2)
>> > +#
>> Should the capability name be something like "zero-page-detection" or just “zero-page”?
>> CC: Fabiano Rosas
>
> I think the same concern was brought up last time Juan sent out the
> original patchset. Right now, the zero page detection is done in the
> main migration thread and it is always "ON". This change added a
> functionality to move the zero page detection from the main thread to
> the multifd sender threads. Now "main-zero-page" is turned "OFF" by
> default, and zero page checking is done in the multifd sender thread
> (much better performance). If user wants to run the zero page
> detection in the main thread (keep current behavior), user can change
> "main-zero-page" to "ON".
>
> Renaming it to "zero-page-detection" or just “zero-page” can not
> differentiate the old behavior and the new behavior.
Yes, the main point here is what happens when we try to migrate from
different QEMU versions that have/don't have this code. We need some way
to maintain the compatibility. In this case Juan chose to keep this
capability with the semantics of "old behavior" so that we can enable it
on the new QEMU to match with the old binary that doesn't expect to see
zero pages on the packet/stream.
> Here are the options:
> 1) Keep the current behavior. "main-zero-page" is OFF by default and
> zero page detection runs on the multifd thread by default. User can
> turn the switch to "ON" if they want old behavior.
> 2) Make "main-zero-page" switch ON as default. This would keep the
> current behavior by default. User can set it to "OFF" for better
> performance.
3) Make multifd-zero-page ON by default. User can set it to OFF to get
the old behavior. There was some consideration about how libvirt works
that would make this one unusable, but I don't understand what's that
about.
I would make this a default ON parameter instead of a capability.
>> > # Features:
>> > #
>> > # @deprecated: Member @block is deprecated. Use blockdev-mirror with
>> > @@ -555,7 +561,7 @@
>> > { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] },
>> > 'validate-uuid', 'background-snapshot',
>> > 'zero-copy-send', 'postcopy-preempt', 'switchover-ack',
>> > - 'dirty-limit'] }
>> > + 'dirty-limit', 'main-zero-page'] }
>> >
>> > ##
>> > # @MigrationCapabilityStatus:
>> > --
>> > 2.30.2
>> >
>> >
>> >
>>
next prev parent reply other threads:[~2024-01-23 15:11 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-04 0:44 [PATCH v3 00/20] Use Intel DSA accelerator to offload zero page checking in multifd live migration Hao Xiang
2024-01-04 0:44 ` [PATCH v3 01/20] multifd: Add capability to enable/disable zero_page Hao Xiang
2024-01-08 20:39 ` Fabiano Rosas
2024-01-11 5:47 ` [External] " Hao Xiang
2024-01-15 6:02 ` Shivam Kumar
2024-01-23 0:33 ` [External] " Hao Xiang
2024-01-23 15:10 ` Fabiano Rosas [this message]
2024-01-23 21:00 ` Hao Xiang
2024-02-01 4:27 ` Peter Xu
2024-01-04 0:44 ` [PATCH v3 02/20] multifd: Support for zero pages transmission Hao Xiang
2024-01-04 0:44 ` [PATCH v3 03/20] multifd: Zero " Hao Xiang
2024-01-15 7:01 ` Shivam Kumar
2024-01-23 0:46 ` [External] " Hao Xiang
2024-02-01 5:22 ` Peter Xu
2024-02-01 23:24 ` [External] " Hao Xiang
2024-01-04 0:44 ` [PATCH v3 04/20] So we use multifd to transmit zero pages Hao Xiang
2024-01-04 0:44 ` [PATCH v3 05/20] meson: Introduce new instruction set enqcmd to the build system Hao Xiang
2024-01-04 0:44 ` [PATCH v3 06/20] util/dsa: Add dependency idxd Hao Xiang
2024-02-01 5:34 ` Peter Xu
2024-01-04 0:44 ` [PATCH v3 07/20] util/dsa: Implement DSA device start and stop logic Hao Xiang
2024-01-04 0:44 ` [PATCH v3 08/20] util/dsa: Implement DSA task enqueue and dequeue Hao Xiang
2024-01-04 0:44 ` [PATCH v3 09/20] util/dsa: Implement DSA task asynchronous completion thread model Hao Xiang
2024-01-04 0:44 ` [PATCH v3 10/20] util/dsa: Implement zero page checking in DSA task Hao Xiang
2024-01-04 0:44 ` [PATCH v3 11/20] util/dsa: Implement DSA task asynchronous submission and wait for completion Hao Xiang
2024-03-08 10:10 ` Jonathan Cameron via
[not found] ` <CAAYibXhSdeTod4VNyE5ZsZAjQteRdBZEhh5UieNs8s6Ji+X5og@mail.gmail.com>
2024-03-08 21:50 ` [External] " hao.xiang
2024-01-04 0:44 ` [PATCH v3 12/20] migration/multifd: Add new migration option for multifd DSA offloading Hao Xiang
2024-01-04 0:44 ` [PATCH v3 13/20] migration/multifd: Prepare to introduce DSA acceleration on the multifd path Hao Xiang
2024-01-15 6:46 ` Shivam Kumar
2024-01-23 0:37 ` [External] " Hao Xiang
2024-02-02 10:03 ` Peter Xu
2024-01-04 0:44 ` [PATCH v3 14/20] migration/multifd: Enable DSA offloading in multifd sender path Hao Xiang
2024-01-04 0:44 ` [PATCH v3 15/20] migration/multifd: Add test hook to set normal page ratio Hao Xiang
2024-02-01 5:24 ` Peter Xu
2024-02-01 23:10 ` [External] " Hao Xiang
2024-01-04 0:44 ` [PATCH v3 16/20] migration/multifd: Enable set normal page ratio test hook in multifd Hao Xiang
2024-01-04 0:44 ` [PATCH v3 17/20] migration/multifd: Add migration option set packet size Hao Xiang
2024-01-04 0:44 ` [PATCH v3 18/20] migration/multifd: Enable set packet size migration option Hao Xiang
2024-01-04 0:44 ` [PATCH v3 19/20] util/dsa: Add unit test coverage for Intel DSA task submission and completion Hao Xiang
2024-01-04 0:44 ` [PATCH v3 20/20] migration/multifd: Add integration tests for multifd with Intel DSA offloading Hao Xiang
2024-03-08 1:47 ` [PATCH v3 00/20] Use Intel DSA accelerator to offload zero page checking in multifd live migration liulongfang via
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=8734uof5kw.fsf@suse.de \
--to=farosas@suse.de \
--cc=bryan.zhang@bytedance.com \
--cc=hao.xiang@bytedance.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=shivam.kumar1@nutanix.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.