[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] xenalyze: Fix interrupt EIP reporting



commit b26a2341357f4b7b9e96a67c81e939d952984698
Author:     George Dunlap <george.dunlap@xxxxxxxxx>
AuthorDate: Fri Oct 6 16:54:10 2023 +0100
Commit:     George Dunlap <george.dunlap@xxxxxxxxx>
CommitDate: Mon Oct 16 15:01:51 2023 +0100

    xenalyze: Fix interrupt EIP reporting
    
    EIP lists are generalized across several use cases.  For many of them,
    it make sense to have a cycle per sample; but not really for interrupt
    EIP lists.  For this reason, it normally just passes 0 as for the tsc
    value, which will in turn down at the bottom of update_cycles(),
    update only the summary.event_count, but nothing else.
    
    The dump_eip() function attempted to handle this by calling the generic
    cycle print handler if the summary contained *any* cycles, and by collecting
    and printing its own stats, based solely on counts, if not.
    
    Unfortunately, it used the wrong element for this: it collected the
    total from samples.count rather samples.event_count; in the case that
    there are no cycles, this will always be zero.  It then divided by
    this zero value.  This results in output that looked like this:
    
    ```
      ffff89d29656                                             :        0  -nan%
      ffff89d298b6                                             :        0  -nan%
      ffff89d298c0                                             :        0  -nan%
    ```
    
    It's better than nothing, but a lot less informative than one would
    like.
    
    Use event_count rather than count for collecting the total, and the
    reporting when there are no cycles in the summary information.  This results
    in output that looks like this:
    
    ```
       ffff89d29656                                             :        2  
1.21%
       ffff89d298b6                                             :        1  
0.61%
       ffff89d298c0                                             :        1  
0.61%
    ```
    
    Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxx>
    Release-acked-by: Henry Wang <Henry.Wang@xxxxxxx>
    Acked-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
 tools/xentrace/xenalyze.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 2faf66500d..4b6db59d87 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -2866,7 +2866,7 @@ void dump_eip(struct eip_list_struct *head) {
 
     for(p=head; p; p=p->next)
     {
-        total += p->summary.count;
+        total += p->summary.event_count;
         N++;
     }
 
@@ -2901,8 +2901,8 @@ void dump_eip(struct eip_list_struct *head) {
                           p->eip,
                           find_symbol(p->eip));
             printf(" %7d %5.2lf%%\n",
-                   p->summary.count,
-                   ((double)p->summary.count*100)/total);
+                   p->summary.event_count,
+                   ((double)p->summary.event_count*100)/total);
         }
 
 
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.