[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v1 14/26] migration: Add completion tracepoint
From: |
Fabiano Rosas |
Subject: |
[RFC PATCH v1 14/26] migration: Add completion tracepoint |
Date: |
Thu, 30 Mar 2023 15:03:24 -0300 |
Add a completion tracepoint that provides basic stats for
debug. Displays throughput (MB/s and pages/s) and total time (ms).
Usage:
$QEMU ... -trace migration_status
Output:
migration_status 1506 MB/s, 436725 pages/s, 8698 ms
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/migration.c | 6 +++---
migration/migration.h | 4 +++-
migration/savevm.c | 4 ++++
migration/trace-events | 1 +
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 29630523e2..17b26c1808 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3811,7 +3811,7 @@ static uint64_t migration_total_bytes(MigrationState *s)
ram_counters.multifd_bytes;
}
-static void migration_calculate_complete(MigrationState *s)
+void migration_calculate_complete(MigrationState *s)
{
uint64_t bytes = migration_total_bytes(s);
int64_t end_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
@@ -3843,8 +3843,7 @@ static void
update_iteration_initial_status(MigrationState *s)
s->iteration_initial_pages = ram_get_total_transferred_pages();
}
-static void migration_update_counters(MigrationState *s,
- int64_t current_time)
+void migration_update_counters(MigrationState *s, int64_t current_time)
{
uint64_t transferred, transferred_pages, time_spent;
uint64_t current_bytes; /* bytes transferred since the beginning */
@@ -3941,6 +3940,7 @@ static void migration_iteration_finish(MigrationState *s)
case MIGRATION_STATUS_COMPLETED:
migration_calculate_complete(s);
runstate_set(RUN_STATE_POSTMIGRATE);
+ trace_migration_status((int)s->mbps / 8, (int)s->pages_per_second,
s->total_time);
break;
case MIGRATION_STATUS_COLO:
if (!migrate_colo_enabled()) {
diff --git a/migration/migration.h b/migration/migration.h
index 84be34587f..01c8201cfa 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -387,7 +387,9 @@ struct MigrationState {
};
void migrate_set_state(int *state, int old_state, int new_state);
-
+void migration_calculate_complete(MigrationState *s);
+void migration_update_counters(MigrationState *s,
+ int64_t current_time);
void migration_fd_process_incoming(QEMUFile *f, Error **errp);
void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp);
void migration_incoming_process(void);
diff --git a/migration/savevm.c b/migration/savevm.c
index 1f1bc19224..b369d11b19 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1638,6 +1638,7 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp)
qemu_mutex_lock_iothread();
while (qemu_file_get_error(f) == 0) {
+ migration_update_counters(ms, qemu_clock_get_ms(QEMU_CLOCK_REALTIME));
if (qemu_savevm_state_iterate(f, false) > 0) {
break;
}
@@ -1660,6 +1661,9 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp)
}
migrate_set_state(&ms->state, MIGRATION_STATUS_SETUP, status);
+ migration_calculate_complete(ms);
+ trace_migration_status((int)ms->mbps / 8, (int)ms->pages_per_second,
ms->total_time);
+
/* f is outer parameter, it should not stay in global migration state after
* this function finished */
ms->to_dst_file = NULL;
diff --git a/migration/trace-events b/migration/trace-events
index 92161eeac5..23e4dad1ec 100644
--- a/migration/trace-events
+++ b/migration/trace-events
@@ -165,6 +165,7 @@ migration_return_path_end_after(int rp_error) "%d"
migration_thread_after_loop(void) ""
migration_thread_file_err(void) ""
migration_thread_setup_complete(void) ""
+migration_status(int mpbs, int pages_per_second, int64_t total_time) "%d MB/s,
%d pages/s, %ld ms"
open_return_path_on_source(void) ""
open_return_path_on_source_continue(void) ""
postcopy_start(void) ""
--
2.35.3
- [RFC PATCH v1 05/26] migration: Initial support of fixed-ram feature for analyze-migration.py, (continued)
- [RFC PATCH v1 05/26] migration: Initial support of fixed-ram feature for analyze-migration.py, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 06/26] io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for channel file, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 08/26] io: implement io_pwritev/preadv for QIOChannelFile, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 07/26] io: Add generic pwritev/preadv interface, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 09/26] migration/qemu-file: add utility methods for working with seekable channels, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 10/26] migration/ram: Introduce 'fixed-ram' migration stream capability, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 11/26] migration: Refactor precopy ram loading code, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 12/26] migration: Add support for 'fixed-ram' migration restore, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 13/26] tests/qtest: migration-test: Add tests for fixed-ram file-based migration, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 15/26] migration/multifd: Remove direct "socket" references, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 14/26] migration: Add completion tracepoint,
Fabiano Rosas <=
- [RFC PATCH v1 16/26] migration/multifd: Allow multifd without packets, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 17/26] migration/multifd: Add outgoing QIOChannelFile support, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 19/26] migration/multifd: Add pages to the receiving side, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 18/26] migration/multifd: Add incoming QIOChannelFile support, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 21/26] migration/ram: Add a wrapper for fixed-ram shadow bitmap, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 22/26] migration/multifd: Support outgoing fixed-ram stream format, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 20/26] io: Add a pwritev/preadv version that takes a discontiguous iovec, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 23/26] migration/multifd: Support incoming fixed-ram stream format, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 25/26] migration: Add direct-io parameter, Fabiano Rosas, 2023/03/30
- [RFC PATCH v1 24/26] tests/qtest: Add a multifd + fixed-ram migration test, Fabiano Rosas, 2023/03/30