xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* Announcement: xenalyze trace analysis tool released
@ 2009-08-13 15:51 George Dunlap
  2009-08-14  1:26 ` Akio Takebe
  0 siblings, 1 reply; 4+ messages in thread
From: George Dunlap @ 2009-08-13 15:51 UTC (permalink / raw)
  To: xen-devel

I am pleased to announce the public availability of xenalyze, a tool
I've developed over the last 2+ years to analyze the output of
xentrace.

Mercurial repository is available at
http://xenbits.xensource.com/ext/xenalyze.hg

Xenalyze is a tool I've developed while doing performance analysis for
XenSource and Citrix.  Features include:
* Orders trace records across physical cpus by tsc.  Attempts to
automatically detect and adjust for tsc skew.
* Tracks domains and vcpus across pcpus, to collect information about
VMs, not processors
* Statistical information about particular events or states generally includes:
 + Total time across the run
 + Percentage of time spent
 + Average number of cycles for an event
 + 5th, 50th, and 95th percentiles of a sample of events
* Statistical data collection includes:
 + Scheduler runstates: running, runnable, blocked, offline
 + Time spent in VMEXITs (i.e., from VMEXIT to VMENTER)
  - Includes time spent doing emulation for specific
  - Optionally includes time spent for particular MMIO / IO addresses
 + Time spent running on physical processors before being migrated
 + Optional tracking of guest cr3 values (generally corresponding to
guest processes)
* "Dump" mode, which will dump a human-readable format of the trace in
the order the events were generated
* Optional "symbol file" which will symbolically interpret guest EIPs
* "Interval" mode, which allows you to graph data over time
" Varous "scatterplot" modes, which allow you to visualize data such
as guest EIP values
* Deals gracefully with lost records.
* Graphical progress bar and completion pop-up for long traces

There is some minimal documentation in a file called xenalyze.html,
and back-patches to work with earlier versions of Xen in the directory
called back-patches/.

Questions, comments and patches welcome.  The tool is doubtless rather
quirky, as I'm both the main developer and user.

Enjoy,
 -George Dunlap

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

* Re: Announcement: xenalyze trace analysis tool released
  2009-08-13 15:51 Announcement: xenalyze trace analysis tool released George Dunlap
@ 2009-08-14  1:26 ` Akio Takebe
  2009-08-14 10:19   ` George Dunlap
  0 siblings, 1 reply; 4+ messages in thread
From: Akio Takebe @ 2009-08-14  1:26 UTC (permalink / raw)
  To: George Dunlap; +Cc: xen-devel

[-- Attachment #1: Type: text/plain, Size: 3615 bytes --]

Hi, George

It's interesting tool.
I got many error on x86_64 dom0 while compiling. The patch fixes these.

gcc -g -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-value -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -mno-tls-direct-seg-refs -Werror -o xenalyze xenalyze.c
cc1: warnings being treated as errors
xenalyze.c: In function 'init_hvm_data':
xenalyze.c:1321: warning: format '%d' expects type 'int', but argument 3 has type 'size_t'
xenalyze.c: In function 'hvm_msr_write_process':
xenalyze.c:4055: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'hvm_msr_read_process':
xenalyze.c:4104: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'shadow_emulate_process':
xenalyze.c:5128: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5142: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5156: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'shadow_parse_other':
xenalyze.c:5228: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5244: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5256: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'shadow_fixup_process':
xenalyze.c:5445: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5458: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5471: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'shadow_mmio_process':
xenalyze.c:5559: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c:5570: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'vcpu_create':
xenalyze.c:6080: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'domain_create':
xenalyze.c:6122: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
xenalyze.c: In function 'scan_for_new_pcpu':
xenalyze.c:7119: warning: format '%lld' expects type 'long long int', but argument 5 has type 'loff_t'
xenalyze.c: In function 'process_cpu_change':
xenalyze.c:7194: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'loff_t'
xenalyze.c:7194: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'loff_t'
xenalyze.c:7220: warning: format '%lld' expects type 'long long int', but argument 5 has type 'loff_t'
xenalyze.c:7245: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'loff_t'
xenalyze.c: In function '__read_record':
xenalyze.c:7538: warning: format '%d' expects type 'int', but argument 4 has type 'ssize_t'
xenalyze.c:7547: warning: format '%d' expects type 'int', but argument 4 has type 'ssize_t'
xenalyze.c:7547: warning: format '%d' expects type 'int', but argument 5 has type 'ssize_t'
xenalyze.c: In function '__fill_in_record_info':
xenalyze.c:7594: warning: format '%016llx' expects type 'long long unsigned int', but argument 3 has type 'loff_t'
make: *** [xenalyze] Error 1

Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com>

Best Regards,

Akio Takebe

[-- Attachment #2: fix_printf_format.patch --]
[-- Type: text/x-diff, Size: 9948 bytes --]

diff -r 46d869f585a1 dump-raw.c
--- a/dump-raw.c	Thu Aug 13 16:07:06 2009 +0100
+++ b/dump-raw.c	Fri Aug 14 09:21:51 2009 +0900
@@ -94,7 +94,7 @@
         return 0;
     } else if(r < sizeof(uint32_t)) {
         /* Full header not read */
-        fprintf(stderr, "%s: short read (%d bytes)\n",
+        fprintf(stderr, "%s: short read (%ld bytes)\n",
                 __func__, r);
         exit(1);
     }
@@ -103,7 +103,7 @@
 
     if(r < rsize) {
         /* Full record not read */
-        fprintf(stderr, "%s: short read (%d, expected %d)\n",
+        fprintf(stderr, "%s: short read (%ld, expected %ld)\n",
                 __func__, r, rsize);
         return 0;
     }
@@ -145,7 +145,7 @@
 
     /* File sanity check */
     if(p->file_offset != p->next_cpu_change_offset) {
-        printf("Strange, pcpu %d expected offet %llx, actual %llx!\n",
+        printf("Strange, pcpu %d expected offet %lx, actual %lx!\n",
                 p->pid, p->next_cpu_change_offset, p->file_offset);
     }
 
@@ -158,7 +158,7 @@
     struct record_info *ri = &p->ri;
     int i;
     
-    printf("R p%2d o%016llx %8lx %d ",
+    printf("R p%2d o%016lx %8lx %d ",
            p->pid, p->file_offset,
            (unsigned long)ri->rec.event, ri->rec.extra_words);
 
diff -r 46d869f585a1 xenalyze.c
--- a/xenalyze.c	Thu Aug 13 16:07:06 2009 +0100
+++ b/xenalyze.c	Fri Aug 14 09:21:51 2009 +0900
@@ -1317,7 +1317,7 @@
         if(h->summary.extint_histogram)
             bzero(h->summary.extint_histogram, size);
         else {
-            fprintf(stderr, "FATAL: Could not allocate %d bytes for interrupt histogram!\n",
+            fprintf(stderr, "FATAL: Could not allocate %ld bytes for interrupt histogram!\n",
                     size);
             exit(1);
         }
@@ -4051,7 +4051,7 @@
 
     if(ri->extra_words != (sizeof(*r)/sizeof(unsigned long) + 1))
     {
-        fprintf(warn, "FATAL: msr_write extra_words %d, expected %d!\n",
+        fprintf(warn, "FATAL: msr_write extra_words %d, expected %ld!\n",
                 ri->extra_words, sizeof(*r)/sizeof(unsigned long));
         dump_unexpected_and_exit(ri);
     } 
@@ -4100,7 +4100,7 @@
 
     if(ri->extra_words != (sizeof(*r)/sizeof(unsigned long) + 1))
     {
-        fprintf(warn, "FATAL: msr_read extra_words %d, expected %d!\n",
+        fprintf(warn, "FATAL: msr_read extra_words %d, expected %ld!\n",
                 ri->extra_words, sizeof(*r)/sizeof(unsigned long));
         dump_unexpected_and_exit(ri);
     } 
@@ -5123,7 +5123,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5137,7 +5137,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5151,7 +5151,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5223,7 +5223,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5239,7 +5239,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5251,7 +5251,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5440,7 +5440,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5453,7 +5453,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5466,7 +5466,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5554,7 +5554,7 @@
     case 3:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5565,7 +5565,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %ld bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -6077,7 +6077,7 @@
 
     if((v=malloc(sizeof(*v)))==NULL)
     {
-        fprintf(stderr, "%s: malloc %d failed!\n", __func__, sizeof(*d));
+        fprintf(stderr, "%s: malloc %ld failed!\n", __func__, sizeof(*d));
         exit(1);
     }
 
@@ -6119,7 +6119,7 @@
 
     if((d=malloc(sizeof(*d)))==NULL)
     {
-        fprintf(stderr, "%s: malloc %d failed!\n", __func__, sizeof(*d));
+        fprintf(stderr, "%s: malloc %ld failed!\n", __func__, sizeof(*d));
         exit(1);
     }
 
@@ -7115,7 +7115,7 @@
     if(cd->cpu > P.max_active_pcpu || !P.pcpu[cd->cpu].active) {
         struct pcpu_info *p = P.pcpu + cd->cpu;
 
-        fprintf(warn, "%s: Activating pcpu %d at offset %lld\n",
+        fprintf(warn, "%s: Activating pcpu %d at offset %ld\n",
                 __func__, cd->cpu, offset);
 
         p->active = 1;
@@ -7190,7 +7190,7 @@
 
     /* File sanity check */
     if(p->file_offset != p->next_cpu_change_offset) {
-        fprintf(warn, "Strange, pcpu %d expected offet %llx, actual %llx!\n",
+        fprintf(warn, "Strange, pcpu %d expected offet %lx, actual %lx!\n",
                 p->pid, p->next_cpu_change_offset, p->file_offset);
     }
 
@@ -7216,7 +7216,7 @@
         if(r->cpu > P.max_active_pcpu)
             P.max_active_pcpu = r->cpu;
 
-        fprintf(warn, "%s: Activating pcpu %d at offset %lld\n",
+        fprintf(warn, "%s: Activating pcpu %d at offset %ld\n",
                __func__, r->cpu, p->file_offset);
         
         sched_default_vcpu_activate(p2);
@@ -7241,7 +7241,7 @@
         if(p->file_offset > G.file_size) {
             activate_early_eof();
         } else if(P.early_eof && p->file_offset > P.last_epoch_offset) {
-            fprintf(warn, "%s: early_eof activated, pcpu %d past last_epoch_offset %llx, deactivating.\n",
+            fprintf(warn, "%s: early_eof activated, pcpu %d past last_epoch_offset %lx, deactivating.\n",
                     __func__, p->pid, P.last_epoch_offset);
             deactivate_pcpu(p);
         }
@@ -7534,7 +7534,7 @@
         return 0;
     } else if(r < sizeof(uint32_t)) {
         /* Full header not read */
-        fprintf(stderr, "%s: short read (%d bytes)\n",
+        fprintf(stderr, "%s: short read (%ld bytes)\n",
                 __func__, r);
         exit(1);
     }
@@ -7543,7 +7543,7 @@
 
     if(r < rsize) {
         /* Full record not read */
-        fprintf(stderr, "%s: short read (%d, expected %d)\n",
+        fprintf(stderr, "%s: short read (%ld, expected %ld)\n",
                 __func__, r, rsize);
         return 0;
     }
@@ -7589,7 +7589,7 @@
 
     if ( opt.dump_raw_reads ) {
         int i;
-        printf("R p%2d o%016llx %8lx %d ",
+        printf("R p%2d o%016lx %8lx %d ",
                p->pid, p->file_offset,
                (unsigned long)ri->rec.event, ri->rec.extra_words);
 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

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

* Re: Announcement: xenalyze trace analysis tool released
  2009-08-14  1:26 ` Akio Takebe
