[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/5] migration: Print expected-downtime on completion
|
From: |
Juan Quintela |
|
Subject: |
Re: [PATCH 5/5] migration: Print expected-downtime on completion |
|
Date: |
Tue, 31 Oct 2023 14:14:51 +0100 |
|
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.3 (gnu/linux) |
Joao Martins <joao.m.martins@oracle.com> wrote:
> 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>
I see that "part" of this series is on the downtime series by Peter.
I have merged them (they are tracepoints, we can change them when
needed).
But this one is not on that series.
Should we continue and send a patch for it?
Later, Juan.
> ---
> 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;
> }