From: Andi Kleen <andi@firstfloor.org>
To: acme@kernel.org
Cc: peterz@infradead.org, jolsa@kernel.org, eranian@google.com,
linux-kernel@vger.kernel.org, mingo@kernel.org,
Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 02/11] perf, tools: Parse an .aggr-per-core event attribute
Date: Fri, 15 Jan 2016 17:12:44 -0800 [thread overview]
Message-ID: <1452906773-7581-3-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1452906773-7581-1-git-send-email-andi@firstfloor.org>
From: Andi Kleen <ak@linux.intel.com>
Add the basic code to parse an .aggr-per-core event attribute.
The attribute means that the event needs to be measured in
per core mode.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/util/evsel.h | 1 +
tools/perf/util/parse-events.c | 1 +
tools/perf/util/pmu.c | 24 ++++++++++++++++++++++++
tools/perf/util/pmu.h | 2 ++
4 files changed, 28 insertions(+)
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 8e75434..239a666 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -114,6 +114,7 @@ struct perf_evsel {
bool tracking;
bool per_pkg;
bool precise_max;
+ bool aggr_per_core;
/* parse modifier helper */
int exclude_GH;
int nr_members;
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 4f7b0ef..9dff8c5 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1027,6 +1027,7 @@ int parse_events_add_pmu(struct parse_events_evlist *data,
evsel->unit = info.unit;
evsel->scale = info.scale;
evsel->per_pkg = info.per_pkg;
+ evsel->aggr_per_core = info.aggr_per_core;
evsel->snapshot = info.snapshot;
}
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 0d228d1..c5eb1ce 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -189,6 +189,24 @@ perf_pmu__parse_per_pkg(struct perf_pmu_alias *alias, char *dir, char *name)
return 0;
}
+static void
+perf_pmu__parse_aggr_per_core(struct perf_pmu_alias *alias, char *dir, char *name)
+{
+ char path[PATH_MAX];
+ FILE *f;
+ int flag;
+
+ snprintf(path, PATH_MAX, "%s/%s.aggr-per-core", dir, name);
+
+ f = fopen(path, "r");
+ if (f) {
+ if (fscanf(f, "%d", &flag) == 1)
+ alias->aggr_per_core = flag != 0;
+ fclose(f);
+ }
+}
+
+
static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
char *dir, char *name)
{
@@ -238,6 +256,7 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
perf_pmu__parse_scale(alias, dir, name);
perf_pmu__parse_per_pkg(alias, dir, name);
perf_pmu__parse_snapshot(alias, dir, name);
+ perf_pmu__parse_aggr_per_core(alias, dir, name);
}
list_add_tail(&alias->list, list);
@@ -272,6 +291,8 @@ static inline bool pmu_alias_info_file(char *name)
return true;
if (len > 9 && !strcmp(name + len - 9, ".snapshot"))
return true;
+ if (len > 14 && !strcmp(name + len - 14, ".aggr-per-core"))
+ return true;
return false;
}
@@ -851,6 +872,7 @@ int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms,
int ret;
info->per_pkg = false;
+ info->aggr_per_core = false;
/*
* Mark unit and scale as not set
@@ -874,6 +896,8 @@ int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms,
if (alias->per_pkg)
info->per_pkg = true;
+ if (alias->aggr_per_core)
+ info->aggr_per_core = true;
list_del(&term->list);
free(term);
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 5d7e844..e9dde6c 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -32,6 +32,7 @@ struct perf_pmu_info {
double scale;
bool per_pkg;
bool snapshot;
+ bool aggr_per_core;
};
#define UNIT_MAX_LEN 31 /* max length for event unit name */
@@ -44,6 +45,7 @@ struct perf_pmu_alias {
double scale;
bool per_pkg;
bool snapshot;
+ bool aggr_per_core;
};
struct perf_pmu *perf_pmu__find(const char *name);
--
2.4.3
next prev parent reply other threads:[~2016-01-16 1:15 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-16 1:12 Add top down metrics to perf stat Andi Kleen
2016-01-16 1:12 ` [PATCH 01/11] perf, tools: Dont stop PMU parsing on alias parse error Andi Kleen
2016-01-16 1:12 ` Andi Kleen [this message]
2016-01-16 1:12 ` [PATCH 03/11] perf, tools, stat: Force --per-core mode for .aggr-per-core aliases Andi Kleen
2016-01-16 1:12 ` [PATCH 04/11] perf, tools, stat: Avoid fractional digits for integer scales Andi Kleen
2016-01-16 1:12 ` [PATCH 05/11] perf, tools, stat: Scale values by unit before metrics Andi Kleen
2016-01-16 1:12 ` [PATCH 06/11] perf, tools, stat: Basic support for TopDown in perf stat Andi Kleen
2016-01-16 1:12 ` [PATCH 07/11] perf, tools, stat: Add computation of TopDown formulas Andi Kleen
2016-01-16 1:12 ` [PATCH 08/11] perf, tools, stat: Add extra output of counter values with -v Andi Kleen
2016-01-16 1:12 ` [PATCH 09/11] x86, perf: Support sysfs files depending on SMT status Andi Kleen
2016-01-18 18:03 ` Peter Zijlstra
2016-01-18 18:06 ` Peter Zijlstra
2016-01-18 22:28 ` Andi Kleen
2016-01-16 1:12 ` [PATCH 10/11] x86, perf: Add Top Down events to Intel Core Andi Kleen
2016-01-16 1:12 ` [PATCH 11/11] x86, perf: Add Top Down events to Intel Atom Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452906773-7581-3-git-send-email-andi@firstfloor.org \
--to=andi@firstfloor.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=eranian@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).