* [PATCH 1/2] perf record: Support per-event freq term
@ 2015-08-09 6:45 Namhyung Kim
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Namhyung Kim @ 2015-08-09 6:45 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern,
Kan Liang
Now perf can set per-event value of time and (sampling) period. But I
guess most users like me just want to set frequency rather than period.
So add the 'freq' term in the event parser.
Cc: Kan Liang <kan.liang@intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/Documentation/perf-record.txt | 1 +
tools/perf/util/evsel.c | 4 ++++
tools/perf/util/evsel.h | 2 ++
tools/perf/util/parse-events.c | 6 ++++++
tools/perf/util/parse-events.h | 1 +
tools/perf/util/parse-events.l | 1 +
tools/perf/util/pmu.c | 2 +-
7 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index 0d852d1bc90f..afbe45ef7e3e 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -49,6 +49,7 @@ OPTIONS
These params can be used to overload default config values per event.
Here is a list of the params.
- 'period': Set event sampling period
+ - 'freq': Set event sampling frequency
- 'time': Disable/enable time stamping. Acceptable values are 1 for
enabling time stamping. 0 for disabling time stamping.
The default is 1.
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index a59710f88d8a..f664a22b5fea 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -600,6 +600,10 @@ static void apply_config_terms(struct perf_evsel *evsel)
attr->sample_period = term->val.period;
attr->freq = 0;
break;
+ case PERF_EVSEL__CONFIG_TERM_FREQ:
+ attr->sample_freq = term->val.freq;
+ attr->freq = 1;
+ break;
case PERF_EVSEL__CONFIG_TERM_TIME:
if (term->val.time)
perf_evsel__set_sample_bit(evsel, TIME);
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index b948f69d2558..fdf2674ab339 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -39,6 +39,7 @@ struct cgroup_sel;
*/
enum {
PERF_EVSEL__CONFIG_TERM_PERIOD,
+ PERF_EVSEL__CONFIG_TERM_FREQ,
PERF_EVSEL__CONFIG_TERM_TIME,
PERF_EVSEL__CONFIG_TERM_MAX,
};
@@ -48,6 +49,7 @@ struct perf_evsel_config_term {
int type;
union {
u64 period;
+ u64 freq;
bool time;
} val;
};
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 828936dc3f1e..dbf315df4220 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -597,6 +597,9 @@ do { \
case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
CHECK_TYPE_VAL(NUM);
break;
+ case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
+ CHECK_TYPE_VAL(NUM);
+ break;
case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
/*
* TODO uncomment when the field is available
@@ -659,6 +662,9 @@ do { \
case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
ADD_CONFIG_TERM(PERIOD, period, term->val.num);
break;
+ case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
+ ADD_CONFIG_TERM(FREQ, freq, term->val.num);
+ break;
case PARSE_EVENTS__TERM_TYPE_TIME:
ADD_CONFIG_TERM(TIME, time, term->val.num);
break;
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index e6f9aacc1cce..ce2d13a16226 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -62,6 +62,7 @@ enum {
PARSE_EVENTS__TERM_TYPE_CONFIG2,
PARSE_EVENTS__TERM_TYPE_NAME,
PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD,
+ PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ,
PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE,
PARSE_EVENTS__TERM_TYPE_TIME,
};
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index f5427505ae77..4306f5ad75c7 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -182,6 +182,7 @@ config1 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); }
config2 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); }
name { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); }
period { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); }
+freq { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ); }
branch_type { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); }
time { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_TIME); }
, { return ','; }
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index d4b0e6454bc6..d85f11b8cacf 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -634,7 +634,7 @@ static char *formats_error_string(struct list_head *formats)
{
struct perf_pmu_format *format;
char *err, *str;
- static const char *static_terms = "config,config1,config2,name,period,branch_type,time\n";
+ static const char *static_terms = "config,config1,config2,name,period,freq,branch_type,time\n";
unsigned i = 0;
if (!asprintf(&str, "valid terms:"))
--
2.5.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] perf evlist: Be more specific on -F/--freq
2015-08-09 6:45 [PATCH 1/2] perf record: Support per-event freq term Namhyung Kim
@ 2015-08-09 6:45 ` Namhyung Kim
2015-08-09 9:34 ` Jiri Olsa
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-08-09 9:34 ` [PATCH 1/2] perf record: Support per-event freq term Jiri Olsa
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
2 siblings, 2 replies; 7+ messages in thread
From: Namhyung Kim @ 2015-08-09 6:45 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern
Currently perf evlist -F shows the number as if it's always sampling
frequency. But we now support per-event freq/period settings. So it'd
better to show more detailed info whether it's freq or period.
$ perf record -e 'cpu/config=1/,cpu/config=2,period=300000/' sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.017 MB perf.data ]
$ perf evlist -F
cpu/config=1/: sample_freq=4000
cpu/config=2,period=300000/: sample_period=300000
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/evsel.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index f664a22b5fea..04fddddc6b6f 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -2158,8 +2158,13 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
printed += perf_event_attr__fprintf(fp, &evsel->attr,
__print_attr__fprintf, &first);
} else if (details->freq) {
- printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64,
- (u64)evsel->attr.sample_freq);
+ const char *term = "sample_freq";
+
+ if (!evsel->attr.freq)
+ term = "sample_period";
+
+ printed += comma_fprintf(fp, &first, " %s=%" PRIu64,
+ term, (u64)evsel->attr.sample_freq);
}
out:
fputc('\n', fp);
--
2.5.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] perf record: Support per-event freq term
2015-08-09 6:45 [PATCH 1/2] perf record: Support per-event freq term Namhyung Kim
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
@ 2015-08-09 9:34 ` Jiri Olsa
2015-08-10 15:44 ` Arnaldo Carvalho de Melo
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
2 siblings, 1 reply; 7+ messages in thread
From: Jiri Olsa @ 2015-08-09 9:34 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, LKML,
David Ahern, Kan Liang
On Sun, Aug 09, 2015 at 03:45:23PM +0900, Namhyung Kim wrote:
> Now perf can set per-event value of time and (sampling) period. But I
> guess most users like me just want to set frequency rather than period.
> So add the 'freq' term in the event parser.
>
> Cc: Kan Liang <kan.liang@intel.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
thanks,
jirka
> ---
> tools/perf/Documentation/perf-record.txt | 1 +
> tools/perf/util/evsel.c | 4 ++++
> tools/perf/util/evsel.h | 2 ++
> tools/perf/util/parse-events.c | 6 ++++++
> tools/perf/util/parse-events.h | 1 +
> tools/perf/util/parse-events.l | 1 +
> tools/perf/util/pmu.c | 2 +-
> 7 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
> index 0d852d1bc90f..afbe45ef7e3e 100644
> --- a/tools/perf/Documentation/perf-record.txt
> +++ b/tools/perf/Documentation/perf-record.txt
> @@ -49,6 +49,7 @@ OPTIONS
> These params can be used to overload default config values per event.
> Here is a list of the params.
> - 'period': Set event sampling period
> + - 'freq': Set event sampling frequency
> - 'time': Disable/enable time stamping. Acceptable values are 1 for
> enabling time stamping. 0 for disabling time stamping.
> The default is 1.
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index a59710f88d8a..f664a22b5fea 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -600,6 +600,10 @@ static void apply_config_terms(struct perf_evsel *evsel)
> attr->sample_period = term->val.period;
> attr->freq = 0;
> break;
> + case PERF_EVSEL__CONFIG_TERM_FREQ:
> + attr->sample_freq = term->val.freq;
> + attr->freq = 1;
> + break;
> case PERF_EVSEL__CONFIG_TERM_TIME:
> if (term->val.time)
> perf_evsel__set_sample_bit(evsel, TIME);
> diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> index b948f69d2558..fdf2674ab339 100644
> --- a/tools/perf/util/evsel.h
> +++ b/tools/perf/util/evsel.h
> @@ -39,6 +39,7 @@ struct cgroup_sel;
> */
> enum {
> PERF_EVSEL__CONFIG_TERM_PERIOD,
> + PERF_EVSEL__CONFIG_TERM_FREQ,
> PERF_EVSEL__CONFIG_TERM_TIME,
> PERF_EVSEL__CONFIG_TERM_MAX,
> };
> @@ -48,6 +49,7 @@ struct perf_evsel_config_term {
> int type;
> union {
> u64 period;
> + u64 freq;
> bool time;
> } val;
> };
> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index 828936dc3f1e..dbf315df4220 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -597,6 +597,9 @@ do { \
> case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
> CHECK_TYPE_VAL(NUM);
> break;
> + case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
> + CHECK_TYPE_VAL(NUM);
> + break;
> case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
> /*
> * TODO uncomment when the field is available
> @@ -659,6 +662,9 @@ do { \
> case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
> ADD_CONFIG_TERM(PERIOD, period, term->val.num);
> break;
> + case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
> + ADD_CONFIG_TERM(FREQ, freq, term->val.num);
> + break;
> case PARSE_EVENTS__TERM_TYPE_TIME:
> ADD_CONFIG_TERM(TIME, time, term->val.num);
> break;
> diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
> index e6f9aacc1cce..ce2d13a16226 100644
> --- a/tools/perf/util/parse-events.h
> +++ b/tools/perf/util/parse-events.h
> @@ -62,6 +62,7 @@ enum {
> PARSE_EVENTS__TERM_TYPE_CONFIG2,
> PARSE_EVENTS__TERM_TYPE_NAME,
> PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD,
> + PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ,
> PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE,
> PARSE_EVENTS__TERM_TYPE_TIME,
> };
> diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
> index f5427505ae77..4306f5ad75c7 100644
> --- a/tools/perf/util/parse-events.l
> +++ b/tools/perf/util/parse-events.l
> @@ -182,6 +182,7 @@ config1 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); }
> config2 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); }
> name { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); }
> period { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); }
> +freq { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ); }
> branch_type { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); }
> time { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_TIME); }
> , { return ','; }
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index d4b0e6454bc6..d85f11b8cacf 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -634,7 +634,7 @@ static char *formats_error_string(struct list_head *formats)
> {
> struct perf_pmu_format *format;
> char *err, *str;
> - static const char *static_terms = "config,config1,config2,name,period,branch_type,time\n";
> + static const char *static_terms = "config,config1,config2,name,period,freq,branch_type,time\n";
> unsigned i = 0;
>
> if (!asprintf(&str, "valid terms:"))
> --
> 2.5.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] perf evlist: Be more specific on -F/--freq
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
@ 2015-08-09 9:34 ` Jiri Olsa
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
1 sibling, 0 replies; 7+ messages in thread
From: Jiri Olsa @ 2015-08-09 9:34 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, LKML,
David Ahern
On Sun, Aug 09, 2015 at 03:45:24PM +0900, Namhyung Kim wrote:
> Currently perf evlist -F shows the number as if it's always sampling
> frequency. But we now support per-event freq/period settings. So it'd
> better to show more detailed info whether it's freq or period.
>
> $ perf record -e 'cpu/config=1/,cpu/config=2,period=300000/' sleep 1
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.017 MB perf.data ]
>
> $ perf evlist -F
> cpu/config=1/: sample_freq=4000
> cpu/config=2,period=300000/: sample_period=300000
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
thanks,
jirka
> ---
> tools/perf/util/evsel.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index f664a22b5fea..04fddddc6b6f 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -2158,8 +2158,13 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
> printed += perf_event_attr__fprintf(fp, &evsel->attr,
> __print_attr__fprintf, &first);
> } else if (details->freq) {
> - printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64,
> - (u64)evsel->attr.sample_freq);
> + const char *term = "sample_freq";
> +
> + if (!evsel->attr.freq)
> + term = "sample_period";
> +
> + printed += comma_fprintf(fp, &first, " %s=%" PRIu64,
> + term, (u64)evsel->attr.sample_freq);
> }
> out:
> fputc('\n', fp);
> --
> 2.5.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] perf record: Support per-event freq term
2015-08-09 9:34 ` [PATCH 1/2] perf record: Support per-event freq term Jiri Olsa
@ 2015-08-10 15:44 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-08-10 15:44 UTC (permalink / raw)
To: Jiri Olsa
Cc: Namhyung Kim, Ingo Molnar, Peter Zijlstra, LKML, David Ahern,
Kan Liang
Em Sun, Aug 09, 2015 at 11:34:11AM +0200, Jiri Olsa escreveu:
> On Sun, Aug 09, 2015 at 03:45:23PM +0900, Namhyung Kim wrote:
> > Now perf can set per-event value of time and (sampling) period. But I
> > guess most users like me just want to set frequency rather than period.
> > So add the 'freq' term in the event parser.
> >
> > Cc: Kan Liang <kan.liang@intel.com>
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
>
> Acked-by: Jiri Olsa <jolsa@kernel.org>
Thanks, applied both patches.
- Arnaldo
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:perf/core] perf record: Support per-event freq term
2015-08-09 6:45 [PATCH 1/2] perf record: Support per-event freq term Namhyung Kim
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
2015-08-09 9:34 ` [PATCH 1/2] perf record: Support per-event freq term Jiri Olsa
@ 2015-08-12 12:31 ` tip-bot for Namhyung Kim
2 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Namhyung Kim @ 2015-08-12 12:31 UTC (permalink / raw)
To: linux-tip-commits
Cc: hpa, a.p.zijlstra, dsahern, tglx, kan.liang, linux-kernel, mingo,
acme, jolsa, namhyung
Commit-ID: 09af2a553577a6e53e40011a910be0f27ce56f3e
Gitweb: http://git.kernel.org/tip/09af2a553577a6e53e40011a910be0f27ce56f3e
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Sun, 9 Aug 2015 15:45:23 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 10 Aug 2015 17:20:26 -0300
perf record: Support per-event freq term
Now perf can set per-event value of time and (sampling) period. But I
guess most users like me just want to set frequency rather than period.
So add the 'freq' term in the event parser.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1439102724-14079-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-record.txt | 1 +
tools/perf/util/evsel.c | 4 ++++
tools/perf/util/evsel.h | 2 ++
tools/perf/util/parse-events.c | 6 ++++++
tools/perf/util/parse-events.h | 1 +
tools/perf/util/parse-events.l | 1 +
tools/perf/util/pmu.c | 2 +-
7 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index 0d852d1..afbe45e 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -49,6 +49,7 @@ OPTIONS
These params can be used to overload default config values per event.
Here is a list of the params.
- 'period': Set event sampling period
+ - 'freq': Set event sampling frequency
- 'time': Disable/enable time stamping. Acceptable values are 1 for
enabling time stamping. 0 for disabling time stamping.
The default is 1.
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index a59710f..f664a22 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -600,6 +600,10 @@ static void apply_config_terms(struct perf_evsel *evsel)
attr->sample_period = term->val.period;
attr->freq = 0;
break;
+ case PERF_EVSEL__CONFIG_TERM_FREQ:
+ attr->sample_freq = term->val.freq;
+ attr->freq = 1;
+ break;
case PERF_EVSEL__CONFIG_TERM_TIME:
if (term->val.time)
perf_evsel__set_sample_bit(evsel, TIME);
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index b948f69..fdf2674 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -39,6 +39,7 @@ struct cgroup_sel;
*/
enum {
PERF_EVSEL__CONFIG_TERM_PERIOD,
+ PERF_EVSEL__CONFIG_TERM_FREQ,
PERF_EVSEL__CONFIG_TERM_TIME,
PERF_EVSEL__CONFIG_TERM_MAX,
};
@@ -48,6 +49,7 @@ struct perf_evsel_config_term {
int type;
union {
u64 period;
+ u64 freq;
bool time;
} val;
};
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 828936d..dbf315d 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -597,6 +597,9 @@ do { \
case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
CHECK_TYPE_VAL(NUM);
break;
+ case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
+ CHECK_TYPE_VAL(NUM);
+ break;
case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE:
/*
* TODO uncomment when the field is available
@@ -659,6 +662,9 @@ do { \
case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD:
ADD_CONFIG_TERM(PERIOD, period, term->val.num);
break;
+ case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ:
+ ADD_CONFIG_TERM(FREQ, freq, term->val.num);
+ break;
case PARSE_EVENTS__TERM_TYPE_TIME:
ADD_CONFIG_TERM(TIME, time, term->val.num);
break;
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index e6f9aacc..ce2d13a 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -62,6 +62,7 @@ enum {
PARSE_EVENTS__TERM_TYPE_CONFIG2,
PARSE_EVENTS__TERM_TYPE_NAME,
PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD,
+ PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ,
PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE,
PARSE_EVENTS__TERM_TYPE_TIME,
};
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index f542750..4306f5a 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -182,6 +182,7 @@ config1 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); }
config2 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); }
name { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); }
period { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); }
+freq { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ); }
branch_type { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); }
time { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_TIME); }
, { return ','; }
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index d4b0e64..d85f11b 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -634,7 +634,7 @@ static char *formats_error_string(struct list_head *formats)
{
struct perf_pmu_format *format;
char *err, *str;
- static const char *static_terms = "config,config1,config2,name,period,branch_type,time\n";
+ static const char *static_terms = "config,config1,config2,name,period,freq,branch_type,time\n";
unsigned i = 0;
if (!asprintf(&str, "valid terms:"))
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [tip:perf/core] perf evlist: Be more specific on -F/--freq
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
2015-08-09 9:34 ` Jiri Olsa
@ 2015-08-12 12:31 ` tip-bot for Namhyung Kim
1 sibling, 0 replies; 7+ messages in thread
From: tip-bot for Namhyung Kim @ 2015-08-12 12:31 UTC (permalink / raw)
To: linux-tip-commits
Cc: hpa, acme, jolsa, tglx, dsahern, mingo, linux-kernel,
a.p.zijlstra, namhyung
Commit-ID: 4605bb55b91449a1a953a51f0334d3bc02351adb
Gitweb: http://git.kernel.org/tip/4605bb55b91449a1a953a51f0334d3bc02351adb
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Sun, 9 Aug 2015 15:45:24 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 10 Aug 2015 17:20:26 -0300
perf evlist: Be more specific on -F/--freq
Currently perf evlist -F shows the number as if it's always sampling
frequency. But we now support per-event freq/period settings. So it'd
better to show more detailed info whether it's freq or period.
$ perf record -e 'cpu/config=1/,cpu/config=2,period=300000/' sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.017 MB perf.data ]
$ perf evlist -F
cpu/config=1/: sample_freq=4000
cpu/config=2,period=300000/: sample_period=300000
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1439102724-14079-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/evsel.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index f664a22..04fdddd 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -2158,8 +2158,13 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
printed += perf_event_attr__fprintf(fp, &evsel->attr,
__print_attr__fprintf, &first);
} else if (details->freq) {
- printed += comma_fprintf(fp, &first, " sample_freq=%" PRIu64,
- (u64)evsel->attr.sample_freq);
+ const char *term = "sample_freq";
+
+ if (!evsel->attr.freq)
+ term = "sample_period";
+
+ printed += comma_fprintf(fp, &first, " %s=%" PRIu64,
+ term, (u64)evsel->attr.sample_freq);
}
out:
fputc('\n', fp);
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-08-12 12:31 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-09 6:45 [PATCH 1/2] perf record: Support per-event freq term Namhyung Kim
2015-08-09 6:45 ` [PATCH 2/2] perf evlist: Be more specific on -F/--freq Namhyung Kim
2015-08-09 9:34 ` Jiri Olsa
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-08-09 9:34 ` [PATCH 1/2] perf record: Support per-event freq term Jiri Olsa
2015-08-10 15:44 ` Arnaldo Carvalho de Melo
2015-08-12 12:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.