qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/3] migration: add more traces
@ 2014-03-04  4:10 Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 1/3] vl: add system_wakeup_request tracepoint Alexey Kardashevskiy
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-04  4:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, Paolo Bonzini

This reworks/adds traces for migration.
v2 is rework of an original single patch with the same subject.

Alexey Kardashevskiy (3):
  vl: add system_wakeup_request tracepoint
  migration: extend section_start/end traces
  migration: add more traces

 migration.c  | 30 ++++++------------------------
 qemu-file.c  |  2 ++
 savevm.c     | 20 ++++++++++++++------
 trace-events | 21 +++++++++++++++++++--
 vl.c         |  2 ++
 vmstate.c    |  2 ++
 6 files changed, 45 insertions(+), 32 deletions(-)

-- 
1.8.4.rc4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v2 1/3] vl: add system_wakeup_request tracepoint
  2014-03-04  4:10 [Qemu-devel] [PATCH v2 0/3] migration: add more traces Alexey Kardashevskiy
@ 2014-03-04  4:10 ` Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 2/3] migration: extend section_start/end traces Alexey Kardashevskiy
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-04  4:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, Paolo Bonzini

It might be useful for tracing migration.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 trace-events | 1 +
 vl.c         | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/trace-events b/trace-events
index 3713063..dbbaa04 100644
--- a/trace-events
+++ b/trace-events
@@ -486,6 +486,7 @@ runstate_set(int new_state) "new state %d"
 g_malloc(size_t size, void *ptr) "size %zu ptr %p"
 g_realloc(void *ptr, size_t size, void *newptr) "ptr %p size %zu newptr %p"
 g_free(void *ptr) "ptr %p"
+system_wakeup_request(int reason) "reason=%d"
 
 # block/qcow2.c
 qcow2_writev_start_req(void *co, int64_t sector, int nb_sectors) "co %p sector %" PRIx64 " nb_sectors %d"
diff --git a/vl.c b/vl.c
index 1d27b34..179f14e 100644
--- a/vl.c
+++ b/vl.c
@@ -1837,6 +1837,8 @@ void qemu_register_suspend_notifier(Notifier *notifier)
 
 void qemu_system_wakeup_request(WakeupReason reason)
 {
+    trace_system_wakeup_request(reason);
+
     if (!runstate_check(RUN_STATE_SUSPENDED)) {
         return;
     }
-- 
1.8.4.rc4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v2 2/3] migration: extend section_start/end traces
  2014-03-04  4:10 [Qemu-devel] [PATCH v2 0/3] migration: add more traces Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 1/3] vl: add system_wakeup_request tracepoint Alexey Kardashevskiy
@ 2014-03-04  4:10 ` Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 3/3] migration: add more traces Alexey Kardashevskiy
  2014-03-04 12:32 ` [Qemu-devel] [PATCH v2 0/3] " Paolo Bonzini
  3 siblings, 0 replies; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-04  4:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, Paolo Bonzini

This adds @idstr to savevm_section_start and savevm_section_end
tracepoints.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 savevm.c     | 12 ++++++------
 trace-events |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/savevm.c b/savevm.c
index 7329fc5..d094fbb 100644
--- a/savevm.c
+++ b/savevm.c
@@ -527,13 +527,13 @@ int qemu_savevm_state_iterate(QEMUFile *f)
         if (qemu_file_rate_limit(f)) {
             return 0;
         }
-        trace_savevm_section_start();
+        trace_savevm_section_start(se->idstr, se->section_id);
         /* Section type */
         qemu_put_byte(f, QEMU_VM_SECTION_PART);
         qemu_put_be32(f, se->section_id);
 
         ret = se->ops->save_live_iterate(f, se->opaque);
-        trace_savevm_section_end(se->section_id);
+        trace_savevm_section_end(se->idstr, se->section_id);
 
         if (ret < 0) {
             qemu_file_set_error(f, ret);
@@ -565,13 +565,13 @@ void qemu_savevm_state_complete(QEMUFile *f)
                 continue;
             }
         }
-        trace_savevm_section_start();
+        trace_savevm_section_start(se->idstr, se->section_id);
         /* Section type */
         qemu_put_byte(f, QEMU_VM_SECTION_END);
         qemu_put_be32(f, se->section_id);
 
         ret = se->ops->save_live_complete(f, se->opaque);
-        trace_savevm_section_end(se->section_id);
+        trace_savevm_section_end(se->idstr, se->section_id);
         if (ret < 0) {
             qemu_file_set_error(f, ret);
             return;
@@ -584,7 +584,7 @@ void qemu_savevm_state_complete(QEMUFile *f)
         if ((!se->ops || !se->ops->save_state) && !se->vmsd) {
             continue;
         }
-        trace_savevm_section_start();
+        trace_savevm_section_start(se->idstr, se->section_id);
         /* Section type */
         qemu_put_byte(f, QEMU_VM_SECTION_FULL);
         qemu_put_be32(f, se->section_id);
@@ -598,7 +598,7 @@ void qemu_savevm_state_complete(QEMUFile *f)
         qemu_put_be32(f, se->version_id);
 
         vmstate_save(f, se);
-        trace_savevm_section_end(se->section_id);
+        trace_savevm_section_end(se->idstr, se->section_id);
     }
 
     qemu_put_byte(f, QEMU_VM_EOF);
diff --git a/trace-events b/trace-events
index dbbaa04..6225235 100644
--- a/trace-events
+++ b/trace-events
@@ -1031,8 +1031,8 @@ vmware_scratch_write(uint32_t index, uint32_t value) "index %d, value 0x%x"
 vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp) "%dx%d @ %d bpp"
 
 # savevm.c
-savevm_section_start(void) ""
-savevm_section_end(unsigned int section_id) "section_id %u"
+savevm_section_start(const char *id, unsigned int section_id) "%s, section_id %u"
+savevm_section_end(const char *id, unsigned int section_id) "%s, section_id %u"
 
 # arch_init.c
 migration_bitmap_sync_start(void) ""
-- 
1.8.4.rc4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v2 3/3] migration: add more traces
  2014-03-04  4:10 [Qemu-devel] [PATCH v2 0/3] migration: add more traces Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 1/3] vl: add system_wakeup_request tracepoint Alexey Kardashevskiy
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 2/3] migration: extend section_start/end traces Alexey Kardashevskiy
@ 2014-03-04  4:10 ` Alexey Kardashevskiy
  2014-03-04 12:26   ` Paolo Bonzini
  2014-03-04 12:32 ` [Qemu-devel] [PATCH v2 0/3] " Paolo Bonzini
  3 siblings, 1 reply; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-04  4:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, Paolo Bonzini