@ 2009-08-14 10:19   ` George Dunlap
  2010-04-30 22:02     ` Jeremy Fitzhardinge
  0 siblings, 1 reply; 4+ messages in thread
From: George Dunlap @ 2009-08-14 10:19 UTC (permalink / raw)
  To: Akio Takebe; +Cc: xen-devel

Hmm, that won't do; with this patch it won't compile on x86-32. :-)

I'll take a look and see what the best solution is.  Thanks for the patch!

 -George

On Fri, Aug 14, 2009 at 2:26 AM, Akio Takebe<takebe_akio@jp.fujitsu.com> wrote:
> Hi, George
>
> It's interesting tool.
> I got many error on x86_64 dom0 while compiling. The patch fixes these.
>
> gcc -g -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes
> -Wno-unused-value -Wdeclaration-after-statement -D_LARGEFILE_SOURCE
> -D_LARGEFILE64_SOURCE -mno-tls-direct-seg-refs -Werror -o xenalyze
> xenalyze.c
> cc1: warnings being treated as errors
> xenalyze.c: In function 'init_hvm_data':
> xenalyze.c:1321: warning: format '%d' expects type 'int', but argument 3 has
> type 'size_t'
> xenalyze.c: In function 'hvm_msr_write_process':
> xenalyze.c:4055: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'hvm_msr_read_process':
> xenalyze.c:4104: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'shadow_emulate_process':
> xenalyze.c:5128: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5142: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5156: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'shadow_parse_other':
> xenalyze.c:5228: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5244: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5256: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'shadow_fixup_process':
> xenalyze.c:5445: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5458: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5471: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'shadow_mmio_process':
> xenalyze.c:5559: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c:5570: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'vcpu_create':
> xenalyze.c:6080: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'domain_create':
> xenalyze.c:6122: warning: format '%d' expects type 'int', but argument 4 has
> type 'long unsigned int'
> xenalyze.c: In function 'scan_for_new_pcpu':
> xenalyze.c:7119: warning: format '%lld' expects type 'long long int', but
> argument 5 has type 'loff_t'
> xenalyze.c: In function 'process_cpu_change':
> xenalyze.c:7194: warning: format '%llx' expects type 'long long unsigned
> int', but argument 4 has type 'loff_t'
> xenalyze.c:7194: warning: format '%llx' expects type 'long long unsigned
> int', but argument 5 has type 'loff_t'
> xenalyze.c:7220: warning: format '%lld' expects type 'long long int', but
> argument 5 has type 'loff_t'
> xenalyze.c:7245: warning: format '%llx' expects type 'long long unsigned
> int', but argument 5 has type 'loff_t'
> xenalyze.c: In function '__read_record':
> xenalyze.c:7538: warning: format '%d' expects type 'int', but argument 4 has
> type 'ssize_t'
> xenalyze.c:7547: warning: format '%d' expects type 'int', but argument 4 has
> type 'ssize_t'
> xenalyze.c:7547: warning: format '%d' expects type 'int', but argument 5 has
> type 'ssize_t'
> xenalyze.c: In function '__fill_in_record_info':
> xenalyze.c:7594: warning: format '%016llx' expects type 'long long unsigned
> int', but argument 3 has type 'loff_t'
> make: *** [xenalyze] Error 1
>
> Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com>
>
> Best Regards,
>
> Akio Takebe
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>

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

* Re: Announcement: xenalyze trace analysis tool released
  2009-08-14 10:19   ` George Dunlap
@ 2010-04-30 22:02     ` Jeremy Fitzhardinge
  0 siblings, 0 replies; 4+ messages in thread
From: Jeremy Fitzhardinge @ 2010-04-30 22:02 UTC (permalink / raw)
  To: George Dunlap; +Cc: xen-devel, Akio Takebe

On 08/14/2009 03:19 AM, George Dunlap wrote:
> Hmm, that won't do; with this patch it won't compile on x86-32. :-)
>
> I'll take a look and see what the best solution is.  Thanks for the patch!
>   

This should fix it properly.  The key is to use the "z" format modifier
meaning "size_t".

    J

Fix 64-bit compilation

This fixes 64-bit compilation by using the 'z' printf format modifier
to tell the compiler we're using size_t-typed arguments, and explicitly
casting loff_t types to unsigned long long to match the format.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

diff -r 6466afa95122 -r 4efef3092ce7 dump-raw.c
--- a/dump-raw.c	Mon Nov 30 12:43:09 2009 -0600
+++ b/dump-raw.c	Fri Apr 30 12:56:57 2010 -0700
@@ -94,7 +94,7 @@
         return 0;
     } else if(r < sizeof(uint32_t)) {
         /* Full header not read */
-        fprintf(stderr, "%s: short read (%d bytes)\n",
+        fprintf(stderr, "%s: short read (%zd bytes)\n",
                 __func__, r);
         exit(1);
     }
@@ -103,7 +103,7 @@
 
     if(r < rsize) {
         /* Full record not read */
-        fprintf(stderr, "%s: short read (%d, expected %d)\n",
+        fprintf(stderr, "%s: short read (%zd, expected %zd)\n",
                 __func__, r, rsize);
         return 0;
     }
@@ -146,7 +146,8 @@
     /* File sanity check */
     if(p->file_offset != p->next_cpu_change_offset) {
         printf("Strange, pcpu %d expected offet %llx, actual %llx!\n",
-                p->pid, p->next_cpu_change_offset, p->file_offset);
+	       p->pid, (unsigned long long)p->next_cpu_change_offset,
+	       (unsigned long long)p->file_offset);
     }
 
     p->next_cpu_change_offset = p->file_offset + ri->size + r->window_size;
@@ -159,7 +160,7 @@
     int i;
     
     printf("R p%2d o%016llx %8lx %d ",
-           p->pid, p->file_offset,
+           p->pid, (unsigned long long)p->file_offset,
            (unsigned long)ri->rec.event, ri->rec.extra_words);
 
     if(ri->rec.cycle_flag)
diff -r 6466afa95122 -r 4efef3092ce7 xenalyze.c
--- a/xenalyze.c	Mon Nov 30 12:43:09 2009 -0600
+++ b/xenalyze.c	Fri Apr 30 12:56:57 2010 -0700
@@ -1328,7 +1328,7 @@
         if(h->summary.extint_histogram)
             bzero(h->summary.extint_histogram, size);
         else {
-            fprintf(stderr, "FATAL: Could not allocate %d bytes for interrupt histogram!\n",
+            fprintf(stderr, "FATAL: Could not allocate %zd bytes for interrupt histogram!\n",
                     size);
             exit(1);
         }
@@ -4062,7 +4062,7 @@
 
     if(ri->extra_words != (sizeof(*r)/sizeof(unsigned long) + 1))
     {
-        fprintf(warn, "FATAL: msr_write extra_words %d, expected %d!\n",
+        fprintf(warn, "FATAL: msr_write extra_words %d, expected %zd!\n",
                 ri->extra_words, sizeof(*r)/sizeof(unsigned long));
         dump_unexpected_and_exit(ri);
     } 
@@ -4111,7 +4111,7 @@
 
     if(ri->extra_words != (sizeof(*r)/sizeof(unsigned long) + 1))
     {
-        fprintf(warn, "FATAL: msr_read extra_words %d, expected %d!\n",
+        fprintf(warn, "FATAL: msr_read extra_words %d, expected %zd!\n",
                 ri->extra_words, sizeof(*r)/sizeof(unsigned long));
         dump_unexpected_and_exit(ri);
     } 
@@ -5152,7 +5152,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5166,7 +5166,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5180,7 +5180,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5252,7 +5252,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5268,7 +5268,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5280,7 +5280,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), rec_gpl,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5469,7 +5469,7 @@
     case 2:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5482,7 +5482,7 @@
     case 3:
         if(sizeof(r->gpl3) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl3), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5495,7 +5495,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5583,7 +5583,7 @@
     case 3:
         if(sizeof(r->gpl2) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl2), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -5594,7 +5594,7 @@
     case 4:
         if(sizeof(r->gpl4) != ri->extra_words * 4)
         {
-            fprintf(warn, "%s: expected %d bytes for %d-level guest, got %d!\n",
+            fprintf(warn, "%s: expected %zd bytes for %d-level guest, got %d!\n",
                     __func__, sizeof(r->gpl4), h->v->guest_paging_levels,
                     ri->extra_words * 4);
             dump_unexpected_and_exit(ri);
@@ -6106,7 +6106,7 @@
 
     if((v=malloc(sizeof(*v)))==NULL)
     {
-        fprintf(stderr, "%s: malloc %d failed!\n", __func__, sizeof(*d));
+        fprintf(stderr, "%s: malloc %zd failed!\n", __func__, sizeof(*d));
         exit(1);
     }
 
@@ -6148,7 +6148,7 @@
 
     if((d=malloc(sizeof(*d)))==NULL)
     {
-        fprintf(stderr, "%s: malloc %d failed!\n", __func__, sizeof(*d));
+        fprintf(stderr, "%s: malloc %zd failed!\n", __func__, sizeof(*d));
         exit(1);
     }
 
@@ -7145,7 +7145,7 @@
         struct pcpu_info *p = P.pcpu + cd->cpu;
 
         fprintf(warn, "%s: Activating pcpu %d at offset %lld\n",
-                __func__, cd->cpu, offset);
+                __func__, cd->cpu, (unsigned long long)offset);
 
         p->active = 1;
         /* Process this cpu_change record first */
@@ -7220,7 +7220,8 @@
     /* File sanity check */
     if(p->file_offset != p->next_cpu_change_offset) {
         fprintf(warn, "Strange, pcpu %d expected offet %llx, actual %llx!\n",
-                p->pid, p->next_cpu_change_offset, p->file_offset);
+                p->pid, (unsigned long long)p->next_cpu_change_offset,
+                (unsigned long long)p->file_offset);
     }
 
     if(r->cpu > MAX_CPUS)
@@ -7246,7 +7247,7 @@
             P.max_active_pcpu = r->cpu;
 
         fprintf(warn, "%s: Activating pcpu %d at offset %lld\n",
-               __func__, r->cpu, p->file_offset);
+                __func__, r->cpu, (unsigned long long)p->file_offset);
         
         sched_default_vcpu_activate(p2);
 
@@ -7271,7 +7272,7 @@
             activate_early_eof();
         } else if(P.early_eof && p->file_offset > P.last_epoch_offset) {
             fprintf(warn, "%s: early_eof activated, pcpu %d past last_epoch_offset %llx, deactivating.\n",
-                    __func__, p->pid, P.last_epoch_offset);
+                    __func__, p->pid, (unsigned long long)P.last_epoch_offset);
             deactivate_pcpu(p);
         }
     } 
@@ -7571,7 +7572,7 @@
         return 0;
     } else if(r < sizeof(uint32_t)) {
         /* Full header not read */
-        fprintf(stderr, "%s: short read (%d bytes)\n",
+        fprintf(stderr, "%s: short read (%zd bytes)\n",
                 __func__, r);
         exit(1);
     }
@@ -7580,7 +7581,7 @@
 
     if(r < rsize) {
         /* Full record not read */
-        fprintf(stderr, "%s: short read (%d, expected %d)\n",
+        fprintf(stderr, "%s: short read (%zd, expected %zd)\n",
                 __func__, r, rsize);
         return 0;
     }
@@ -7627,7 +7628,7 @@
     if ( opt.dump_raw_reads ) {
         int i;
         printf("R p%2d o%016llx %8lx %d ",
-               p->pid, p->file_offset,
+               p->pid, (unsigned long long)p->file_offset,
                (unsigned long)ri->rec.event, ri->rec.extra_words);
 
         if(ri->rec.cycle_flag)

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

end of thread, other threads:[~2010-04-30 22:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-13 15:51 Announcement: xenalyze trace analysis tool released George Dunlap
2009-08-14  1:26 ` Akio Takebe
2009-08-14 10:19   ` George Dunlap
2010-04-30 22:02     ` Jeremy Fitzhardinge

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).