On 11/23/2010 05:02 PM, Juan Quintela wrote:
From: Juan Quintela<quint...@trasno.org>

When printing debug information for migration, print total time spent.

Signed-off-by: Juan Quintela<quint...@trasno.org>
Signed-off-by: Juan Quintela<quint...@redhat.com>
---
  migration.c |   13 +++++++++++++
  1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/migration.c b/migration.c
index 9ee8b17..4786406 100644
--- a/migration.c
+++ b/migration.c
@@ -26,9 +26,16 @@
  #ifdef DEBUG_MIGRATION
  #define DPRINTF(fmt, ...) \
      do { printf("migration: " fmt, ## __VA_ARGS__); } while (0)
+static int64_t start, stop;
+#define START_MIGRATION_CLOCK()        do { start = qemu_get_clock(rt_clock); 
} while (0)
+#define STOP_MIGRATION_CLOCK() \
+       do { stop = qemu_get_clock(rt_clock) - start; \
+       } while (0)
  #else
  #define DPRINTF(fmt, ...) \
      do { } while (0)
+#define START_MIGRATION_CLOCK()        do {} while (0)
+#define STOP_MIGRATION_CLOCK() do {} while (0)
  #endif

  /* Migration speed throttling */
@@ -88,6 +95,7 @@ int do_migrate(Monitor *mon, const QDict *qdict, QObject 
**ret_data)
          return -1;
      }

+    START_MIGRATION_CLOCK();

This is hideous :-)

Recording the time is not a bad idea but it should be stored in the migration state and available via info migrate.

Regards,

Anthony Liguori

      if (strstart(uri, "tcp:",&p)) {
          s = tcp_start_outgoing_migration(mon, p, max_throttle, detach,
                                           blk, inc);
@@ -127,6 +135,8 @@ int do_migrate_cancel(Monitor *mon, const QDict *qdict, 
QObject **ret_data)
      if (s)
          s->cancel(s);

+    STOP_MIGRATION_CLOCK();
+    DPRINTF("canceled after %lu milliseconds\n", stop);
      return 0;
  }

@@ -378,6 +388,9 @@ void migrate_fd_put_ready(void *opaque)
          } else {
              state = MIG_STATE_COMPLETED;
          }
+       STOP_MIGRATION_CLOCK();
+       DPRINTF("ended after %lu milliseconds\n", stop);
+
          if (migrate_fd_cleanup(s)<  0) {
              if (old_vm_running) {
                  vm_start();


Reply via email to