mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
migration/throttle: Add throttle-trig-thres migration parameter
Currently, if the bytes_dirty_period is more than the 50% of bytes_xfer_period, we start or increase throttling. If we make this percentage higher, then we can tolerate higher dirty rate during migration, which means less impact on guest. The side effect of higher percentage is longer migration time. We can make this parameter configurable to switch between mig- ration time first or guest performance first. The default value is 50 and valid range is 1 to 100. Signed-off-by: Keqian Zhu <zhukeqian1@huawei.com> Message-Id: <20200224023142.39360-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
297254c71b
commit
dc14a47076
4 changed files with 76 additions and 23 deletions
|
@ -78,6 +78,7 @@
|
|||
/*0: means nocompress, 1: best speed, ... 9: best compress ratio */
|
||||
#define DEFAULT_MIGRATE_COMPRESS_LEVEL 1
|
||||
/* Define default autoconverge cpu throttle migration parameters */
|
||||
#define DEFAULT_MIGRATE_THROTTLE_TRIGGER_THRESHOLD 50
|
||||
#define DEFAULT_MIGRATE_CPU_THROTTLE_INITIAL 20
|
||||
#define DEFAULT_MIGRATE_CPU_THROTTLE_INCREMENT 10
|
||||
#define DEFAULT_MIGRATE_MAX_CPU_THROTTLE 99
|
||||
|
@ -778,6 +779,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
|
|||
params->compress_wait_thread = s->parameters.compress_wait_thread;
|
||||
params->has_decompress_threads = true;
|
||||
params->decompress_threads = s->parameters.decompress_threads;
|
||||
params->has_throttle_trigger_threshold = true;
|
||||
params->throttle_trigger_threshold = s->parameters.throttle_trigger_threshold;
|
||||
params->has_cpu_throttle_initial = true;
|
||||
params->cpu_throttle_initial = s->parameters.cpu_throttle_initial;
|
||||
params->has_cpu_throttle_increment = true;
|
||||
|
@ -1169,6 +1172,15 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (params->has_throttle_trigger_threshold &&
|
||||
(params->throttle_trigger_threshold < 1 ||
|
||||
params->throttle_trigger_threshold > 100)) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
|
||||
"throttle_trigger_threshold",
|
||||
"an integer in the range of 1 to 100");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (params->has_cpu_throttle_initial &&
|
||||
(params->cpu_throttle_initial < 1 ||
|
||||
params->cpu_throttle_initial > 99)) {
|
||||
|
@ -1298,6 +1310,10 @@ static void migrate_params_test_apply(MigrateSetParameters *params,
|
|||
dest->decompress_threads = params->decompress_threads;
|
||||
}
|
||||
|
||||
if (params->has_throttle_trigger_threshold) {
|
||||
dest->throttle_trigger_threshold = params->throttle_trigger_threshold;
|
||||
}
|
||||
|
||||
if (params->has_cpu_throttle_initial) {
|
||||
dest->cpu_throttle_initial = params->cpu_throttle_initial;
|
||||
}
|
||||
|
@ -1382,6 +1398,10 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
|
|||
s->parameters.decompress_threads = params->decompress_threads;
|
||||
}
|
||||
|
||||
if (params->has_throttle_trigger_threshold) {
|
||||
s->parameters.throttle_trigger_threshold = params->throttle_trigger_threshold;
|
||||
}
|
||||
|
||||
if (params->has_cpu_throttle_initial) {
|
||||
s->parameters.cpu_throttle_initial = params->cpu_throttle_initial;
|
||||
}
|
||||
|
@ -3558,6 +3578,9 @@ static Property migration_properties[] = {
|
|||
DEFINE_PROP_UINT8("x-decompress-threads", MigrationState,
|
||||
parameters.decompress_threads,
|
||||
DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT),
|
||||
DEFINE_PROP_UINT8("x-throttle-trigger-threshold", MigrationState,
|
||||
parameters.throttle_trigger_threshold,
|
||||
DEFAULT_MIGRATE_THROTTLE_TRIGGER_THRESHOLD),
|
||||
DEFINE_PROP_UINT8("x-cpu-throttle-initial", MigrationState,
|
||||
parameters.cpu_throttle_initial,
|
||||
DEFAULT_MIGRATE_CPU_THROTTLE_INITIAL),
|
||||
|
@ -3667,6 +3690,7 @@ static void migration_instance_init(Object *obj)
|
|||
params->has_compress_level = true;
|
||||
params->has_compress_threads = true;
|
||||
params->has_decompress_threads = true;
|
||||
params->has_throttle_trigger_threshold = true;
|
||||
params->has_cpu_throttle_initial = true;
|
||||
params->has_cpu_throttle_increment = true;
|
||||
params->has_max_bandwidth = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue