diff options
Diffstat (limited to 'tools/misc/xenpm.c')
-rw-r--r-- | tools/misc/xenpm.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c index 65876fe370..e6fa942828 100644 --- a/tools/misc/xenpm.c +++ b/tools/misc/xenpm.c @@ -389,7 +389,14 @@ static void signal_int_handler(int signo) res = ( diff >= 0 ) ? diff : 0; triggers = cxstat_end[i].triggers[j] - cxstat_start[i].triggers[j]; - avg_res = (triggers==0) ? 0: (double)res/triggers/1000000.0; + /* + * triggers may be zero if the CPU has been in this state for + * the whole sample or if it never entered the state + */ + if ( triggers == 0 && cxstat_end[i].last == j ) + avg_res = (double)sum_cx[i]/1000000.0; + else + avg_res = (triggers==0) ? 0: (double)res/triggers/1000000.0; printf(" C%d\t%"PRIu64"\t(%5.2f%%)\t%.2f\n", j, res/1000000UL, 100 * res / (double)sum_cx[i], avg_res ); } |