[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 01/17] replay: Fix migration use of clock for statistics
From: |
Peter Xu |
Subject: |
Re: [PATCH 01/17] replay: Fix migration use of clock for statistics |
Date: |
Fri, 20 Dec 2024 11:31:41 -0500 |
On Fri, Dec 20, 2024 at 08:42:03PM +1000, Nicholas Piggin wrote:
> Migration reads CLOCK_HOST when not holding the replay_mutex, which
> asserts when recording a trace. These are not guest visible so should
> be CLOCK_REALTIME like other statistics in MigrationState, which do
> not require the replay_mutex.
Irrelevant of the change, should we document such lock implications in
timer.h?
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> migration/migration.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 8c5bd0a75c8..2eb9e50a263 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -3433,7 +3433,7 @@ static void *migration_thread(void *opaque)
> {
> MigrationState *s = opaque;
> MigrationThread *thread = NULL;
> - int64_t setup_start = qemu_clock_get_ms(QEMU_CLOCK_HOST);
> + int64_t setup_start = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
> MigThrError thr_error;
> bool urgent = false;
> Error *local_err = NULL;
> @@ -3504,7 +3504,7 @@ static void *migration_thread(void *opaque)
> goto out;
> }
>
> - s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start;
> + s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) - setup_start;
>
> trace_migration_thread_setup_complete();
>
> @@ -3584,7 +3584,7 @@ static void *bg_migration_thread(void *opaque)
>
> migration_rate_set(RATE_LIMIT_DISABLED);
>
> - setup_start = qemu_clock_get_ms(QEMU_CLOCK_HOST);
> + setup_start = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
> /*
> * We want to save vmstate for the moment when migration has been
> * initiated but also we want to save RAM content while VM is running.
> @@ -3629,7 +3629,7 @@ static void *bg_migration_thread(void *opaque)
> goto fail_setup;
> }
>
> - s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start;
> + s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) - setup_start;
>
> trace_migration_thread_setup_complete();
>
> --
> 2.45.2
>
--
Peter Xu
[PATCH 02/17] replay: Fix migration replay_mutex locking, Nicholas Piggin, 2024/12/20
[PATCH 03/17] async: rework async event API for replay, Nicholas Piggin, 2024/12/20
[PATCH 04/17] util/main-loop: Convert to new bh API, Nicholas Piggin, 2024/12/20
[PATCH 05/17] util/thread-pool: Convert to new bh API, Nicholas Piggin, 2024/12/20