From: Hyman Huang(黄勇) <huangy81@xxxxxxxxxxxxxxx> calculate dirtyrate for each vcpu if vcpu is true, add the dirtyrate of each vcpu to the return value also. Signed-off-by: Hyman Huang(黄勇) <huangy81@xxxxxxxxxxxxxxx> --- migration/dirtyrate.c | 5 ++++- migration/dirtyrate.h | 1 + qapi/migration.json | 28 ++++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c index ccb98147e8..3c1a824a41 100644 --- a/migration/dirtyrate.c +++ b/migration/dirtyrate.c @@ -383,7 +383,10 @@ void *get_dirtyrate_thread(void *arg) return NULL; } -void qmp_calc_dirty_rate(int64_t calc_time, Error **errp) +void qmp_calc_dirty_rate(int64_t calc_time, + bool has_vcpu, + bool vcpu, + Error **errp) { static struct DirtyRateConfig config; QemuThread thread; diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h index 6ec429534d..f20dd52d77 100644 --- a/migration/dirtyrate.h +++ b/migration/dirtyrate.h @@ -38,6 +38,7 @@ struct DirtyRateConfig { uint64_t sample_pages_per_gigabytes; /* sample pages per GB */ int64_t sample_period_seconds; /* time duration between two sampling */ + bool vcpu; /* calculate dirtyrate for each vcpu using dirty ring */ }; /* diff --git a/qapi/migration.json b/qapi/migration.json index 7a5bdf9a0d..896ebcb93b 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -1708,6 +1708,21 @@ { 'event': 'UNPLUG_PRIMARY', 'data': { 'device-id': 'str' } } +## +# @DirtyRateVcpu: +# +# Dirty rate of vcpu. +# +# @id: vcpu index. +# +# @dirty-rate: dirty rate. +# +# Since: 6.1 +# +## +{ 'struct': 'DirtyRateVcpu', + 'data': { 'id': 'int', 'dirty-rate': 'int64' } } + ## # @DirtyRateStatus: # @@ -1740,6 +1755,10 @@ # # @calc-time: time in units of second for sample dirty pages # +# @vcpu: calculate dirtyrate for each vcpu (Since 6.1) +# +# @vcpu-dirty-rate: dirtyrate for each vcpu (Since 6.1) +# # Since: 5.2 # ## @@ -1747,7 +1766,9 @@ 'data': {'*dirty-rate': 'int64', 'status': 'DirtyRateStatus', 'start-time': 'int64', - 'calc-time': 'int64'} } + 'calc-time': 'int64', + '*vcpu': 'bool', + '*vcpu-dirty-rate': [ 'DirtyRateVcpu' ] } } ## # @calc-dirty-rate: @@ -1756,13 +1777,16 @@ # # @calc-time: time in units of second for sample dirty pages # +# @vcpu: calculate vcpu dirty rate if true, the default value is +# false (since 6.1) +# # Since: 5.2 # # Example: # {"command": "calc-dirty-rate", "data": {"calc-time": 1} } # ## -{ 'command': 'calc-dirty-rate', 'data': {'calc-time': 'int64'} } +{ 'command': 'calc-dirty-rate', 'data': {'calc-time': 'int64', '*vcpu': 'bool'} } ## # @query-dirty-rate: -- 2.24.3