This replaces DPRINTF macro with tracepoints.

This moves some messages from migration.c to savevm.c.

This adds tracepoint to signal about fileds failed to migrate.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 migration.c  | 30 ++++++------------------------
 qemu-file.c  |  2 ++
 savevm.c     |  8 ++++++++
 trace-events | 16 ++++++++++++++++
 vmstate.c    |  2 ++
 5 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/migration.c b/migration.c
index 14235b2..2497c5d 100644
--- a/migration.c
+++ b/migration.c
@@ -26,16 +26,6 @@
 #include "qmp-commands.h"
 #include "trace.h"
 
-//#define DEBUG_MIGRATION
-
-#ifdef DEBUG_MIGRATION
-#define DPRINTF(fmt, ...) \
-    do { printf("migration: " fmt, ## __VA_ARGS__); } while (0)
-#else
-#define DPRINTF(fmt, ...) \
-    do { } while (0)
-#endif
-
 enum {
     MIG_STATE_ERROR = -1,
     MIG_STATE_NONE,
@@ -111,7 +101,6 @@ static void process_incoming_migration_co(void *opaque)
         exit(EXIT_FAILURE);
     }
     qemu_announce_self();
-    DPRINTF("successfully loaded vm state\n");
 
     bdrv_clear_incoming_migration_all();
     /* Make sure all file formats flush their mutable metadata */
@@ -300,7 +289,7 @@ static void migrate_fd_cleanup(void *opaque)
     s->cleanup_bh = NULL;
 
     if (s->file) {
-        DPRINTF("closing file\n");
+        trace_migrate_fd_cleanup();
         qemu_mutex_unlock_iothread();
         qemu_thread_join(&s->thread);
         qemu_mutex_lock_iothread();
@@ -323,7 +312,7 @@ static void migrate_fd_cleanup(void *opaque)
 
 void migrate_fd_error(MigrationState *s)
 {
-    DPRINTF("setting error state\n");
+    trace_migrate_fd_error();
     assert(s->file == NULL);
     s->state = MIG_STATE_ERROR;
     trace_migrate_set_state(MIG_STATE_ERROR);
@@ -333,7 +322,7 @@ void migrate_fd_error(MigrationState *s)
 static void migrate_fd_cancel(MigrationState *s)
 {
     int old_state ;
-    DPRINTF("cancelling migration\n");
+    trace_migrate_fd_cancel();
 
     do {
         old_state = s->state;
@@ -583,29 +572,23 @@ static void *migration_thread(void *opaque)
     int64_t start_time = initial_time;
     bool old_vm_running = false;
 
-    DPRINTF("beginning savevm\n");
     qemu_savevm_state_begin(s->file, &s->params);
 
     s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start;
     migrate_set_state(s, MIG_STATE_SETUP, MIG_STATE_ACTIVE);
 
-    DPRINTF("setup complete\n");
-
     while (s->state == MIG_STATE_ACTIVE) {
         int64_t current_time;
         uint64_t pending_size;
 
         if (!qemu_file_rate_limit(s->file)) {
-            DPRINTF("iterate\n");
             pending_size = qemu_savevm_state_pending(s->file, max_size);
-            DPRINTF("pending size %" PRIu64 " max %" PRIu64 "\n",
-                    pending_size, max_size);
+            trace_migrate_pending(pending_size, max_size);
             if (pending_size && pending_size >= max_size) {
                 qemu_savevm_state_iterate(s->file);
             } else {
                 int ret;
 
-                DPRINTF("done iterating\n");
                 qemu_mutex_lock_iothread();
                 start_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
                 qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
@@ -644,9 +627,8 @@ static void *migration_thread(void *opaque)
             s->mbps = time_spent ? (((double) transferred_bytes * 8.0) /
                     ((double) time_spent / 1000.0)) / 1000.0 / 1000.0 : -1;
 
-            DPRINTF("transferred %" PRIu64 " time_spent %" PRIu64
-                    " bandwidth %g max_size %" PRId64 "\n",
-                    transferred_bytes, time_spent, bandwidth, max_size);
+            trace_migrate_transferred(transferred_bytes, time_spent,
+                                      bandwidth, max_size);
             /* if we haven't sent anything, we don't want to recalculate
                10000 is a small enough number for our purposes */
             if (s->dirty_bytes_rate && transferred_bytes > 10000) {
diff --git a/qemu-file.c b/qemu-file.c
index f074af1..1bf4b62 100644
--- a/qemu-file.c
+++ b/qemu-file.c
@@ -4,6 +4,7 @@
 #include "block/coroutine.h"
 #include "migration/migration.h"
 #include "migration/qemu-file.h"
+#include "trace.h"
 
 #define IO_BUF_SIZE 32768
 #define MAX_IOV_SIZE MIN(IOV_MAX, 64)
@@ -595,6 +596,7 @@ int qemu_fclose(QEMUFile *f)
         ret = f->last_error;
     }
     g_free(f);
+    trace_qemu_file_fclose();
     return ret;
 }
 
diff --git a/savevm.c b/savevm.c
index d094fbb..efe604a 100644
--- a/savevm.c
+++ b/savevm.c
@@ -81,6 +81,7 @@ static void qemu_announce_self_iter(NICState *nic, void *opaque)
     uint8_t buf[60];
     int len;
 
+    trace_qemu_announce_self_iter();
     len = announce_self_create(buf, nic->conf->macaddr.a);
 
     qemu_send_packet_raw(qemu_get_queue(nic), buf, len);
@@ -429,6 +430,7 @@ void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd,
 
 static int vmstate_load(QEMUFile *f, SaveStateEntry *se, int version_id)
 {
+    trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)");
     if (!se->vmsd) {         /* Old style */
         return se->ops->load_state(f, se->opaque, version_id);
     }
@@ -437,6 +439,7 @@ static int vmstate_load(QEMUFile *f, SaveStateEntry *se, int version_id)
 
 static void vmstate_save(QEMUFile *f, SaveStateEntry *se)
 {
+    trace_vmstate_save(se->idstr, se->vmsd ? se->vmsd->name : "(old)");
     if (!se->vmsd) {         /* Old style */
         se->ops->save_state(f, se->opaque);
         return;
@@ -463,6 +466,7 @@ void qemu_savevm_state_begin(QEMUFile *f,
     SaveStateEntry *se;
     int ret;
 
+    trace_savevm_state_begin();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (!se->ops || !se->ops->set_params) {
             continue;
@@ -515,6 +519,7 @@ int qemu_savevm_state_iterate(QEMUFile *f)
     SaveStateEntry *se;
     int ret = 1;
 
+    trace_savevm_state_iterate();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (!se->ops || !se->ops->save_live_iterate) {
             continue;
@@ -554,6 +559,8 @@ void qemu_savevm_state_complete(QEMUFile *f)
     SaveStateEntry *se;
     int ret;
 
+    trace_savevm_state_complete();
+
     cpu_synchronize_all_states();
 
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
@@ -628,6 +635,7 @@ void qemu_savevm_state_cancel(void)
 {
     SaveStateEntry *se;
 
+    trace_savevm_state_cancel();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (se->ops && se->ops->cancel) {
             se->ops->cancel(se->opaque);
diff --git a/trace-events b/trace-events
index 6225235..f7c0465 100644
--- a/trace-events
+++ b/trace-events
@@ -1033,6 +1033,17 @@ vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp) "%dx%d @ %d bpp"
 # savevm.c
 savevm_section_start(const char *id, unsigned int section_id) "%s, section_id %u"
 savevm_section_end(const char *id, unsigned int section_id) "%s, section_id %u"
+savevm_state_begin(void) ""
+savevm_state_iterate(void) ""
+savevm_state_complete(void) ""
+savevm_state_cancel(void) ""
+vmstate_save(const char *idstr, const char *vmsd_name) "%s, %s"
+vmstate_load(const char *idstr, const char *vmsd_name) "%s, %s"
+vmstate_load_field_error(const char *field, int ret) "field \"%s\" load failed, ret = %d"
+qemu_announce_self_iter(void) ""
+
+# qemu-file.c
+qemu_file_fclose(void) ""
 
 # arch_init.c
 migration_bitmap_sync_start(void) ""
@@ -1165,6 +1176,11 @@ virtio_ccw_new_device(int cssid, int ssid, int schid, int devno, const char *dev
 
 # migration.c
 migrate_set_state(int new_state) "new state %d"
+migrate_fd_cleanup(void) ""
+migrate_fd_error(void) ""
+migrate_fd_cancel(void) ""
+migrate_pending(uint64_t size, uint64_t max) "pending size %" PRIu64 " max %" PRIu64
+migrate_transferred(uint64_t tranferred, uint64_t time_spent, double bandwidth, uint64_t size) "transferred %" PRIu64 " time_spent %" PRIu64 " bandwidth %g max_size %" PRId64
 
 # kvm-all.c
 kvm_ioctl(int type, void *arg) "type 0x%x, arg %p"
diff --git a/vmstate.c b/vmstate.c
index d1f5eb0..b689f2f 100644
--- a/vmstate.c
+++ b/vmstate.c
@@ -3,6 +3,7 @@
 #include "migration/qemu-file.h"
 #include "migration/vmstate.h"
 #include "qemu/bitops.h"
+#include "trace.h"
 
 static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
                                     void *opaque);
@@ -73,6 +74,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
 
                 }
                 if (ret < 0) {
+                    trace_vmstate_load_field_error(field->name, ret);
                     return ret;
                 }
             }
-- 
1.8.4.rc4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 3/3] migration: add more traces
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 3/3] migration: add more traces Alexey Kardashevskiy
@ 2014-03-04 12:26   ` Paolo Bonzini
  2014-03-04 15:14     ` [Qemu-devel] [PATCH v3] " Alexey Kardashevskiy
  0 siblings, 1 reply; 12+ messages in thread
From: Paolo Bonzini @ 2014-03-04 12:26 UTC (permalink / raw)
  To: Alexey Kardashevskiy, qemu-devel

Il 04/03/2014 05:10, Alexey Kardashevskiy ha scritto:
> @@ -81,6 +81,7 @@ static void qemu_announce_self_iter(NICState *nic, void *opaque)
>      uint8_t buf[60];
>      int len;
>
> +    trace_qemu_announce_self_iter();

Should include the nic or, even better, the six bytes of the MAC address.

Otherwise fine.

Paolo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0/3] migration: add more traces
  2014-03-04  4:10 [Qemu-devel] [PATCH v2 0/3] migration: add more traces Alexey Kardashevskiy
                   ` (2 preceding siblings ...)
  2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 3/3] migration: add more traces Alexey Kardashevskiy
@ 2014-03-04 12:32 ` Paolo Bonzini
  2014-03-05  9:10   ` Stefan Hajnoczi
  3 siblings, 1 reply; 12+ messages in thread
From: Paolo Bonzini @ 2014-03-04 12:32 UTC (permalink / raw)
  To: Alexey Kardashevskiy, qemu-devel, Juan Quintela, Stefan Hajnoczi

Il 04/03/2014 05:10, Alexey Kardashevskiy ha scritto:
> This reworks/adds traces for migration.
> v2 is rework of an original single patch with the same subject.
>
> Alexey Kardashevskiy (3):
>   vl: add system_wakeup_request tracepoint
>   migration: extend section_start/end traces
>   migration: add more traces
>
>  migration.c  | 30 ++++++------------------------
>  qemu-file.c  |  2 ++
>  savevm.c     | 20 ++++++++++++++------
>  trace-events | 21 +++++++++++++++++++--
>  vl.c         |  2 ++
>  vmstate.c    |  2 ++
>  6 files changed, 45 insertions(+), 32 deletions(-)
>

Looks good, CCing Juan and Stefan.  It would be nice to have this in 
2.0.  I had a remark on patch 3.

Paolo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v3] migration: add more traces
  2014-03-04 12:26   ` Paolo Bonzini
@ 2014-03-04 15:14     ` Alexey Kardashevskiy
  2014-03-06 20:04       ` Amit Shah
  2014-03-10 17:17       ` Amit Shah
  0 siblings, 2 replies; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-04 15:14 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, Paolo Bonzini, Juan Quintela

This replaces DPRINTF macro with tracepoints.

This moves some messages from migration.c to savevm.c.

This adds tracepoint to signal about fileds failed to migrate.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---

This is v3. Should I repost the whole thing or just "3/3 v3" is ok? Thanks!


---
Changes:
v3:
* added MAC address to trace_qemu_announce_self_iter


---
 migration.c  | 30 ++++++------------------------
 qemu-file.c  |  2 ++
 savevm.c     | 10 ++++++++++
 trace-events | 16 ++++++++++++++++
 vmstate.c    |  2 ++
 5 files changed, 36 insertions(+), 24 deletions(-)

diff --git a/migration.c b/migration.c
index 14235b2..2497c5d 100644
--- a/migration.c
+++ b/migration.c
@@ -26,16 +26,6 @@
 #include "qmp-commands.h"
 #include "trace.h"
 
-//#define DEBUG_MIGRATION
-
-#ifdef DEBUG_MIGRATION
-#define DPRINTF(fmt, ...) \
-    do { printf("migration: " fmt, ## __VA_ARGS__); } while (0)
-#else
-#define DPRINTF(fmt, ...) \
-    do { } while (0)
-#endif
-
 enum {
     MIG_STATE_ERROR = -1,
     MIG_STATE_NONE,
@@ -111,7 +101,6 @@ static void process_incoming_migration_co(void *opaque)
         exit(EXIT_FAILURE);
     }
     qemu_announce_self();
-    DPRINTF("successfully loaded vm state\n");
 
     bdrv_clear_incoming_migration_all();
     /* Make sure all file formats flush their mutable metadata */
@@ -300,7 +289,7 @@ static void migrate_fd_cleanup(void *opaque)
     s->cleanup_bh = NULL;
 
     if (s->file) {
-        DPRINTF("closing file\n");
+        trace_migrate_fd_cleanup();
         qemu_mutex_unlock_iothread();
         qemu_thread_join(&s->thread);
         qemu_mutex_lock_iothread();
@@ -323,7 +312,7 @@ static void migrate_fd_cleanup(void *opaque)
 
 void migrate_fd_error(MigrationState *s)
 {
-    DPRINTF("setting error state\n");
+    trace_migrate_fd_error();
     assert(s->file == NULL);
     s->state = MIG_STATE_ERROR;
     trace_migrate_set_state(MIG_STATE_ERROR);
@@ -333,7 +322,7 @@ void migrate_fd_error(MigrationState *s)
 static void migrate_fd_cancel(MigrationState *s)
 {
     int old_state ;
-    DPRINTF("cancelling migration\n");
+    trace_migrate_fd_cancel();
 
     do {
         old_state = s->state;
@@ -583,29 +572,23 @@ static void *migration_thread(void *opaque)
     int64_t start_time = initial_time;
     bool old_vm_running = false;
 
-    DPRINTF("beginning savevm\n");
     qemu_savevm_state_begin(s->file, &s->params);
 
     s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start;
     migrate_set_state(s, MIG_STATE_SETUP, MIG_STATE_ACTIVE);
 
-    DPRINTF("setup complete\n");
-
     while (s->state == MIG_STATE_ACTIVE) {
         int64_t current_time;
         uint64_t pending_size;
 
         if (!qemu_file_rate_limit(s->file)) {
-            DPRINTF("iterate\n");
             pending_size = qemu_savevm_state_pending(s->file, max_size);
-            DPRINTF("pending size %" PRIu64 " max %" PRIu64 "\n",
-                    pending_size, max_size);
+            trace_migrate_pending(pending_size, max_size);
             if (pending_size && pending_size >= max_size) {
                 qemu_savevm_state_iterate(s->file);
             } else {
                 int ret;
 
-                DPRINTF("done iterating\n");
                 qemu_mutex_lock_iothread();
                 start_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
                 qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
@@ -644,9 +627,8 @@ static void *migration_thread(void *opaque)
             s->mbps = time_spent ? (((double) transferred_bytes * 8.0) /
                     ((double) time_spent / 1000.0)) / 1000.0 / 1000.0 : -1;
 
-            DPRINTF("transferred %" PRIu64 " time_spent %" PRIu64
-                    " bandwidth %g max_size %" PRId64 "\n",
-                    transferred_bytes, time_spent, bandwidth, max_size);
+            trace_migrate_transferred(transferred_bytes, time_spent,
+                                      bandwidth, max_size);
             /* if we haven't sent anything, we don't want to recalculate
                10000 is a small enough number for our purposes */
             if (s->dirty_bytes_rate && transferred_bytes > 10000) {
diff --git a/qemu-file.c b/qemu-file.c
index f074af1..1bf4b62 100644
--- a/qemu-file.c
+++ b/qemu-file.c
@@ -4,6 +4,7 @@
 #include "block/coroutine.h"
 #include "migration/migration.h"
 #include "migration/qemu-file.h"
+#include "trace.h"
 
 #define IO_BUF_SIZE 32768
 #define MAX_IOV_SIZE MIN(IOV_MAX, 64)
@@ -595,6 +596,7 @@ int qemu_fclose(QEMUFile *f)
         ret = f->last_error;
     }
     g_free(f);
+    trace_qemu_file_fclose();
     return ret;
 }
 
diff --git a/savevm.c b/savevm.c
index d094fbb..ef7d9ce 100644
--- a/savevm.c
+++ b/savevm.c
@@ -41,6 +41,7 @@
 #include "qemu/iov.h"
 #include "block/snapshot.h"
 #include "block/qapi.h"
+#include <netinet/ether.h>
 
 #define SELF_ANNOUNCE_ROUNDS 5
 
@@ -81,6 +82,8 @@ static void qemu_announce_self_iter(NICState *nic, void *opaque)
     uint8_t buf[60];
     int len;
 
+    trace_qemu_announce_self_iter(ether_ntoa((struct ether_addr *)
+                                             &nic->conf->macaddr));
     len = announce_self_create(buf, nic->conf->macaddr.a);
 
     qemu_send_packet_raw(qemu_get_queue(nic), buf, len);
@@ -429,6 +432,7 @@ void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd,
 
 static int vmstate_load(QEMUFile *f, SaveStateEntry *se, int version_id)
 {
+    trace_vmstate_load(se->idstr, se->vmsd ? se->vmsd->name : "(old)");
     if (!se->vmsd) {         /* Old style */
         return se->ops->load_state(f, se->opaque, version_id);
     }
@@ -437,6 +441,7 @@ static int vmstate_load(QEMUFile *f, SaveStateEntry *se, int version_id)
 
 static void vmstate_save(QEMUFile *f, SaveStateEntry *se)
 {
+    trace_vmstate_save(se->idstr, se->vmsd ? se->vmsd->name : "(old)");
     if (!se->vmsd) {         /* Old style */
         se->ops->save_state(f, se->opaque);
         return;
@@ -463,6 +468,7 @@ void qemu_savevm_state_begin(QEMUFile *f,
     SaveStateEntry *se;
     int ret;
 
+    trace_savevm_state_begin();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (!se->ops || !se->ops->set_params) {
             continue;
@@ -515,6 +521,7 @@ int qemu_savevm_state_iterate(QEMUFile *f)
     SaveStateEntry *se;
     int ret = 1;
 
+    trace_savevm_state_iterate();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (!se->ops || !se->ops->save_live_iterate) {
             continue;
@@ -554,6 +561,8 @@ void qemu_savevm_state_complete(QEMUFile *f)
     SaveStateEntry *se;
     int ret;
 
+    trace_savevm_state_complete();
+
     cpu_synchronize_all_states();
 
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
@@ -628,6 +637,7 @@ void qemu_savevm_state_cancel(void)
 {
     SaveStateEntry *se;
 
+    trace_savevm_state_cancel();
     QTAILQ_FOREACH(se, &savevm_handlers, entry) {
         if (se->ops && se->ops->cancel) {
             se->ops->cancel(se->opaque);
diff --git a/trace-events b/trace-events
index 828a3e9..395da76 100644
--- a/trace-events
+++ b/trace-events
@@ -1033,6 +1033,17 @@ vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp) "%dx%d @ %d bpp"
 # savevm.c
 savevm_section_start(const char *id, unsigned int section_id) "%s, section_id %u"
 savevm_section_end(const char *id, unsigned int section_id) "%s, section_id %u"
+savevm_state_begin(void) ""
+savevm_state_iterate(void) ""
+savevm_state_complete(void) ""
+savevm_state_cancel(void) ""
+vmstate_save(const char *idstr, const char *vmsd_name) "%s, %s"
+vmstate_load(const char *idstr, const char *vmsd_name) "%s, %s"
+vmstate_load_field_error(const char *field, int ret) "field \"%s\" load failed, ret = %d"
+qemu_announce_self_iter(const char *mac) "%s"
+
+# qemu-file.c
+qemu_file_fclose(void) ""
 
 # arch_init.c
 migration_bitmap_sync_start(void) ""
@@ -1165,6 +1176,11 @@ virtio_ccw_new_device(int cssid, int ssid, int schid, int devno, const char *dev
 
 # migration.c
 migrate_set_state(int new_state) "new state %d"
+migrate_fd_cleanup(void) ""
+migrate_fd_error(void) ""
+migrate_fd_cancel(void) ""
+migrate_pending(uint64_t size, uint64_t max) "pending size %" PRIu64 " max %" PRIu64
+migrate_transferred(uint64_t tranferred, uint64_t time_spent, double bandwidth, uint64_t size) "transferred %" PRIu64 " time_spent %" PRIu64 " bandwidth %g max_size %" PRId64
 
 # kvm-all.c
 kvm_ioctl(int type, void *arg) "type 0x%x, arg %p"
diff --git a/vmstate.c b/vmstate.c
index d1f5eb0..b689f2f 100644
--- a/vmstate.c
+++ b/vmstate.c
@@ -3,6 +3,7 @@
 #include "migration/qemu-file.h"
 #include "migration/vmstate.h"
 #include "qemu/bitops.h"
+#include "trace.h"
 
 static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
                                     void *opaque);
@@ -73,6 +74,7 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
 
                 }
                 if (ret < 0) {
+                    trace_vmstate_load_field_error(field->name, ret);
                     return ret;
                 }
             }
-- 
1.8.4.rc4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 0/3] migration: add more traces
  2014-03-04 12:32 ` [Qemu-devel] [PATCH v2 0/3] " Paolo Bonzini
@ 2014-03-05  9:10   ` Stefan Hajnoczi
  0 siblings, 0 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2014-03-05  9:10 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Alexey Kardashevskiy, qemu-devel, Stefan Hajnoczi, Juan Quintela

On Tue, Mar 04, 2014 at 01:32:54PM +0100, Paolo Bonzini wrote:
> Il 04/03/2014 05:10, Alexey Kardashevskiy ha scritto:
> >This reworks/adds traces for migration.
> >v2 is rework of an original single patch with the same subject.
> >
> >Alexey Kardashevskiy (3):
> >  vl: add system_wakeup_request tracepoint
> >  migration: extend section_start/end traces
> >  migration: add more traces
> >
> > migration.c  | 30 ++++++------------------------
> > qemu-file.c  |  2 ++
> > savevm.c     | 20 ++++++++++++++------
> > trace-events | 21 +++++++++++++++++++--
> > vl.c         |  2 ++
> > vmstate.c    |  2 ++
> > 6 files changed, 45 insertions(+), 32 deletions(-)
> >
> 
> Looks good, CCing Juan and Stefan.  It would be nice to have this in
> 2.0.  I had a remark on patch 3.

Juan: please take this series through the migration tree

Stefan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] migration: add more traces
  2014-03-04 15:14     ` [Qemu-devel] [PATCH v3] " Alexey Kardashevskiy
@ 2014-03-06 20:04       ` Amit Shah
  2014-03-10 17:17       ` Amit Shah
  1 sibling, 0 replies; 12+ messages in thread
From: Amit Shah @ 2014-03-06 20:04 UTC (permalink / raw)
  To: Alexey Kardashevskiy; +Cc: Paolo Bonzini, qemu-devel, Juan Quintela

On (Wed) 05 Mar 2014 [02:14:56], Alexey Kardashevskiy wrote:
> This replaces DPRINTF macro with tracepoints.
> 
> This moves some messages from migration.c to savevm.c.
> 
> This adds tracepoint to signal about fileds failed to migrate.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> 
> This is v3. Should I repost the whole thing or just "3/3 v3" is ok? Thanks!

Sending the series again is preferred.  (You can see 3/3 was missed in
the subject line.  There are other small quirks that can happen and
cause more pain for maintainers.)

I've corrected the 's/fileds/fields' typo in the commit msg and picked
up this series and applied to my migration branch, which I'll send to
Juan.


		Amit

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] migration: add more traces
  2014-03-04 15:14     ` [Qemu-devel] [PATCH v3] " Alexey Kardashevskiy
  2014-03-06 20:04       ` Amit Shah
@ 2014-03-10 17:17       ` Amit Shah
  2014-03-10 22:35         ` Alexey Kardashevskiy
  1 sibling, 1 reply; 12+ messages in thread
From: Amit Shah @ 2014-03-10 17:17 UTC (permalink / raw)
  To: Alexey Kardashevskiy; +Cc: Paolo Bonzini, qemu-devel, Juan Quintela

On (Wed) 05 Mar 2014 [02:14:56], Alexey Kardashevskiy wrote:
> This replaces DPRINTF macro with tracepoints.
> 
> This moves some messages from migration.c to savevm.c.
> 
> This adds tracepoint to signal about fileds failed to migrate.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> 
> This is v3. Should I repost the whole thing or just "3/3 v3" is ok? Thanks!

This broke the build on windows:

http://news.gmane.org/find-root.php?message_id=CAFEAcA%5fEa72JTVLJ3Z%2dzUtoe8vg%2bjh8R96mNW2c2x2Mx%5fj%2bFwg%40mail.gmail.com

Please fix.

		Amit

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] migration: add more traces
  2014-03-10 17:17       ` Amit Shah
@ 2014-03-10 22:35         ` Alexey Kardashevskiy
  2014-03-10 22:42           ` Juan Quintela
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Kardashevskiy @ 2014-03-10 22:35 UTC (permalink / raw)
  To: Amit Shah; +Cc: Paolo Bonzini, qemu-devel, Juan Quintela

On 03/11/2014 04:17 AM, Amit Shah wrote:
> On (Wed) 05 Mar 2014 [02:14:56], Alexey Kardashevskiy wrote:
>> This replaces DPRINTF macro with tracepoints.
>>
>> This moves some messages from migration.c to savevm.c.
>>
>> This adds tracepoint to signal about fileds failed to migrate.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> ---
>>
>> This is v3. Should I repost the whole thing or just "3/3 v3" is ok? Thanks!
> 
> This broke the build on windows:
> 
> http://news.gmane.org/find-root.php?message_id=CAFEAcA%5fEa72JTVLJ3Z%2dzUtoe8vg%2bjh8R96mNW2c2x2Mx%5fj%2bFwg%40mail.gmail.com
> 
> Please fix.

I am sorry but how? Is it msvc? Is it mingw? Or replace with
%02x:%02x:%02x:%02x:%02x:%02x?


-- 
Alexey

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] migration: add more traces
  2014-03-10 22:35         ` Alexey Kardashevskiy
@ 2014-03-10 22:42           ` Juan Quintela
  0 siblings, 0 replies; 12+ messages in thread
From: Juan Quintela @ 2014-03-10 22:42 UTC (permalink / raw)
  To: Alexey Kardashevskiy; +Cc: Amit Shah, Paolo Bonzini, qemu-devel

Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
> On 03/11/2014 04:17 AM, Amit Shah wrote:
>> On (Wed) 05 Mar 2014 [02:14:56], Alexey Kardashevskiy wrote:
>>> This replaces DPRINTF macro with tracepoints.
>>>
>>> This moves some messages from migration.c to savevm.c.
>>>
>>> This adds tracepoint to signal about fileds failed to migrate.
>>>
>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>>> ---
>>>
>>> This is v3. Should I repost the whole thing or just "3/3 v3" is ok? Thanks!
>> 
>> This broke the build on windows:
>> 
>> http://news.gmane.org/find-root.php?message_id=CAFEAcA%5fEa72JTVLJ3Z%2dzUtoe8vg%2bjh8R96mNW2c2x2Mx%5fj%2bFwg%40mail.gmail.com
>> 
>> Please fix.
>
> I am sorry but how? Is it msvc? Is it mingw? Or replace with
> %02x:%02x:%02x:%02x:%02x:%02x?

mingw32.

Replace with %02x:02x or create a

qmeu_ether_ntoa()  function with exactly that code in

utils/cutils.c


Later, Juan.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-03-10 22:42 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-04  4:10 [Qemu-devel] [PATCH v2 0/3] migration: add more traces Alexey Kardashevskiy
2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 1/3] vl: add system_wakeup_request tracepoint Alexey Kardashevskiy
2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 2/3] migration: extend section_start/end traces Alexey Kardashevskiy
2014-03-04  4:10 ` [Qemu-devel] [PATCH v2 3/3] migration: add more traces Alexey Kardashevskiy
2014-03-04 12:26   ` Paolo Bonzini
2014-03-04 15:14     ` [Qemu-devel] [PATCH v3] " Alexey Kardashevskiy
2014-03-06 20:04       ` Amit Shah
2014-03-10 17:17       ` Amit Shah
2014-03-10 22:35         ` Alexey Kardashevskiy
2014-03-10 22:42           ` Juan Quintela
2014-03-04 12:32 ` [Qemu-devel] [PATCH v2 0/3] " Paolo Bonzini
2014-03-05  9:10   ` Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).