mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
migration/throttle: Add cpu-throttle-tailslow migration parameter
At the tail stage of throttling, the Guest is very sensitive to CPU percentage while the @cpu-throttle-increment is excessive usually at tail stage. If this parameter is true, we will compute the ideal CPU percentage used by the Guest, which may exactly make the dirty rate match the dirty rate threshold. Then we will choose a smaller throttle increment between the one specified by @cpu-throttle-increment and the one generated by ideal CPU percentage. Therefore, it is compatible to traditional throttling, meanwhile the throttle increment won't be excessive at tail stage. This may make migration time longer, and is disabled by default. Signed-off-by: Keqian Zhu <zhukeqian1@huawei.com> Message-Id: <20200413101508.54793-1-zhukeqian1@huawei.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
58602676df
commit
cbbf818224
4 changed files with 89 additions and 5 deletions
|
@ -785,6 +785,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
|
|||
params->cpu_throttle_initial = s->parameters.cpu_throttle_initial;
|
||||
params->has_cpu_throttle_increment = true;
|
||||
params->cpu_throttle_increment = s->parameters.cpu_throttle_increment;
|
||||
params->has_cpu_throttle_tailslow = true;
|
||||
params->cpu_throttle_tailslow = s->parameters.cpu_throttle_tailslow;
|
||||
params->has_tls_creds = true;
|
||||
params->tls_creds = g_strdup(s->parameters.tls_creds);
|
||||
params->has_tls_hostname = true;
|
||||
|
@ -1327,6 +1329,10 @@ static void migrate_params_test_apply(MigrateSetParameters *params,
|
|||
dest->cpu_throttle_increment = params->cpu_throttle_increment;
|
||||
}
|
||||
|
||||
if (params->has_cpu_throttle_tailslow) {
|
||||
dest->cpu_throttle_tailslow = params->cpu_throttle_tailslow;
|
||||
}
|
||||
|
||||
if (params->has_tls_creds) {
|
||||
assert(params->tls_creds->type == QTYPE_QSTRING);
|
||||
dest->tls_creds = g_strdup(params->tls_creds->u.s);
|
||||
|
@ -1415,6 +1421,10 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
|
|||
s->parameters.cpu_throttle_increment = params->cpu_throttle_increment;
|
||||
}
|
||||
|
||||
if (params->has_cpu_throttle_tailslow) {
|
||||
s->parameters.cpu_throttle_tailslow = params->cpu_throttle_tailslow;
|
||||
}
|
||||
|
||||
if (params->has_tls_creds) {
|
||||
g_free(s->parameters.tls_creds);
|
||||
assert(params->tls_creds->type == QTYPE_QSTRING);
|
||||
|
@ -3597,6 +3607,8 @@ static Property migration_properties[] = {
|
|||
DEFINE_PROP_UINT8("x-cpu-throttle-increment", MigrationState,
|
||||
parameters.cpu_throttle_increment,
|
||||
DEFAULT_MIGRATE_CPU_THROTTLE_INCREMENT),
|
||||
DEFINE_PROP_BOOL("x-cpu-throttle-tailslow", MigrationState,
|
||||
parameters.cpu_throttle_tailslow, false),
|
||||
DEFINE_PROP_SIZE("x-max-bandwidth", MigrationState,
|
||||
parameters.max_bandwidth, MAX_THROTTLE),
|
||||
DEFINE_PROP_UINT64("x-downtime-limit", MigrationState,
|
||||
|
@ -3703,6 +3715,7 @@ static void migration_instance_init(Object *obj)
|
|||
params->has_throttle_trigger_threshold = true;
|
||||
params->has_cpu_throttle_initial = true;
|
||||
params->has_cpu_throttle_increment = true;
|
||||
params->has_cpu_throttle_tailslow = true;
|
||||
params->has_max_bandwidth = true;
|
||||
params->has_downtime_limit = true;
|
||||
params->has_x_checkpoint_delay = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue