* Juan Quintela (quint...@redhat.com) wrote: > Libvirt don't want to expose (and explain it). From now on we measure > the number of packages in bytes instead of pages, so it is the same > independently of architecture. We choose the page size of x86. > Notice that in the following patch we make this variable. > > Signed-off-by: Juan Quintela <quint...@redhat.com>
Fortunately it's so easy to remove and add parameters.... Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > hmp.c | 7 ------- > migration/migration.c | 30 ------------------------------ > migration/migration.h | 1 - > migration/ram.c | 15 ++++++++++----- > qapi/migration.json | 13 +------------ > 5 files changed, 11 insertions(+), 55 deletions(-) > > diff --git a/hmp.c b/hmp.c > index 8e283153b5..8bd5e48005 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -422,9 +422,6 @@ void hmp_info_migrate_parameters(Monitor *mon, const > QDict *qdict) > monitor_printf(mon, "%s: %u\n", > MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_CHANNELS), > params->x_multifd_channels); > - monitor_printf(mon, "%s: %u\n", > - MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT), > - params->x_multifd_page_count); > monitor_printf(mon, "%s: %" PRIu64 "\n", > MigrationParameter_str(MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE), > params->xbzrle_cache_size); > @@ -1772,10 +1769,6 @@ void hmp_migrate_set_parameter(Monitor *mon, const > QDict *qdict) > p->has_x_multifd_channels = true; > visit_type_int(v, param, &p->x_multifd_channels, &err); > break; > - case MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT: > - p->has_x_multifd_page_count = true; > - visit_type_int(v, param, &p->x_multifd_page_count, &err); > - break; > case MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE: > p->has_xbzrle_cache_size = true; > visit_type_size(v, param, &cache_size, &err); > diff --git a/migration/migration.c b/migration/migration.c > index 5ecf0978ac..f1b34bfe29 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -81,7 +81,6 @@ > /* The delay time (in ms) between two COLO checkpoints */ > #define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY (200 * 100) > #define DEFAULT_MIGRATE_MULTIFD_CHANNELS 2 > -#define DEFAULT_MIGRATE_MULTIFD_PAGE_COUNT 16 > > /* Background transfer rate for postcopy, 0 means unlimited, note > * that page requests can still exceed this limit. > @@ -749,8 +748,6 @@ MigrationParameters *qmp_query_migrate_parameters(Error > **errp) > params->block_incremental = s->parameters.block_incremental; > params->has_x_multifd_channels = true; > params->x_multifd_channels = s->parameters.x_multifd_channels; > - params->has_x_multifd_page_count = true; > - params->x_multifd_page_count = s->parameters.x_multifd_page_count; > params->has_xbzrle_cache_size = true; > params->xbzrle_cache_size = s->parameters.xbzrle_cache_size; > params->has_max_postcopy_bandwidth = true; > @@ -1112,14 +1109,6 @@ static bool migrate_params_check(MigrationParameters > *params, Error **errp) > "is invalid, it should be in the range of 1 to 255"); > return false; > } > - if (params->has_x_multifd_page_count && > - (params->x_multifd_page_count < 1 || > - params->x_multifd_page_count > 10000)) { > - error_setg(errp, QERR_INVALID_PARAMETER_VALUE, > - "multifd_page_count", > - "is invalid, it should be in the range of 1 to 10000"); > - return false; > - } > > if (params->has_xbzrle_cache_size && > (params->xbzrle_cache_size < qemu_target_page_size() || > @@ -1202,9 +1191,6 @@ static void > migrate_params_test_apply(MigrateSetParameters *params, > if (params->has_x_multifd_channels) { > dest->x_multifd_channels = params->x_multifd_channels; > } > - if (params->has_x_multifd_page_count) { > - dest->x_multifd_page_count = params->x_multifd_page_count; > - } > if (params->has_xbzrle_cache_size) { > dest->xbzrle_cache_size = params->xbzrle_cache_size; > } > @@ -1283,9 +1269,6 @@ static void migrate_params_apply(MigrateSetParameters > *params, Error **errp) > if (params->has_x_multifd_channels) { > s->parameters.x_multifd_channels = params->x_multifd_channels; > } > - if (params->has_x_multifd_page_count) { > - s->parameters.x_multifd_page_count = params->x_multifd_page_count; > - } > if (params->has_xbzrle_cache_size) { > s->parameters.xbzrle_cache_size = params->xbzrle_cache_size; > xbzrle_cache_resize(params->xbzrle_cache_size, errp); > @@ -2044,15 +2027,6 @@ int migrate_multifd_channels(void) > return s->parameters.x_multifd_channels; > } > > -int migrate_multifd_page_count(void) > -{ > - MigrationState *s; > - > - s = migrate_get_current(); > - > - return s->parameters.x_multifd_page_count; > -} > - > int migrate_use_xbzrle(void) > { > MigrationState *s; > @@ -3286,9 +3260,6 @@ static Property migration_properties[] = { > DEFINE_PROP_UINT8("x-multifd-channels", MigrationState, > parameters.x_multifd_channels, > DEFAULT_MIGRATE_MULTIFD_CHANNELS), > - DEFINE_PROP_UINT32("x-multifd-page-count", MigrationState, > - parameters.x_multifd_page_count, > - DEFAULT_MIGRATE_MULTIFD_PAGE_COUNT), > DEFINE_PROP_SIZE("xbzrle-cache-size", MigrationState, > parameters.xbzrle_cache_size, > DEFAULT_MIGRATE_XBZRLE_CACHE_SIZE), > @@ -3366,7 +3337,6 @@ static void migration_instance_init(Object *obj) > params->has_x_checkpoint_delay = true; > params->has_block_incremental = true; > params->has_x_multifd_channels = true; > - params->has_x_multifd_page_count = true; > params->has_xbzrle_cache_size = true; > params->has_max_postcopy_bandwidth = true; > params->has_max_cpu_throttle = true; > diff --git a/migration/migration.h b/migration/migration.h > index 837709d8a1..7e03643683 100644 > --- a/migration/migration.h > +++ b/migration/migration.h > @@ -269,7 +269,6 @@ bool migrate_auto_converge(void); > bool migrate_use_multifd(void); > bool migrate_pause_before_switchover(void); > int migrate_multifd_channels(void); > -int migrate_multifd_page_count(void); > > int migrate_use_xbzrle(void); > int64_t migrate_xbzrle_cache_size(void); > diff --git a/migration/ram.c b/migration/ram.c > index 26ed26fc2d..e22d02760b 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -520,6 +520,9 @@ exit: > > #define MULTIFD_FLAG_SYNC (1 << 0) > > +/* This value needs to be a multiple of qemu_target_page_size() */ > +#define MULTIFD_PACKET_SIZE (64 * 1024) > + > typedef struct { > uint32_t magic; > uint32_t version; > @@ -720,12 +723,13 @@ static void multifd_pages_clear(MultiFDPages_t *pages) > static void multifd_send_fill_packet(MultiFDSendParams *p) > { > MultiFDPacket_t *packet = p->packet; > + uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size(); > int i; > > packet->magic = cpu_to_be32(MULTIFD_MAGIC); > packet->version = cpu_to_be32(MULTIFD_VERSION); > packet->flags = cpu_to_be32(p->flags); > - packet->pages_alloc = cpu_to_be32(migrate_multifd_page_count()); > + packet->pages_alloc = cpu_to_be32(page_count); > packet->pages_used = cpu_to_be32(p->pages->used); > packet->next_packet_size = cpu_to_be32(p->next_packet_size); > packet->packet_num = cpu_to_be64(p->packet_num); > @@ -742,6 +746,7 @@ static void multifd_send_fill_packet(MultiFDSendParams *p) > static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp) > { > MultiFDPacket_t *packet = p->packet; > + uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size(); > RAMBlock *block; > int i; > > @@ -764,10 +769,10 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams > *p, Error **errp) > p->flags = be32_to_cpu(packet->flags); > > packet->pages_alloc = be32_to_cpu(packet->pages_alloc); > - if (packet->pages_alloc > migrate_multifd_page_count()) { > + if (packet->pages_alloc > page_count) { > error_setg(errp, "multifd: received packet " > "with size %d and expected maximum size %d", > - packet->pages_alloc, migrate_multifd_page_count()) ; > + packet->pages_alloc, page_count) ; > return -1; > } > > @@ -1099,7 +1104,7 @@ static void multifd_new_send_channel_async(QIOTask > *task, gpointer opaque) > int multifd_save_setup(void) > { > int thread_count; > - uint32_t page_count = migrate_multifd_page_count(); > + uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size(); > uint8_t i; > > if (!migrate_use_multifd()) { > @@ -1299,7 +1304,7 @@ static void *multifd_recv_thread(void *opaque) > int multifd_load_setup(void) > { > int thread_count; > - uint32_t page_count = migrate_multifd_page_count(); > + uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size(); > uint8_t i; > > if (!migrate_use_multifd()) { > diff --git a/qapi/migration.json b/qapi/migration.json > index b62947791f..8c5db60406 100644 > --- a/qapi/migration.json > +++ b/qapi/migration.json > @@ -547,9 +547,6 @@ > # number of sockets used for migration. The > # default value is 2 (since 2.11) > # > -# @x-multifd-page-count: Number of pages sent together to a thread. > -# The default value is 16 (since 2.11) > -# > # @xbzrle-cache-size: cache size to be used by XBZRLE migration. It > # needs to be a multiple of the target page size > # and a power of 2 > @@ -569,7 +566,7 @@ > 'cpu-throttle-initial', 'cpu-throttle-increment', > 'tls-creds', 'tls-hostname', 'max-bandwidth', > 'downtime-limit', 'x-checkpoint-delay', 'block-incremental', > - 'x-multifd-channels', 'x-multifd-page-count', > + 'x-multifd-channels', > 'xbzrle-cache-size', 'max-postcopy-bandwidth', > 'max-cpu-throttle' ] } > > @@ -637,9 +634,6 @@ > # number of sockets used for migration. The > # default value is 2 (since 2.11) > # > -# @x-multifd-page-count: Number of pages sent together to a thread. > -# The default value is 16 (since 2.11) > -# > # @xbzrle-cache-size: cache size to be used by XBZRLE migration. It > # needs to be a multiple of the target page size > # and a power of 2 > @@ -670,7 +664,6 @@ > '*x-checkpoint-delay': 'int', > '*block-incremental': 'bool', > '*x-multifd-channels': 'int', > - '*x-multifd-page-count': 'int', > '*xbzrle-cache-size': 'size', > '*max-postcopy-bandwidth': 'size', > '*max-cpu-throttle': 'int' } } > @@ -754,9 +747,6 @@ > # number of sockets used for migration. > # The default value is 2 (since 2.11) > # > -# @x-multifd-page-count: Number of pages sent together to a thread. > -# The default value is 16 (since 2.11) > -# > # @xbzrle-cache-size: cache size to be used by XBZRLE migration. It > # needs to be a multiple of the target page size > # and a power of 2 > @@ -786,7 +776,6 @@ > '*x-checkpoint-delay': 'uint32', > '*block-incremental': 'bool' , > '*x-multifd-channels': 'uint8', > - '*x-multifd-page-count': 'uint32', > '*xbzrle-cache-size': 'size', > '*max-postcopy-bandwidth': 'size', > '*max-cpu-throttle':'uint8'} } > -- > 2.20.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK