public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf stat: fix hardcoded nr_counter
@ 2009-06-24  2:24 Jaswinder Singh Rajput
  2009-06-24  8:58 ` Ingo Molnar
  0 siblings, 1 reply; 3+ messages in thread
From: Jaswinder Singh Rajput @ 2009-06-24  2:24 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, Peter Zijlstra, LKML


nr_counter should be based on number of default_attrs entries.

Remove dead code and some code alignment.

Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
---
 tools/perf/builtin-stat.c |   48 ++++++++++++++------------------------------
 1 files changed, 15 insertions(+), 33 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 5e04fcc..e22b32f 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -45,7 +45,7 @@
 #include <sys/prctl.h>
 #include <math.h>
 
-static struct perf_counter_attr default_attrs[MAX_COUNTERS] = {
+static struct perf_counter_attr default_attrs[] = {
 
   { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_TASK_CLOCK	},
   { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_CONTEXT_SWITCHES},
@@ -59,42 +59,27 @@ static struct perf_counter_attr default_attrs[MAX_COUNTERS] = {
 
 };
 
+#define MAX_RUN			100
+
 static int			system_wide			=  0;
-static int			inherit				=  1;
 static int			verbose				=  0;
-
-static int			fd[MAX_NR_CPUS][MAX_COUNTERS];
-
-static int			target_pid			= -1;
 static int			nr_cpus				=  0;
-static unsigned int		page_size;
+static int			run_idx				=  0;
 
+static int			run_count			=  1;
+static int			inherit				=  1;
 static int			scale				=  1;
+static int			target_pid			= -1;
 
-static const unsigned int default_count[] = {
-	1000000,
-	1000000,
-	  10000,
-	  10000,
-	1000000,
-	  10000,
-};
-
-#define MAX_RUN 100
+static u64			runtime_nsecs[MAX_RUN];
+static u64			walltime_nsecs[MAX_RUN];
+static u64			runtime_cycles[MAX_RUN];
 
-static int			run_count		=  1;
-static int			run_idx			=  0;
+static int			fd[MAX_NR_CPUS][MAX_COUNTERS];
 
 static u64			event_res[MAX_RUN][MAX_COUNTERS][3];
 static u64			event_scaled[MAX_RUN][MAX_COUNTERS];
 
-//static u64			event_hist[MAX_RUN][MAX_COUNTERS][3];
-
-
-static u64			runtime_nsecs[MAX_RUN];
-static u64			walltime_nsecs[MAX_RUN];
-static u64			runtime_cycles[MAX_RUN];
-
 static u64			event_res_avg[MAX_COUNTERS][3];
 static u64			event_res_noise[MAX_COUNTERS][3];
 
@@ -109,7 +94,6 @@ static u64			walltime_nsecs_noise;
 static u64			runtime_cycles_avg;
 static u64			runtime_cycles_noise;
 
-
 #define ERR_PERF_OPEN \
 "Error: counter %d, sys_perf_counter_open() syscall returned with %d (%s)\n"
 
@@ -470,9 +454,9 @@ static const struct option options[] = {
 	OPT_INTEGER('p', "pid", &target_pid,
 		    "stat events on existing pid"),
 	OPT_BOOLEAN('a', "all-cpus", &system_wide,
-			    "system-wide collection from all CPUs"),
+		    "system-wide collection from all CPUs"),
 	OPT_BOOLEAN('S', "scale", &scale,
-			    "scale/normalize counters"),
+		    "scale/normalize counters"),
 	OPT_BOOLEAN('v', "verbose", &verbose,
 		    "be more verbose (show counter open errors, etc)"),
 	OPT_INTEGER('r', "repeat", &run_count,
@@ -484,8 +468,6 @@ int cmd_stat(int argc, const char **argv, const char *prefix)
 {
 	int status;
 
-	page_size = sysconf(_SC_PAGE_SIZE);
-
 	memcpy(attrs, default_attrs, sizeof(attrs));
 
 	argc = parse_options(argc, argv, options, stat_usage, 0);
@@ -495,7 +477,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix)
 		usage_with_options(stat_usage, options);
 
 	if (!nr_counters)
-		nr_counters = 8;
+		nr_counters = ARRAY_SIZE(default_attrs);
 
 	nr_cpus = sysconf(_SC_NPROCESSORS_ONLN);
 	assert(nr_cpus <= MAX_NR_CPUS);
@@ -515,7 +497,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix)
 	status = 0;
 	for (run_idx = 0; run_idx < run_count; run_idx++) {
 		if (run_count != 1 && verbose)
-			fprintf(stderr, "[ perf stat: executing run #%d ... ]\n", run_idx+1);
+			fprintf(stderr, "[ perf stat: executing run #%d ... ]\n", run_idx + 1);
 		status = run_perf_stat(argc, argv);
 	}
 
-- 
1.6.0.6




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

* Re: [PATCH] perf stat: fix hardcoded nr_counter
  2009-06-24  2:24 [PATCH] perf stat: fix hardcoded nr_counter Jaswinder Singh Rajput
@ 2009-06-24  8:58 ` Ingo Molnar
  2009-06-24 12:56   ` Jaswinder Singh Rajput
  0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2009-06-24  8:58 UTC (permalink / raw)
  To: Jaswinder Singh Rajput; +Cc: Thomas Gleixner, Peter Zijlstra, LKML


* Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:

> nr_counter should be based on number of default_attrs entries.

The problem is, this will cause a _lot_ of counters to be used by 
default, overloading the PMU quite significantly and reducing 
precision. The number of hw counters is chosen intentionally the way 
it is now, so that on common hardware there's no over-commit.

As i suggested before, your change does make sense if introduced as 
extended event specifications to 'perf stat':

 -e all
 -e all-sw-counters
 -e all-hw-counters

with regex wildcard support too.

Instead, you chose to ignore my feedback and wasted my time by 
re-sending the same broken patch. If you do such things i'll have to 
start ignoring you - it is very ineffective for me to repeat every 
argument and suggestion two or more times and no other contributor 
does this ...

> Remove dead code and some code alignment.

Could you please send this separately?

	Ingo

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

* Re: [PATCH] perf stat: fix hardcoded nr_counter
  2009-06-24  8:58 ` Ingo Molnar
@ 2009-06-24 12:56   ` Jaswinder Singh Rajput
  0 siblings, 0 replies; 3+ messages in thread
From: Jaswinder Singh Rajput @ 2009-06-24 12:56 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, Peter Zijlstra, LKML

On Wed, 2009-06-24 at 10:58 +0200, Ingo Molnar wrote:
> * Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:
> 
> > nr_counter should be based on number of default_attrs entries.
> 
> The problem is, this will cause a _lot_ of counters to be used by 
> default, overloading the PMU quite significantly and reducing 
> precision. The number of hw counters is chosen intentionally the way 
> it is now, so that on common hardware there's no over-commit.
> 
> As i suggested before, your change does make sense if introduced as 
> extended event specifications to 'perf stat':
> 
>  -e all
>  -e all-sw-counters
>  -e all-hw-counters
> 
> with regex wildcard support too.
> 

Ok I will support it now.

> Instead, you chose to ignore my feedback and wasted my time by 
> re-sending the same broken patch. If you do such things i'll have to 
> start ignoring you - it is very ineffective for me to repeat every 
> argument and suggestion two or more times and no other contributor 
> does this ...
> 

oops, I am sorry my AMD box was not able to boot because of the
regression the only machine which supports performance counter. I was
doing git-bisect on AMD box in the mean time I prepare this patch on old
Intel box.

> > Remove dead code and some code alignment.
> 
> Could you please send this separately?
> 

Send [PATCH -tip] perf stat: remove dead code

Thanks,
--
JSR


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

end of thread, other threads:[~2009-06-24 12:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-24  2:24 [PATCH] perf stat: fix hardcoded nr_counter Jaswinder Singh Rajput
2009-06-24  8:58 ` Ingo Molnar
2009-06-24 12:56   ` Jaswinder Singh Rajput

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox