Message ID | 20231114054032.1192027-2-hao.xiang@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Use Intel DSA accelerator to offload zero page checking in multifd live migration. | expand |
Hao Xiang <hao.xiang@bytedance.com> writes: > 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 | 13 +++++++++++++ > migration/options.h | 1 + > qapi/migration.json | 8 +++++++- > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/migration/options.c b/migration/options.c > index 8d8ec73ad9..00c0c4a0d6 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,17 @@ bool migrate_multifd(void) > return s->capabilities[MIGRATION_CAPABILITY_MULTIFD]; > } > > +bool migrate_use_main_zero_page(void) We dropped the 'use' from these a while back. Let's not bring it back. > +{ > + //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]; Could use /* */ so checkpatch won't complain. > + 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 975761eebd..09e4393591 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) > +# > # 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:
diff --git a/migration/options.c b/migration/options.c index 8d8ec73ad9..00c0c4a0d6 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,17 @@ 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 975761eebd..09e4393591 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) +# # 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: