[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/5] migration: Print expected-downtime on completion
From: |
Joao Martins |
Subject: |
[PATCH 5/5] migration: Print expected-downtime on completion |
Date: |
Tue, 26 Sep 2023 17:18:41 +0100 |
Right now, migration statistics either print downtime or expected
downtime depending on migration completing of in progress. Also in the
beginning of migration by printing the downtime limit as expected
downtime, when estimation is not available.
The pending_size is private in migration iteration and not necessarily
accessible outside. Given the non-determinism of the switchover cost, it
can be useful to understand if the downtime was far off from the one
detected by the migration algoritm, thus print the resultant downtime
alongside its estimation.
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
---
migration/migration.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index dec6c88fbff9..f08f65b4b1c3 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -943,6 +943,10 @@ static void populate_time_info(MigrationInfo *info,
MigrationState *s)
if (s->state == MIGRATION_STATUS_COMPLETED) {
info->has_total_time = true;
info->total_time = s->total_time;
+ if (s->expected_downtime) {
+ info->has_expected_downtime = true;
+ info->expected_downtime = s->expected_downtime;
+ }
} else {
info->has_total_time = true;
info->total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) -
@@ -2844,6 +2848,10 @@ static MigIterateState
migration_iteration_run(MigrationState *s)
if ((!pending_size || pending_size < s->threshold_size) && can_switchover)
{
trace_migration_thread_low_pending(pending_size);
+ if (s->threshold_size) {
+ s->expected_downtime = (pending_size *
s->parameters.downtime_limit) /
+ s->threshold_size;
+ }
migration_completion(s);
return MIG_ITERATE_BREAK;
}
--
2.39.3