Message ID | 20190308101210.28038-1-dgilbert@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | migration/postcopy: Update the bandwidth during postcopy | expand |
On Fri, Mar 08, 2019 at 10:12:10AM +0000, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > The recently added max-postcopy-bandwidth parameter is only read > at the transition from precopy->postcopy where as the older > max-bandwidth parameter updates the migration bandwidth when changed > even if the migration is already running. > > Fix this discrepency so that: > a) You can change the bandwidth during postcopy by setting > max-postcopy-bandwidth > > b) Changing max-bandwidth during postcopy has no effect > (it currently changes the postcopy bandwidth which isn't > expected). > > Fixes: 7e555c6c > bz: https://bugzilla.redhat.com/show_bug.cgi?id=1686321 > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Now in qapi/migration.json it's not mentioning precopy in the max-bandwidth entry which seems to work even for postcopy but it'll not: # @max-bandwidth: to set maximum speed for migration. maximum speed in # bytes per second. (Since 2.8) Should we consider to touch that up too to match everything?
diff --git a/migration/migration.c b/migration/migration.c index df6fd8e0e5..221f1b9ced 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1347,7 +1347,7 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp) if (params->has_max_bandwidth) { s->parameters.max_bandwidth = params->max_bandwidth; - if (s->to_dst_file) { + if (s->to_dst_file && !migration_in_postcopy()) { qemu_file_set_rate_limit(s->to_dst_file, s->parameters.max_bandwidth / XFER_LIMIT_RATIO); } @@ -1379,6 +1379,10 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp) } if (params->has_max_postcopy_bandwidth) { s->parameters.max_postcopy_bandwidth = params->max_postcopy_bandwidth; + if (s->to_dst_file && migration_in_postcopy()) { + qemu_file_set_rate_limit(s->to_dst_file, + s->parameters.max_postcopy_bandwidth / XFER_LIMIT_RATIO); + } } if (params->has_max_cpu_throttle) { s->parameters.max_cpu_throttle = params->max_cpu_throttle;