Commit 43c60a81 authored by Liang Li's avatar Liang Li Committed by Juan Quintela
Browse files

migration: Use an array instead of 3 parameters



Put the three parameters related to multiple thread (de)compression
into an int array, and use an enum type to index the parameter.

Signed-off-by: default avatarLiang Li <liang.z.li@intel.com>
Signed-off-by: default avatarYang Zhang <yang.z.zhang@intel.com>
Signed-off-by: default avatarJuan Quintela <quintela@redhat.com>
parent dde4e694
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -50,9 +50,7 @@ struct MigrationState
    QemuThread thread;
    QEMUBH *cleanup_bh;
    QEMUFile *file;
    int compress_thread_count;
    int decompress_thread_count;
    int compress_level;
    int parameters[MIGRATION_PARAMETER_MAX];

    int state;
    MigrationParams params;
+19 −12
Original line number Diff line number Diff line
@@ -60,9 +60,12 @@ MigrationState *migrate_get_current(void)
        .bandwidth_limit = MAX_THROTTLE,
        .xbzrle_cache_size = DEFAULT_MIGRATE_CACHE_SIZE,
        .mbps = -1,
        .compress_thread_count = DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT,
        .decompress_thread_count = DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT,
        .compress_level = DEFAULT_MIGRATE_COMPRESS_LEVEL,
        .parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL] =
                DEFAULT_MIGRATE_COMPRESS_LEVEL,
        .parameters[MIGRATION_PARAMETER_COMPRESS_THREADS] =
                DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT,
        .parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS] =
                DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT,
    };

    return &current_migration;
@@ -406,9 +409,11 @@ static MigrationState *migrate_init(const MigrationParams *params)
    int64_t bandwidth_limit = s->bandwidth_limit;
    bool enabled_capabilities[MIGRATION_CAPABILITY_MAX];
    int64_t xbzrle_cache_size = s->xbzrle_cache_size;
    int compress_level = s->compress_level;
    int compress_thread_count = s->compress_thread_count;
    int decompress_thread_count = s->decompress_thread_count;
    int compress_level = s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL];
    int compress_thread_count =
            s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS];
    int decompress_thread_count =
            s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS];

    memcpy(enabled_capabilities, s->enabled_capabilities,
           sizeof(enabled_capabilities));
@@ -419,9 +424,11 @@ static MigrationState *migrate_init(const MigrationParams *params)
           sizeof(enabled_capabilities));
    s->xbzrle_cache_size = xbzrle_cache_size;

    s->compress_level = compress_level;
    s->compress_thread_count = compress_thread_count;
    s->decompress_thread_count = decompress_thread_count;
    s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL] = compress_level;
    s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS] =
               compress_thread_count;
    s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS] =
               decompress_thread_count;
    s->bandwidth_limit = bandwidth_limit;
    s->state = MIGRATION_STATUS_SETUP;
    trace_migrate_set_state(MIGRATION_STATUS_SETUP);
@@ -624,7 +631,7 @@ int migrate_compress_level(void)

    s = migrate_get_current();

    return s->compress_level;
    return s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL];
}

int migrate_compress_threads(void)
@@ -633,7 +640,7 @@ int migrate_compress_threads(void)

    s = migrate_get_current();

    return s->compress_thread_count;
    return s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS];
}

int migrate_decompress_threads(void)
@@ -642,7 +649,7 @@ int migrate_decompress_threads(void)

    s = migrate_get_current();

    return s->decompress_thread_count;
    return s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS];
}

int migrate_use_xbzrle(void)
+23 −0
Original line number Diff line number Diff line
@@ -569,6 +569,29 @@
##
{ 'command': 'query-migrate-capabilities', 'returns':   ['MigrationCapabilityStatus']}

# @MigrationParameter
#
# Migration parameters enumeration
#
# @compress-level: Set the compression level to be used in live migration,
#          the compression level is an integer between 0 and 9, where 0 means
#          no compression, 1 means the best compression speed, and 9 means best
#          compression ratio which will consume more CPU.
#
# @compress-threads: Set compression thread count to be used in live migration,
#          the compression thread count is an integer between 1 and 255.
#
# @decompress-threads: Set decompression thread count to be used in live
#          migration, the decompression thread count is an integer between 1
#          and 255. Usually, decompression is at least 4 times as fast as
#          compression, so set the decompress-threads to the number about 1/4
#          of compress-threads is adequate.
#
# Since: 2.4
##
{ 'enum': 'MigrationParameter',
  'data': ['compress-level', 'compress-threads', 'decompress-threads'] }

##
# @MouseInfo:
#