[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 3/6] migration/dirtyrate: add vcpu option for qmp calc-dirty-r
From: |
huangy81 |
Subject: |
[PATCH v1 3/6] migration/dirtyrate: add vcpu option for qmp calc-dirty-rate |
Date: |
Tue, 1 Jun 2021 01:05:00 +0800 |
From: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
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@chinatelecom.cn>
---
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
- [PATCH v1 0/6] support dirtyrate at the granualrity of vcpu, huangy81, 2021/05/31
- [PATCH v1 1/6] KVM: add kvm_dirty_ring_enabled function, huangy81, 2021/05/31
- [PATCH v1 2/6] KVM: introduce dirty_pages into CPUState, huangy81, 2021/05/31
- [PATCH v1 3/6] migration/dirtyrate: add vcpu option for qmp calc-dirty-rate,
huangy81 <=
- [PATCH v1 4/6] migration/dirtyrate: adjust struct DirtyRateStat, huangy81, 2021/05/31
- [PATCH v1 5/6] migration/dirtyrate: check support of calculation for vcpu, huangy81, 2021/05/31
- [PATCH v1 6/6] migration/dirtyrate: implement dirty-ring dirtyrate calculation, huangy81, 2021/05/31