nr_counter should be based on number of default_attrs entries.
Remove dead code and some code alignment.
Signed-off-by: Jaswinder Singh Rajput <[email protected]>
---
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
* Jaswinder Singh Rajput <[email protected]> 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
On Wed, 2009-06-24 at 10:58 +0200, Ingo Molnar wrote:
> * Jaswinder Singh Rajput <[email protected]> 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