Re: [Qemu-devel] [PATCH 2/8] Add tracepoints for savevm section start/end

2012-06-25 Thread Orit Wasserman
On 06/22/2012 04:46 PM, Juan Quintela wrote:
 This allows to know how long each section takes to save.
 
 An awk script like this tells us sections that takes more that 10ms
 
 $1 ~ /savevm_state_iterate_end/ {
   /* Print savevm_section_end line when  10ms duration */
   if ($2  1) {
   printf(%s times_missing=%u\n, $0, times_missing++);
   }
 }
 
 Signed-off-by: Juan Quintela quint...@redhat.com
 
 fix ws tracepoints
 
 Signed-off-by: Juan Quintela quint...@redhat.com
 ---
  savevm.c |8 
  trace-events |5 +
  2 files changed, 13 insertions(+)
 
 diff --git a/savevm.c b/savevm.c
 index faa8145..40320be 100644
 --- a/savevm.c
 +++ b/savevm.c
 @@ -85,6 +85,7 @@
  #include cpus.h
  #include memory.h
  #include qmp-commands.h
 +#include trace.h
 
  #define SELF_ANNOUNCE_ROUNDS 5
 
 @@ -1624,11 +1625,14 @@ int qemu_savevm_state_iterate(QEMUFile *f)
  if (se-save_live_state == NULL)
  continue;
 
 +trace_savevm_section_start();
  /* Section type */
  qemu_put_byte(f, QEMU_VM_SECTION_PART);
  qemu_put_be32(f, se-section_id);
 
  ret = se-save_live_state(f, QEMU_VM_SECTION_PART, se-opaque);
 +trace_savevm_section_end(se-section_id);
 +
  if (ret = 0) {
  /* Do not proceed to the next vmstate before this one reported
 completion of the current stage. This serializes the migration
 @@ -1658,11 +1662,13 @@ int qemu_savevm_state_complete(QEMUFile *f)
  if (se-save_live_state == NULL)
  continue;
 
 +trace_savevm_section_start();
  /* Section type */
  qemu_put_byte(f, QEMU_VM_SECTION_END);
  qemu_put_be32(f, se-section_id);
 
  ret = se-save_live_state(f, QEMU_VM_SECTION_END, se-opaque);
 +trace_savevm_section_end(se-section_id);
  if (ret  0) {
  return ret;
  }
 @@ -1674,6 +1680,7 @@ int qemu_savevm_state_complete(QEMUFile *f)
   if (se-save_state == NULL  se-vmsd == NULL)
   continue;
 
 +trace_savevm_section_start();
  /* Section type */
  qemu_put_byte(f, QEMU_VM_SECTION_FULL);
  qemu_put_be32(f, se-section_id);
 @@ -1687,6 +1694,7 @@ int qemu_savevm_state_complete(QEMUFile *f)
  qemu_put_be32(f, se-version_id);
 
  vmstate_save(f, se);
 +trace_savevm_section_end(se-section_id);
  }
 
  qemu_put_byte(f, QEMU_VM_EOF);
 diff --git a/trace-events b/trace-events
 index 5c82b3a..82c7619 100644
 --- a/trace-events
 +++ b/trace-events
 @@ -782,6 +782,11 @@ displaysurface_resize(void *display_state, void 
 *display_surface, int width, int
  # vga.c
  ppm_save(const char *filename, void *display_surface) %s surface=%p
 
 +# savevm.c
 +
 +savevm_section_start(void) 
 +savevm_section_end(unsigned int section_id) section_id %u
 +
  # hw/qxl.c
  disable qxl_interface_set_mm_time(int qid, uint32_t mm_time) %d %d
  disable qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t 
 val) %d %s addr=%u val=%u

Reviewed-by: Orit Wasserman owass...@redhat.com



[Qemu-devel] [PATCH 2/8] Add tracepoints for savevm section start/end

2012-06-22 Thread Juan Quintela
This allows to know how long each section takes to save.

An awk script like this tells us sections that takes more that 10ms

$1 ~ /savevm_state_iterate_end/ {
/* Print savevm_section_end line when  10ms duration */
if ($2  1) {
printf(%s times_missing=%u\n, $0, times_missing++);
}
}

Signed-off-by: Juan Quintela quint...@redhat.com

fix ws tracepoints

Signed-off-by: Juan Quintela quint...@redhat.com
---
 savevm.c |8 
 trace-events |5 +
 2 files changed, 13 insertions(+)

diff --git a/savevm.c b/savevm.c
index faa8145..40320be 100644
--- a/savevm.c
+++ b/savevm.c
@@ -85,6 +85,7 @@
 #include cpus.h
 #include memory.h
 #include qmp-commands.h
+#include trace.h

 #define SELF_ANNOUNCE_ROUNDS 5

@@ -1624,11 +1625,14 @@ int qemu_savevm_state_iterate(QEMUFile *f)
 if (se-save_live_state == NULL)
 continue;

+trace_savevm_section_start();
 /* Section type */
 qemu_put_byte(f, QEMU_VM_SECTION_PART);
 qemu_put_be32(f, se-section_id);

 ret = se-save_live_state(f, QEMU_VM_SECTION_PART, se-opaque);
+trace_savevm_section_end(se-section_id);
+
 if (ret = 0) {
 /* Do not proceed to the next vmstate before this one reported
completion of the current stage. This serializes the migration
@@ -1658,11 +1662,13 @@ int qemu_savevm_state_complete(QEMUFile *f)
 if (se-save_live_state == NULL)
 continue;

+trace_savevm_section_start();
 /* Section type */
 qemu_put_byte(f, QEMU_VM_SECTION_END);
 qemu_put_be32(f, se-section_id);

 ret = se-save_live_state(f, QEMU_VM_SECTION_END, se-opaque);
+trace_savevm_section_end(se-section_id);
 if (ret  0) {
 return ret;
 }
@@ -1674,6 +1680,7 @@ int qemu_savevm_state_complete(QEMUFile *f)
if (se-save_state == NULL  se-vmsd == NULL)
continue;

+trace_savevm_section_start();
 /* Section type */
 qemu_put_byte(f, QEMU_VM_SECTION_FULL);
 qemu_put_be32(f, se-section_id);
@@ -1687,6 +1694,7 @@ int qemu_savevm_state_complete(QEMUFile *f)
 qemu_put_be32(f, se-version_id);

 vmstate_save(f, se);
+trace_savevm_section_end(se-section_id);
 }

 qemu_put_byte(f, QEMU_VM_EOF);
diff --git a/trace-events b/trace-events
index 5c82b3a..82c7619 100644
--- a/trace-events
+++ b/trace-events
@@ -782,6 +782,11 @@ displaysurface_resize(void *display_state, void 
*display_surface, int width, int
 # vga.c
 ppm_save(const char *filename, void *display_surface) %s surface=%p

+# savevm.c
+
+savevm_section_start(void) 
+savevm_section_end(unsigned int section_id) section_id %u
+
 # hw/qxl.c
 disable qxl_interface_set_mm_time(int qid, uint32_t mm_time) %d %d
 disable qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t 
val) %d %s addr=%u val=%u
-- 
1.7.10.2