mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
multifd: Add multifd-zstd-level parameter
This parameter specifies the zstd compression level. The next patch will put it to use. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Acked-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
3a67848134
commit
6a9ad15420
4 changed files with 55 additions and 3 deletions
|
@ -91,6 +91,8 @@
|
|||
#define DEFAULT_MIGRATE_MULTIFD_COMPRESSION MULTIFD_COMPRESSION_NONE
|
||||
/* 0: means nocompress, 1: best speed, ... 9: best compress ratio */
|
||||
#define DEFAULT_MIGRATE_MULTIFD_ZLIB_LEVEL 1
|
||||
/* 0: means nocompress, 1: best speed, ... 20: best compress ratio */
|
||||
#define DEFAULT_MIGRATE_MULTIFD_ZSTD_LEVEL 1
|
||||
|
||||
/* Background transfer rate for postcopy, 0 means unlimited, note
|
||||
* that page requests can still exceed this limit.
|
||||
|
@ -805,6 +807,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
|
|||
params->multifd_compression = s->parameters.multifd_compression;
|
||||
params->has_multifd_zlib_level = true;
|
||||
params->multifd_zlib_level = s->parameters.multifd_zlib_level;
|
||||
params->has_multifd_zstd_level = true;
|
||||
params->multifd_zstd_level = s->parameters.multifd_zstd_level;
|
||||
params->has_xbzrle_cache_size = true;
|
||||
params->xbzrle_cache_size = s->parameters.xbzrle_cache_size;
|
||||
params->has_max_postcopy_bandwidth = true;
|
||||
|
@ -1219,6 +1223,13 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (params->has_multifd_zstd_level &&
|
||||
(params->multifd_zstd_level > 20)) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "multifd_zstd_level",
|
||||
"is invalid, it should be in the range of 0 to 20");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (params->has_xbzrle_cache_size &&
|
||||
(params->xbzrle_cache_size < qemu_target_page_size() ||
|
||||
!is_power_of_2(params->xbzrle_cache_size))) {
|
||||
|
@ -2274,6 +2285,15 @@ int migrate_multifd_zlib_level(void)
|
|||
return s->parameters.multifd_zlib_level;
|
||||
}
|
||||
|
||||
int migrate_multifd_zstd_level(void)
|
||||
{
|
||||
MigrationState *s;
|
||||
|
||||
s = migrate_get_current();
|
||||
|
||||
return s->parameters.multifd_zstd_level;
|
||||
}
|
||||
|
||||
int migrate_use_xbzrle(void)
|
||||
{
|
||||
MigrationState *s;
|
||||
|
@ -3567,6 +3587,9 @@ static Property migration_properties[] = {
|
|||
DEFINE_PROP_UINT8("multifd-zlib-level", MigrationState,
|
||||
parameters.multifd_zlib_level,
|
||||
DEFAULT_MIGRATE_MULTIFD_ZLIB_LEVEL),
|
||||
DEFINE_PROP_UINT8("multifd-zstd-level", MigrationState,
|
||||
parameters.multifd_zstd_level,
|
||||
DEFAULT_MIGRATE_MULTIFD_ZSTD_LEVEL),
|
||||
DEFINE_PROP_SIZE("xbzrle-cache-size", MigrationState,
|
||||
parameters.xbzrle_cache_size,
|
||||
DEFAULT_MIGRATE_XBZRLE_CACHE_SIZE),
|
||||
|
@ -3659,6 +3682,7 @@ static void migration_instance_init(Object *obj)
|
|||
params->has_multifd_channels = true;
|
||||
params->has_multifd_compression = true;
|
||||
params->has_multifd_zlib_level = true;
|
||||
params->has_multifd_zstd_level = true;
|
||||
params->has_xbzrle_cache_size = true;
|
||||
params->has_max_postcopy_bandwidth = true;
|
||||
params->has_max_cpu_throttle = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue