[tip:perfcounters/core] perf_counter tools: Print 'CPU utilization factor' in builtin-stat

tip-bot for Ingo Molnar
2009-05-30T11:46:42Z

Commit-ID: d7c29318c2daa96d64b7312afd8283488c1cb29f
Gitweb: http://git.kernel.org/tip/d7c29318c2daa96d64b7312afd8283488c1cb29f
Author: Ingo Molnar <mingo@elte.hu>
AuthorDate: Sat, 30 May 2009 12:38:51 +0200
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Sat, 30 May 2009 12:41:12 +0200

perf_counter tools: Print 'CPU utilization factor' in builtin-stat

Before:

Performance counter stats for '/home/mingo/hackbench':

5728.862689 task clock ticks (msecs)
34426 context switches # 0.006 M/sec
3835 CPU migrations # 0.001 M/sec
18158 pagefaults # 0.003 M/sec
16218109156 CPU cycles # 2830.947 M/sec
13519616840 instructions # 2359.913 M/sec
55941661 cache references # 9.765 M/sec
23554938 cache misses # 4.112 M/sec

Wall-clock time elapsed: 528.886980 msecs

After:

Performance counter stats for '/home/mingo/hackbench':

5845.443541 task clock ticks # 11.886 CPU utilization factor
38289 context switches # 0.007 M/sec
4208 CPU migrations # 0.001 M/sec
17755 pagefaults # 0.003 M/sec
16664668576 CPU cycles # 2850.882 M/sec
13468113991 instructions # 2304.036 M/sec
57445468 cache references # 9.827 M/sec
26896502 cache misses # 4.601 M/sec

Wall-clock time elapsed: 491.802357 msecs

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

---
Documentation/perf_counter/builtin-stat.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/Documentation/perf_counter/builtin-stat.c b/Documentation/perf_counter/builtin-stat.c
index ef7e0e1..5886791 100644
--- a/Documentation/perf_counter/builtin-stat.c
+++ b/Documentation/perf_counter/builtin-stat.c
@@ -75,6 +75,7 @@ static __u64 event_res[MAX_COUNTERS][3];
static __u64 event_scaled[MAX_COUNTERS];

static __u64 runtime_nsecs;
+static __u64 walltime_nsecs;

static void create_perfstat_counter(int counter)
{
@@ -194,13 +195,19 @@ static void print_counter(int counter)
if (nsec_counter(counter)) {
double msecs = (double)count[0] / 1000000;

- fprintf(stderr, " %14.6f %-20s (msecs)",
+ fprintf(stderr, " %14.6f %-20s",
msecs, event_name(counter));
+ if (event_id[counter] ==
+ EID(PERF_TYPE_SOFTWARE, PERF_COUNT_TASK_CLOCK)) {
+
+ fprintf(stderr, " # %11.3f CPU utilization factor",
+ (double)count[0] / (double)walltime_nsecs);
+ }
} else {
fprintf(stderr, " %14Ld %-20s",
count[0], event_name(counter));
if (runtime_nsecs)
- fprintf(stderr, " # %12.3f M/sec",
+ fprintf(stderr, " # %11.3f M/sec",
(double)count[0]/runtime_nsecs*1000.0);
}
if (scaled)
@@ -241,6 +248,8 @@ static int do_perfstat(int argc, const char **argv)
prctl(PR_TASK_PERF_COUNTERS_DISABLE);
t1 = rdclock();

+ walltime_nsecs = t1 - t0;
+
fflush(stdout);

fprintf(stderr, "\n");