* [GIT PULL 00/10] perf/core improvements and fixes
@ 2013-11-05 20:09 Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 01/10] perf hists: Consolidate __hists__add_*entry() Arnaldo Carvalho de Melo
` (10 more replies)
0 siblings, 11 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Corey Ashford, David Ahern, Frederic Weisbecker, Jiri Olsa,
Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Rodrigo Campos, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 87968f94fbea47df334502a0db645833ce8a848b:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-11-04 21:14:04 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 316c7136f8bad924609163b9b115f68d59a68c82:
perf tools: Finish the removal of 'self' arguments (2013-11-05 15:32:36 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. Check maximum frequency rate for record/top, emitting better error
messages, from Jiri Olsa.
. Disable live kvm command if timerfd is not supported, from David Ahern.
. Add usage to 'perf list', from David Ahern.
. Fix detection of non-core features, from David Ahern.
. Consolidate __hists__add_*entry(), cleanup from Namhyung Kim.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint()
perf tools: Finish the removal of 'self' arguments
David Ahern (4):
perf kvm: Disable live command if timerfd is not supported
tools/perf/build: Fix detection of non-core features
perf list: Remove a level of indentation
perf list: Add usage
Jiri Olsa (3):
perf tools: Factor sysfs code into generic fs object
perf fs: Add procfs support
perf tools: Check maximum frequency rate for record/top
Namhyung Kim (1):
perf hists: Consolidate __hists__add_*entry()
tools/perf/Makefile.perf | 4 +-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-diff.c | 3 +-
tools/perf/builtin-kvm.c | 12 ++
tools/perf/builtin-list.c | 84 ++++++++------
tools/perf/builtin-record.c | 15 +--
tools/perf/builtin-report.c | 16 ++-
tools/perf/builtin-top.c | 20 +---
tools/perf/config/Makefile | 17 ++-
tools/perf/config/feature-checks/Makefile | 6 +-
tools/perf/config/feature-checks/test-all.c | 5 +
tools/perf/config/feature-checks/test-timerfd.c | 18 +++
.../perf/scripts/python/Perf-Trace-Util/Context.c | 6 +-
tools/perf/tests/hists_link.c | 6 +-
tools/perf/tests/parse-events.c | 6 +-
tools/perf/ui/browser.h | 32 +++---
tools/perf/ui/browsers/hists.c | 2 +-
tools/perf/ui/browsers/map.c | 40 +++----
tools/perf/ui/browsers/map.h | 2 +-
tools/perf/ui/browsers/scripts.c | 8 +-
tools/perf/ui/stdio/hist.c | 14 +--
tools/perf/util/build-id.h | 3 +-
tools/perf/util/cpumap.c | 6 +-
tools/perf/util/event.c | 6 +-
tools/perf/util/event.h | 3 +-
tools/perf/util/evlist.h | 3 +-
tools/perf/util/fs.c | 119 ++++++++++++++++++++
tools/perf/util/fs.h | 7 ++
tools/perf/util/hist.c | 75 ++-----------
tools/perf/util/hist.h | 51 +++------
tools/perf/util/include/linux/magic.h | 4 +
tools/perf/util/pmu.c | 17 +--
tools/perf/util/probe-finder.c | 113 +++++++++----------
tools/perf/util/probe-finder.h | 10 +-
tools/perf/util/pstack.h | 10 +-
tools/perf/util/python-ext-sources | 2 +-
tools/perf/util/record.c | 71 ++++++++++++
tools/perf/util/session.c | 121 ++++++++++-----------
tools/perf/util/session.h | 27 ++---
tools/perf/util/sort.h | 2 +-
tools/perf/util/strfilter.c | 32 +++---
tools/perf/util/strfilter.h | 12 +-
tools/perf/util/sysfs.c | 60 ----------
tools/perf/util/sysfs.h | 6 -
tools/perf/util/thread.h | 10 +-
45 files changed, 591 insertions(+), 497 deletions(-)
create mode 100644 tools/perf/config/feature-checks/test-timerfd.c
create mode 100644 tools/perf/util/fs.c
create mode 100644 tools/perf/util/fs.h
delete mode 100644 tools/perf/util/sysfs.c
delete mode 100644 tools/perf/util/sysfs.h
^ permalink raw reply [flat|nested] 62+ messages in thread
* [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 21:52 ` Rodrigo Campos
2013-11-05 20:09 ` [PATCH 02/10] perf kvm: Disable live command if timerfd is not supported Arnaldo Carvalho de Melo
` (9 subsequent siblings)
10 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Namhyung Kim, Frederic Weisbecker,
Jiri Olsa, Paul Mackerras, Peter Zijlstra, Rodrigo Campos,
Stephane Eranian, Arnaldo Carvalho de Melo
From: Namhyung Kim <namhyung.kim@lge.com>
The __hists__add_{branch,mem}_entry() does almost the same thing that
__hists__add_entry() does. Consolidate them into one.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Rodrigo Campos <rodrigo@sdfg.com.ar>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1383202576-28141-2-git-send-email-namhyung@kernel.org
[ Fixup clash with new COMM infrastructure ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-diff.c | 3 +-
tools/perf/builtin-report.c | 16 ++++++---
tools/perf/builtin-top.c | 5 +--
tools/perf/tests/hists_link.c | 6 ++--
tools/perf/util/hist.c | 75 ++++---------------------------------------
tools/perf/util/hist.h | 18 ++---------
7 files changed, 30 insertions(+), 95 deletions(-)
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 6c5ae57831f6..4087ab19823c 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -65,7 +65,7 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
return 0;
}
- he = __hists__add_entry(&evsel->hists, al, NULL, 1, 1, 0);
+ he = __hists__add_entry(&evsel->hists, al, NULL, NULL, NULL, 1, 1, 0);
if (he == NULL)
return -ENOMEM;
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index b605009e803f..3b67ea2444bd 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -307,7 +307,8 @@ static int hists__add_entry(struct hists *hists,
struct addr_location *al, u64 period,
u64 weight, u64 transaction)
{
- if (__hists__add_entry(hists, al, NULL, period, weight, transaction) != NULL)
+ if (__hists__add_entry(hists, al, NULL, NULL, NULL, period, weight,
+ transaction) != NULL)
return 0;
return -ENOMEM;
}
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 25f83d5d66fd..8cf8e66ba594 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -115,7 +115,8 @@ static int perf_report__add_mem_hist_entry(struct perf_tool *tool,
* and this is indirectly achieved by passing period=weight here
* and the he_stat__add_period() function.
*/
- he = __hists__add_mem_entry(&evsel->hists, al, parent, mi, cost, cost);
+ he = __hists__add_entry(&evsel->hists, al, parent, NULL, mi,
+ cost, cost, 0);
if (!he)
return -ENOMEM;
@@ -200,12 +201,16 @@ static int perf_report__add_branch_hist_entry(struct perf_tool *tool,
err = -ENOMEM;
+ /* overwrite the 'al' to branch-to info */
+ al->map = bi[i].to.map;
+ al->sym = bi[i].to.sym;
+ al->addr = bi[i].to.addr;
/*
* The report shows the percentage of total branches captured
* and not events sampled. Thus we use a pseudo period of 1.
*/
- he = __hists__add_branch_entry(&evsel->hists, al, parent,
- &bi[i], 1, 1);
+ he = __hists__add_entry(&evsel->hists, al, parent, &bi[i], NULL,
+ 1, 1, 0);
if (he) {
struct annotation *notes;
bx = he->branch_info;
@@ -266,8 +271,9 @@ static int perf_evsel__add_hist_entry(struct perf_tool *tool,
return err;
}
- he = __hists__add_entry(&evsel->hists, al, parent, sample->period,
- sample->weight, sample->transaction);
+ he = __hists__add_entry(&evsel->hists, al, parent, NULL, NULL,
+ sample->period, sample->weight,
+ sample->transaction);
if (he == NULL)
return -ENOMEM;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index ca5ca37980fb..21897f0ffcd3 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -246,8 +246,9 @@ static struct hist_entry *perf_evsel__add_hist_entry(struct perf_evsel *evsel,
struct hist_entry *he;
pthread_mutex_lock(&evsel->hists.lock);
- he = __hists__add_entry(&evsel->hists, al, NULL, sample->period,
- sample->weight, sample->transaction);
+ he = __hists__add_entry(&evsel->hists, al, NULL, NULL, NULL,
+ sample->period, sample->weight,
+ sample->transaction);
pthread_mutex_unlock(&evsel->hists.lock);
if (he == NULL)
return NULL;
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 6c337e653540..173bf42cc03e 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -223,7 +223,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
goto out;
he = __hists__add_entry(&evsel->hists, &al, NULL,
- 1, 1, 0);
+ NULL, NULL, 1, 1, 0);
if (he == NULL)
goto out;
@@ -245,8 +245,8 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
&sample) < 0)
goto out;
- he = __hists__add_entry(&evsel->hists, &al, NULL, 1, 1,
- 0);
+ he = __hists__add_entry(&evsel->hists, &al, NULL,
+ NULL, NULL, 1, 1, 0);
if (he == NULL)
goto out;
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 30793f98c8bb..822903eaa201 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -407,73 +407,12 @@ out:
return he;
}
-struct hist_entry *__hists__add_mem_entry(struct hists *hists,
- struct addr_location *al,
- struct symbol *sym_parent,
- struct mem_info *mi,
- u64 period,
- u64 weight)
-{
- struct hist_entry entry = {
- .thread = al->thread,
- .comm = thread__comm(al->thread),
- .ms = {
- .map = al->map,
- .sym = al->sym,
- },
- .stat = {
- .period = period,
- .weight = weight,
- .nr_events = 1,
- },
- .cpu = al->cpu,
- .ip = al->addr,
- .level = al->level,
- .parent = sym_parent,
- .filtered = symbol__parent_filter(sym_parent),
- .hists = hists,
- .mem_info = mi,
- .branch_info = NULL,
- };
- return add_hist_entry(hists, &entry, al, period, weight);
-}
-
-struct hist_entry *__hists__add_branch_entry(struct hists *hists,
- struct addr_location *al,
- struct symbol *sym_parent,
- struct branch_info *bi,
- u64 period,
- u64 weight)
-{
- struct hist_entry entry = {
- .thread = al->thread,
- .comm = thread__comm(al->thread),
- .ms = {
- .map = bi->to.map,
- .sym = bi->to.sym,
- },
- .cpu = al->cpu,
- .ip = bi->to.addr,
- .level = al->level,
- .stat = {
- .period = period,
- .nr_events = 1,
- .weight = weight,
- },
- .parent = sym_parent,
- .filtered = symbol__parent_filter(sym_parent),
- .branch_info = bi,
- .hists = hists,
- .mem_info = NULL,
- };
-
- return add_hist_entry(hists, &entry, al, period, weight);
-}
-
struct hist_entry *__hists__add_entry(struct hists *hists,
struct addr_location *al,
- struct symbol *sym_parent, u64 period,
- u64 weight, u64 transaction)
+ struct symbol *sym_parent,
+ struct branch_info *bi,
+ struct mem_info *mi,
+ u64 period, u64 weight, u64 transaction)
{
struct hist_entry entry = {
.thread = al->thread,
@@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
.ip = al->addr,
.level = al->level,
.stat = {
- .period = period,
.nr_events = 1,
+ .period = period,
.weight = weight,
},
.parent = sym_parent,
.filtered = symbol__parent_filter(sym_parent),
.hists = hists,
- .branch_info = NULL,
- .mem_info = NULL,
+ .branch_info = bi,
+ .mem_info = mi,
.transaction = transaction,
};
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 9d2d022cdb79..307f1c742563 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -86,7 +86,9 @@ struct hists {
struct hist_entry *__hists__add_entry(struct hists *self,
struct addr_location *al,
- struct symbol *parent, u64 period,
+ struct symbol *parent,
+ struct branch_info *bi,
+ struct mem_info *mi, u64 period,
u64 weight, u64 transaction);
int64_t hist_entry__cmp(struct hist_entry *left, struct hist_entry *right);
int64_t hist_entry__collapse(struct hist_entry *left, struct hist_entry *right);
@@ -95,20 +97,6 @@ int hist_entry__sort_snprintf(struct hist_entry *self, char *bf, size_t size,
struct hists *hists);
void hist_entry__free(struct hist_entry *);
-struct hist_entry *__hists__add_branch_entry(struct hists *self,
- struct addr_location *al,
- struct symbol *sym_parent,
- struct branch_info *bi,
- u64 period,
- u64 weight);
-
-struct hist_entry *__hists__add_mem_entry(struct hists *self,
- struct addr_location *al,
- struct symbol *sym_parent,
- struct mem_info *mi,
- u64 period,
- u64 weight);
-
void hists__output_resort(struct hists *self);
void hists__collapse_resort(struct hists *self, struct ui_progress *prog);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* Re: [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-05 20:09 ` [PATCH 01/10] perf hists: Consolidate __hists__add_*entry() Arnaldo Carvalho de Melo
@ 2013-11-05 21:52 ` Rodrigo Campos
2013-11-06 8:16 ` Namhyung Kim
2013-11-06 13:42 ` Arnaldo Carvalho de Melo
0 siblings, 2 replies; 62+ messages in thread
From: Rodrigo Campos @ 2013-11-05 21:52 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, linux-kernel, Namhyung Kim, Namhyung Kim,
Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
Stephane Eranian, Arnaldo Carvalho de Melo
On Tue, Nov 05, 2013 at 05:09:52PM -0300, Arnaldo Carvalho de Melo wrote:
> @@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
> .ip = al->addr,
> .level = al->level,
> .stat = {
> - .period = period,
> .nr_events = 1,
> + .period = period,
> .weight = weight,
> },
Isn't this seems unrelated and unneeded ?
The "period" field is before the "nr_events" field in the struct, so maybe is
more clear to leave it as it was ? The actual relative order (it has some more
fields) in the struct is: period, weigth, nr_events. Might be better if they
match that order here ? Although not sure since we are using the fields with
name and is clear enough.
Thanks a lot,
Rodrigo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-05 21:52 ` Rodrigo Campos
@ 2013-11-06 8:16 ` Namhyung Kim
2013-11-06 8:28 ` Rodrigo Campos
2013-11-06 13:42 ` Arnaldo Carvalho de Melo
1 sibling, 1 reply; 62+ messages in thread
From: Namhyung Kim @ 2013-11-06 8:16 UTC (permalink / raw)
To: Rodrigo Campos
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
Namhyung Kim, Frederic Weisbecker, Jiri Olsa, Paul Mackerras,
Peter Zijlstra, Stephane Eranian, Arnaldo Carvalho de Melo
Hi Rodrigo,
On Tue, 5 Nov 2013 21:52:43 +0000, Rodrigo Campos wrote:
> On Tue, Nov 05, 2013 at 05:09:52PM -0300, Arnaldo Carvalho de Melo wrote:
>> @@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
>> .ip = al->addr,
>> .level = al->level,
>> .stat = {
>> - .period = period,
>> .nr_events = 1,
>> + .period = period,
>> .weight = weight,
>> },
>
> Isn't this seems unrelated and unneeded ?
>
> The "period" field is before the "nr_events" field in the struct, so maybe is
> more clear to leave it as it was ? The actual relative order (it has some more
> fields) in the struct is: period, weigth, nr_events. Might be better if they
> match that order here ? Although not sure since we are using the fields with
> name and is clear enough.
Yes, it just a small unrelated cosmetic change. I don't think the order
matters much - it just makes my eyes a bit more comfortable. :)
IOW, I changed it since _add_branch_entry() and _add_mem_entry() do it
slightly different order. So I decided to clean it up and putting
nr_events at first looked reasonable to me.
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-06 8:16 ` Namhyung Kim
@ 2013-11-06 8:28 ` Rodrigo Campos
0 siblings, 0 replies; 62+ messages in thread
From: Rodrigo Campos @ 2013-11-06 8:28 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
Namhyung Kim, Frederic Weisbecker, Jiri Olsa, Paul Mackerras,
Peter Zijlstra, Stephane Eranian, Arnaldo Carvalho de Melo
On Wed, Nov 06, 2013 at 05:16:04PM +0900, Namhyung Kim wrote:
> Hi Rodrigo,
>
> On Tue, 5 Nov 2013 21:52:43 +0000, Rodrigo Campos wrote:
> > On Tue, Nov 05, 2013 at 05:09:52PM -0300, Arnaldo Carvalho de Melo wrote:
> >> @@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
> >> .ip = al->addr,
> >> .level = al->level,
> >> .stat = {
> >> - .period = period,
> >> .nr_events = 1,
> >> + .period = period,
> >> .weight = weight,
> >> },
> >
> > Isn't this seems unrelated and unneeded ?
> >
> > The "period" field is before the "nr_events" field in the struct, so maybe is
> > more clear to leave it as it was ? The actual relative order (it has some more
> > fields) in the struct is: period, weigth, nr_events. Might be better if they
> > match that order here ? Although not sure since we are using the fields with
> > name and is clear enough.
>
> Yes, it just a small unrelated cosmetic change. I don't think the order
> matters much - it just makes my eyes a bit more comfortable. :)
>
> IOW, I changed it since _add_branch_entry() and _add_mem_entry() do it
> slightly different order. So I decided to clean it up and putting
> nr_events at first looked reasonable to me.
Great, sounds reasonable to me too :)
Thangs again,
Rodrigo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-05 21:52 ` Rodrigo Campos
2013-11-06 8:16 ` Namhyung Kim
@ 2013-11-06 13:42 ` Arnaldo Carvalho de Melo
2013-11-07 6:44 ` Namhyung Kim
1 sibling, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-06 13:42 UTC (permalink / raw)
To: Rodrigo Campos
Cc: Ingo Molnar, linux-kernel, Namhyung Kim, Namhyung Kim,
Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
Stephane Eranian
Em Tue, Nov 05, 2013 at 09:52:43PM +0000, Rodrigo Campos escreveu:
> On Tue, Nov 05, 2013 at 05:09:52PM -0300, Arnaldo Carvalho de Melo wrote:
> > @@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
> > .stat = {
> > - .period = period,
> > .nr_events = 1,
> > + .period = period,
> > .weight = weight,
> > },
> Isn't this seems unrelated and unneeded ?
> The "period" field is before the "nr_events" field in the struct, so maybe is
> more clear to leave it as it was ? The actual relative order (it has some more
> fields) in the struct is: period, weigth, nr_events. Might be better if they
> match that order here ? Although not sure since we are using the fields with
> name and is clear enough.
Yeah, this shouldn't be there, I thought about fixing this up to reduce
the patch size, but ended up being lenient.
Namhyung, please avoid such unneeded patch churn :-)
- Arnaldo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [PATCH 01/10] perf hists: Consolidate __hists__add_*entry()
2013-11-06 13:42 ` Arnaldo Carvalho de Melo
@ 2013-11-07 6:44 ` Namhyung Kim
0 siblings, 0 replies; 62+ messages in thread
From: Namhyung Kim @ 2013-11-07 6:44 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Rodrigo Campos, Ingo Molnar, linux-kernel, Namhyung Kim,
Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
Stephane Eranian
Hi Arnaldo,
On Wed, 6 Nov 2013 10:42:10 -0300, Arnaldo Carvalho de Melo wrote:
> Em Tue, Nov 05, 2013 at 09:52:43PM +0000, Rodrigo Campos escreveu:
>> On Tue, Nov 05, 2013 at 05:09:52PM -0300, Arnaldo Carvalho de Melo wrote:
>> > @@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
>> > .stat = {
>> > - .period = period,
>> > .nr_events = 1,
>> > + .period = period,
>> > .weight = weight,
>> > },
>
>> Isn't this seems unrelated and unneeded ?
>
>> The "period" field is before the "nr_events" field in the struct, so maybe is
>> more clear to leave it as it was ? The actual relative order (it has some more
>> fields) in the struct is: period, weigth, nr_events. Might be better if they
>> match that order here ? Although not sure since we are using the fields with
>> name and is clear enough.
>
> Yeah, this shouldn't be there, I thought about fixing this up to reduce
> the patch size, but ended up being lenient.
>
> Namhyung, please avoid such unneeded patch churn :-)
Okay, I'll keep it in mind.
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 62+ messages in thread
* [PATCH 02/10] perf kvm: Disable live command if timerfd is not supported
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 01/10] perf hists: Consolidate __hists__add_*entry() Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 03/10] tools/perf/build: Fix detection of non-core features Arnaldo Carvalho de Melo
` (8 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, David Ahern, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: David Ahern <dsahern@gmail.com>
If the OS does not have timerfd support (e.g., older OS'es like RHEL5)
disable perf kvm stat live.
Signed-off-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1383064996-20933-2-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-kvm.c | 12 ++++++++++++
tools/perf/config/Makefile | 7 +++++++
tools/perf/config/feature-checks/Makefile | 6 +++++-
tools/perf/config/feature-checks/test-all.c | 5 +++++
tools/perf/config/feature-checks/test-timerfd.c | 18 ++++++++++++++++++
5 files changed, 47 insertions(+), 1 deletion(-)
create mode 100644 tools/perf/config/feature-checks/test-timerfd.c
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index cb05f39d8a77..cd9f92078aba 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -20,7 +20,9 @@
#include "util/data.h"
#include <sys/prctl.h>
+#ifdef HAVE_TIMERFD_SUPPORT
#include <sys/timerfd.h>
+#endif
#include <termios.h>
#include <semaphore.h>
@@ -337,6 +339,7 @@ static void init_kvm_event_record(struct perf_kvm_stat *kvm)
INIT_LIST_HEAD(&kvm->kvm_events_cache[i]);
}
+#ifdef HAVE_TIMERFD_SUPPORT
static void clear_events_cache_stats(struct list_head *kvm_events_cache)
{
struct list_head *head;
@@ -358,6 +361,7 @@ static void clear_events_cache_stats(struct list_head *kvm_events_cache)
}
}
}
+#endif
static int kvm_events_hash_fn(u64 key)
{
@@ -783,6 +787,7 @@ static void print_result(struct perf_kvm_stat *kvm)
pr_info("\nLost events: %" PRIu64 "\n\n", kvm->lost_events);
}
+#ifdef HAVE_TIMERFD_SUPPORT
static int process_lost_event(struct perf_tool *tool,
union perf_event *event __maybe_unused,
struct perf_sample *sample __maybe_unused,
@@ -793,6 +798,7 @@ static int process_lost_event(struct perf_tool *tool,
kvm->lost_events++;
return 0;
}
+#endif
static bool skip_sample(struct perf_kvm_stat *kvm,
struct perf_sample *sample)
@@ -872,6 +878,7 @@ static bool verify_vcpu(int vcpu)
return true;
}
+#ifdef HAVE_TIMERFD_SUPPORT
/* keeping the max events to a modest level to keep
* the processing of samples per mmap smooth.
*/
@@ -1213,6 +1220,7 @@ static int kvm_live_open_events(struct perf_kvm_stat *kvm)
out:
return rc;
}
+#endif
static int read_events(struct perf_kvm_stat *kvm)
{
@@ -1379,6 +1387,7 @@ kvm_events_report(struct perf_kvm_stat *kvm, int argc, const char **argv)
return kvm_events_report_vcpu(kvm);
}
+#ifdef HAVE_TIMERFD_SUPPORT
static struct perf_evlist *kvm_live_event_list(void)
{
struct perf_evlist *evlist;
@@ -1566,6 +1575,7 @@ out:
return err;
}
+#endif
static void print_kvm_stat_usage(void)
{
@@ -1604,8 +1614,10 @@ static int kvm_cmd_stat(const char *file_name, int argc, const char **argv)
if (!strncmp(argv[1], "rep", 3))
return kvm_events_report(&kvm, argc - 1 , argv + 1);
+#ifdef HAVE_TIMERFD_SUPPORT
if (!strncmp(argv[1], "live", 4))
return kvm_events_live(&kvm, argc - 1 , argv + 1);
+#endif
perf_stat:
return cmd_stat(argc, argv, NULL);
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index ffb5f55c8fba..be8bb9a77287 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -397,6 +397,13 @@ else
endif
endif
+$(call feature_check,timerfd)
+ifeq ($(feature-timerfd), 1)
+ CFLAGS += -DHAVE_TIMERFD_SUPPORT
+else
+ msg := $(warning No timerfd support. Disables 'perf kvm stat live');
+endif
+
disable-python = $(eval $(disable-python_code))
define disable-python_code
CFLAGS += -DNO_LIBPYTHON
diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
index d37d58d273fe..c803f17fb986 100644
--- a/tools/perf/config/feature-checks/Makefile
+++ b/tools/perf/config/feature-checks/Makefile
@@ -25,7 +25,8 @@ FILES= \
test-libunwind \
test-on-exit \
test-stackprotector-all \
- test-stackprotector
+ test-stackprotector \
+ test-timerfd
CC := $(CC) -MD
@@ -136,6 +137,9 @@ test-on-exit:
test-backtrace:
$(BUILD)
+test-timerfd:
+ $(BUILD)
+
-include *.d
###############################
diff --git a/tools/perf/config/feature-checks/test-all.c b/tools/perf/config/feature-checks/test-all.c
index 50d431892a0c..59e7a705e146 100644
--- a/tools/perf/config/feature-checks/test-all.c
+++ b/tools/perf/config/feature-checks/test-all.c
@@ -81,6 +81,10 @@
# include "test-libnuma.c"
#undef main
+#define main main_test_timerfd
+# include "test-timerfd.c"
+#undef main
+
int main(int argc, char *argv[])
{
main_test_libpython();
@@ -101,6 +105,7 @@ int main(int argc, char *argv[])
main_test_on_exit();
main_test_backtrace();
main_test_libnuma();
+ main_test_timerfd();
return 0;
}
diff --git a/tools/perf/config/feature-checks/test-timerfd.c b/tools/perf/config/feature-checks/test-timerfd.c
new file mode 100644
index 000000000000..8c5c083b4d3c
--- /dev/null
+++ b/tools/perf/config/feature-checks/test-timerfd.c
@@ -0,0 +1,18 @@
+/*
+ * test for timerfd functions used by perf-kvm-stat-live
+ */
+#include <sys/timerfd.h>
+
+int main(void)
+{
+ struct itimerspec new_value;
+
+ int fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK);
+ if (fd < 0)
+ return 1;
+
+ if (timerfd_settime(fd, 0, &new_value, NULL) != 0)
+ return 1;
+
+ return 0;
+}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 03/10] tools/perf/build: Fix detection of non-core features
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 01/10] perf hists: Consolidate __hists__add_*entry() Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 02/10] perf kvm: Disable live command if timerfd is not supported Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 04/10] perf list: Remove a level of indentation Arnaldo Carvalho de Melo
` (7 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, David Ahern, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: David Ahern <dsahern@gmail.com>
feature_check needs to be invoked through call, and LDFLAGS may not be
set so quotes are needed.
Thanks to Jiri for spotting the quotes around LDFLAGS; that one was
driving me nuts with the upcoming timerfd feature detection.
Signed-off-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Tested-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1383064996-20933-1-git-send-email-dsahern@gmail.com
[ Fixed conflict with 8a0c4c2843d3 ("perf tools: Fix libunwind build and feature detection for 32-bit build") ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/config/Makefile | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index be8bb9a77287..58b2d37ae23a 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -98,7 +98,7 @@ endif
feature_check = $(eval $(feature_check_code))
define feature_check_code
- feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) LIBUNWIND_LIBS="$(LIBUNWIND_LIBS)" -C config/feature-checks test-$1 >/dev/null 2>/dev/null && echo 1 || echo 0)
+ feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS="$(LDFLAGS)" LIBUNWIND_LIBS="$(LIBUNWIND_LIBS)" -C config/feature-checks test-$1 >/dev/null 2>/dev/null && echo 1 || echo 0)
endef
feature_set = $(eval $(feature_set_code))
@@ -235,7 +235,7 @@ CFLAGS += -I$(LIB_INCLUDE)
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
ifndef NO_BIONIC
- $(feature_check,bionic)
+ $(call feature_check,bionic)
ifeq ($(feature-bionic), 1)
BIONIC := 1
EXTLIBS := $(filter-out -lrt,$(EXTLIBS))
@@ -479,15 +479,15 @@ else
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
else
ifneq ($(feature-libbfd), 1)
- $(feature_check,liberty)
+ $(call feature_check,liberty)
ifeq ($(feature-liberty), 1)
EXTLIBS += -lbfd -liberty
else
- $(feature_check,liberty-z)
+ $(call feature_check,liberty-z)
ifeq ($(feature-liberty-z), 1)
EXTLIBS += -lbfd -liberty -lz
else
- $(feature_check,cplus-demangle)
+ $(call feature_check,cplus-demangle)
ifeq ($(feature-cplus-demangle), 1)
EXTLIBS += -liberty
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 04/10] perf list: Remove a level of indentation
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 03/10] tools/perf/build: Fix detection of non-core features Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 05/10] perf list: Add usage Arnaldo Carvalho de Melo
` (6 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, David Ahern, Frederic Weisbecker, Jiri Olsa,
Namhyung Kim, Peter Zijlstra, Stephane Eranian,
Arnaldo Carvalho de Melo
From: David Ahern <dsahern@gmail.com>
With a return after the if check an indentation level can be removed.
Indentation shift only; no functional changes.
Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1383149707-1008-1-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-list.c | 73 ++++++++++++++++++++++++-----------------------
1 file changed, 37 insertions(+), 36 deletions(-)
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index e79f423cc302..45000e7d4398 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -17,48 +17,49 @@
int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
{
+ int i;
+
setup_pager();
- if (argc == 1)
+ if (argc == 1) {
print_events(NULL, false);
- else {
- int i;
-
- for (i = 1; i < argc; ++i) {
- if (i > 2)
- putchar('\n');
- if (strncmp(argv[i], "tracepoint", 10) == 0)
- print_tracepoint_events(NULL, NULL, false);
- else if (strcmp(argv[i], "hw") == 0 ||
- strcmp(argv[i], "hardware") == 0)
- print_events_type(PERF_TYPE_HARDWARE);
- else if (strcmp(argv[i], "sw") == 0 ||
- strcmp(argv[i], "software") == 0)
- print_events_type(PERF_TYPE_SOFTWARE);
- else if (strcmp(argv[i], "cache") == 0 ||
- strcmp(argv[i], "hwcache") == 0)
- print_hwcache_events(NULL, false);
- else if (strcmp(argv[i], "pmu") == 0)
- print_pmu_events(NULL, false);
- else if (strcmp(argv[i], "--raw-dump") == 0)
- print_events(NULL, true);
- else {
- char *sep = strchr(argv[i], ':'), *s;
- int sep_idx;
+ return 0;
+ }
- if (sep == NULL) {
- print_events(argv[i], false);
- continue;
- }
- sep_idx = sep - argv[i];
- s = strdup(argv[i]);
- if (s == NULL)
- return -1;
+ for (i = 1; i < argc; ++i) {
+ if (i > 2)
+ putchar('\n');
+ if (strncmp(argv[i], "tracepoint", 10) == 0)
+ print_tracepoint_events(NULL, NULL, false);
+ else if (strcmp(argv[i], "hw") == 0 ||
+ strcmp(argv[i], "hardware") == 0)
+ print_events_type(PERF_TYPE_HARDWARE);
+ else if (strcmp(argv[i], "sw") == 0 ||
+ strcmp(argv[i], "software") == 0)
+ print_events_type(PERF_TYPE_SOFTWARE);
+ else if (strcmp(argv[i], "cache") == 0 ||
+ strcmp(argv[i], "hwcache") == 0)
+ print_hwcache_events(NULL, false);
+ else if (strcmp(argv[i], "pmu") == 0)
+ print_pmu_events(NULL, false);
+ else if (strcmp(argv[i], "--raw-dump") == 0)
+ print_events(NULL, true);
+ else {
+ char *sep = strchr(argv[i], ':'), *s;
+ int sep_idx;
- s[sep_idx] = '\0';
- print_tracepoint_events(s, s + sep_idx + 1, false);
- free(s);
+ if (sep == NULL) {
+ print_events(argv[i], false);
+ continue;
}
+ sep_idx = sep - argv[i];
+ s = strdup(argv[i]);
+ if (s == NULL)
+ return -1;
+
+ s[sep_idx] = '\0';
+ print_tracepoint_events(s, s + sep_idx + 1, false);
+ free(s);
}
}
return 0;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 05/10] perf list: Add usage
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (3 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 04/10] perf list: Remove a level of indentation Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 06/10] perf tools: Factor sysfs code into generic fs object Arnaldo Carvalho de Melo
` (5 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, David Ahern, Frederic Weisbecker, Jiri Olsa,
Namhyung Kim, Peter Zijlstra, Stephane Eranian,
Arnaldo Carvalho de Melo
From: David Ahern <dsahern@gmail.com>
Currently 'perf list' is not very helpful if you forget the syntax:
$ perf list -h
List of pre-defined events (to be used in -e):
After:
$ perf list -h
usage: perf list [hw|sw|cache|tracepoint|pmu|event_glob]
Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/527133AD.4030003@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-list.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index 45000e7d4398..011195e38f21 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -14,20 +14,31 @@
#include "util/parse-events.h"
#include "util/cache.h"
#include "util/pmu.h"
+#include "util/parse-options.h"
int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
{
int i;
+ const struct option list_options[] = {
+ OPT_END()
+ };
+ const char * const list_usage[] = {
+ "perf list [hw|sw|cache|tracepoint|pmu|event_glob]",
+ NULL
+ };
+
+ argc = parse_options(argc, argv, list_options, list_usage,
+ PARSE_OPT_STOP_AT_NON_OPTION);
setup_pager();
- if (argc == 1) {
+ if (argc == 0) {
print_events(NULL, false);
return 0;
}
- for (i = 1; i < argc; ++i) {
- if (i > 2)
+ for (i = 0; i < argc; ++i) {
+ if (i)
putchar('\n');
if (strncmp(argv[i], "tracepoint", 10) == 0)
print_tracepoint_events(NULL, NULL, false);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 06/10] perf tools: Factor sysfs code into generic fs object
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (4 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 05/10] perf list: Add usage Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 07/10] perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint() Arnaldo Carvalho de Melo
` (4 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, Adrian Hunter, Corey Ashford,
David Ahern, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@redhat.com>
Moving sysfs code into generic fs object and preparing it to carry
procfs support.
This should be merged with tools/lib/lk/debugfs.c at some point in the
future.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1383660887-1734-2-git-send-email-jolsa@redhat.com
[ Added fs__ namespace qualifier to some more functions ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile.perf | 4 +-
tools/perf/tests/parse-events.c | 2 +-
tools/perf/util/cpumap.c | 2 +-
tools/perf/util/fs.c | 107 +++++++++++++++++++++++++++++++++++++
tools/perf/util/fs.h | 6 +++
tools/perf/util/pmu.c | 2 +-
tools/perf/util/python-ext-sources | 2 +-
tools/perf/util/sysfs.c | 60 ---------------------
tools/perf/util/sysfs.h | 6 ---
9 files changed, 119 insertions(+), 72 deletions(-)
create mode 100644 tools/perf/util/fs.c
create mode 100644 tools/perf/util/fs.h
delete mode 100644 tools/perf/util/sysfs.c
delete mode 100644 tools/perf/util/sysfs.h
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 5b8639025aae..7fc8f179cae7 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -242,7 +242,7 @@ LIB_H += util/cache.h
LIB_H += util/callchain.h
LIB_H += util/build-id.h
LIB_H += util/debug.h
-LIB_H += util/sysfs.h
+LIB_H += util/fs.h
LIB_H += util/pmu.h
LIB_H += util/event.h
LIB_H += util/evsel.h
@@ -304,7 +304,7 @@ LIB_OBJS += $(OUTPUT)util/annotate.o
LIB_OBJS += $(OUTPUT)util/build-id.o
LIB_OBJS += $(OUTPUT)util/config.o
LIB_OBJS += $(OUTPUT)util/ctype.o
-LIB_OBJS += $(OUTPUT)util/sysfs.o
+LIB_OBJS += $(OUTPUT)util/fs.o
LIB_OBJS += $(OUTPUT)util/pmu.o
LIB_OBJS += $(OUTPUT)util/environment.o
LIB_OBJS += $(OUTPUT)util/event.o
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 48114d164e9f..f47bf459c3f5 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -2,7 +2,7 @@
#include "parse-events.h"
#include "evsel.h"
#include "evlist.h"
-#include "sysfs.h"
+#include "fs.h"
#include <lk/debugfs.h>
#include "tests.h"
#include <linux/hw_breakpoint.h>
diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index beb8cf9f9976..4af5a23b2423 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -1,5 +1,5 @@
#include "util.h"
-#include "sysfs.h"
+#include "fs.h"
#include "../perf.h"
#include "cpumap.h"
#include <assert.h>
diff --git a/tools/perf/util/fs.c b/tools/perf/util/fs.c
new file mode 100644
index 000000000000..a2413e842a02
--- /dev/null
+++ b/tools/perf/util/fs.c
@@ -0,0 +1,107 @@
+
+/* TODO merge/factor into tools/lib/lk/debugfs.c */
+
+#include "util.h"
+#include "util/fs.h"
+
+static const char * const sysfs__fs_known_mountpoints[] = {
+ "/sys",
+ 0,
+};
+
+struct fs {
+ const char *name;
+ const char * const *mounts;
+ char path[PATH_MAX + 1];
+ bool found;
+ long magic;
+};
+
+enum {
+ FS__SYSFS = 0,
+};
+
+static struct fs fs__entries[] = {
+ [FS__SYSFS] = {
+ .name = "sysfs",
+ .mounts = sysfs__fs_known_mountpoints,
+ .magic = SYSFS_MAGIC,
+ },
+};
+
+static bool fs__read_mounts(struct fs *fs)
+{
+ bool found = false;
+ char type[100];
+ FILE *fp;
+
+ fp = fopen("/proc/mounts", "r");
+ if (fp == NULL)
+ return NULL;
+
+ while (!found &&
+ fscanf(fp, "%*s %" STR(PATH_MAX) "s %99s %*s %*d %*d\n",
+ fs->path, type) == 2) {
+
+ if (strcmp(type, fs->name) == 0)
+ found = true;
+ }
+
+ fclose(fp);
+ return fs->found = found;
+}
+
+static int fs__valid_mount(const char *fs, long magic)
+{
+ struct statfs st_fs;
+
+ if (statfs(fs, &st_fs) < 0)
+ return -ENOENT;
+ else if (st_fs.f_type != magic)
+ return -ENOENT;
+
+ return 0;
+}
+
+static bool fs__check_mounts(struct fs *fs)
+{
+ const char * const *ptr;
+
+ ptr = fs->mounts;
+ while (*ptr) {
+ if (fs__valid_mount(*ptr, fs->magic) == 0) {
+ fs->found = true;
+ strcpy(fs->path, *ptr);
+ return true;
+ }
+ ptr++;
+ }
+
+ return false;
+}
+
+static const char *fs__get_mountpoint(struct fs *fs)
+{
+ if (fs__check_mounts(fs))
+ return fs->path;
+
+ return fs__read_mounts(fs) ? fs->path : NULL;
+}
+
+static const char *fs__find_mountpoint(int idx)
+{
+ struct fs *fs = &fs__entries[idx];
+
+ if (fs->found)
+ return (const char *)fs->path;
+
+ return fs__get_mountpoint(fs);
+}
+
+#define FIND_MOUNTPOINT(name, idx) \
+const char *name##_find_mountpoint(void) \
+{ \
+ return fs__find_mountpoint(idx); \
+}
+
+FIND_MOUNTPOINT(sysfs, FS__SYSFS);
diff --git a/tools/perf/util/fs.h b/tools/perf/util/fs.h
new file mode 100644
index 000000000000..082edbd2159b
--- /dev/null
+++ b/tools/perf/util/fs.h
@@ -0,0 +1,6 @@
+#ifndef __PERF_FS
+#define __PERF_FS
+
+const char *sysfs_find_mountpoint(void);
+
+#endif /* __PERF_FS */
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 64362fe45b71..45b42dffcd70 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -4,7 +4,7 @@
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
-#include "sysfs.h"
+#include "fs.h"
#include "util.h"
#include "pmu.h"
#include "parse-events.h"
diff --git a/tools/perf/util/python-ext-sources b/tools/perf/util/python-ext-sources
index f75ae1b9900c..239036fb2b2c 100644
--- a/tools/perf/util/python-ext-sources
+++ b/tools/perf/util/python-ext-sources
@@ -17,5 +17,5 @@ util/xyarray.c
util/cgroup.c
util/rblist.c
util/strlist.c
-util/sysfs.c
+util/fs.c
../../lib/rbtree.c
diff --git a/tools/perf/util/sysfs.c b/tools/perf/util/sysfs.c
deleted file mode 100644
index f71e9eafe15a..000000000000
--- a/tools/perf/util/sysfs.c
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#include "util.h"
-#include "sysfs.h"
-
-static const char * const sysfs_known_mountpoints[] = {
- "/sys",
- 0,
-};
-
-static int sysfs_found;
-char sysfs_mountpoint[PATH_MAX + 1];
-
-static int sysfs_valid_mountpoint(const char *sysfs)
-{
- struct statfs st_fs;
-
- if (statfs(sysfs, &st_fs) < 0)
- return -ENOENT;
- else if (st_fs.f_type != (long) SYSFS_MAGIC)
- return -ENOENT;
-
- return 0;
-}
-
-const char *sysfs_find_mountpoint(void)
-{
- const char * const *ptr;
- char type[100];
- FILE *fp;
-
- if (sysfs_found)
- return (const char *) sysfs_mountpoint;
-
- ptr = sysfs_known_mountpoints;
- while (*ptr) {
- if (sysfs_valid_mountpoint(*ptr) == 0) {
- sysfs_found = 1;
- strcpy(sysfs_mountpoint, *ptr);
- return sysfs_mountpoint;
- }
- ptr++;
- }
-
- /* give up and parse /proc/mounts */
- fp = fopen("/proc/mounts", "r");
- if (fp == NULL)
- return NULL;
-
- while (!sysfs_found &&
- fscanf(fp, "%*s %" STR(PATH_MAX) "s %99s %*s %*d %*d\n",
- sysfs_mountpoint, type) == 2) {
-
- if (strcmp(type, "sysfs") == 0)
- sysfs_found = 1;
- }
-
- fclose(fp);
-
- return sysfs_found ? sysfs_mountpoint : NULL;
-}
diff --git a/tools/perf/util/sysfs.h b/tools/perf/util/sysfs.h
deleted file mode 100644
index a813b7203938..000000000000
--- a/tools/perf/util/sysfs.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __SYSFS_H__
-#define __SYSFS_H__
-
-const char *sysfs_find_mountpoint(void);
-
-#endif /* __DEBUGFS_H__ */
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 07/10] perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint()
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (5 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 06/10] perf tools: Factor sysfs code into generic fs object Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 08/10] perf fs: Add procfs support Arnaldo Carvalho de Melo
` (3 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
Paul Mackerras, Peter Zijlstra, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Shorten it, "finding" it is an implementation detail, what callers want
is the pathname, not to ask for it to _always_ do the lookup.
And the existing implementation already caches it, i.e. it doesn't
"finds" it on every call.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-r24wa4bvtccg7mnkessrbbdj@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/tests/parse-events.c | 4 ++--
tools/perf/util/cpumap.c | 4 ++--
tools/perf/util/fs.c | 12 ++++++------
tools/perf/util/fs.h | 2 +-
tools/perf/util/pmu.c | 15 +++++----------
5 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index f47bf459c3f5..ef671cd41bb3 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -1456,7 +1456,7 @@ static int test_pmu(void)
int ret;
snprintf(path, PATH_MAX, "%s/bus/event_source/devices/cpu/format/",
- sysfs_find_mountpoint());
+ sysfs__mountpoint());
ret = stat(path, &st);
if (ret)
@@ -1473,7 +1473,7 @@ static int test_pmu_events(void)
int ret;
snprintf(path, PATH_MAX, "%s/bus/event_source/devices/cpu/events/",
- sysfs_find_mountpoint());
+ sysfs__mountpoint());
ret = stat(path, &st);
if (ret) {
diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index 4af5a23b2423..a9b48c42e81e 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -216,7 +216,7 @@ int cpu_map__get_socket(struct cpu_map *map, int idx)
cpu = map->map[idx];
- mnt = sysfs_find_mountpoint();
+ mnt = sysfs__mountpoint();
if (!mnt)
return -1;
@@ -279,7 +279,7 @@ int cpu_map__get_core(struct cpu_map *map, int idx)
cpu = map->map[idx];
- mnt = sysfs_find_mountpoint();
+ mnt = sysfs__mountpoint();
if (!mnt)
return -1;
diff --git a/tools/perf/util/fs.c b/tools/perf/util/fs.c
index a2413e842a02..77bac4e4c115 100644
--- a/tools/perf/util/fs.c
+++ b/tools/perf/util/fs.c
@@ -88,7 +88,7 @@ static const char *fs__get_mountpoint(struct fs *fs)
return fs__read_mounts(fs) ? fs->path : NULL;
}
-static const char *fs__find_mountpoint(int idx)
+static const char *fs__mountpoint(int idx)
{
struct fs *fs = &fs__entries[idx];
@@ -98,10 +98,10 @@ static const char *fs__find_mountpoint(int idx)
return fs__get_mountpoint(fs);
}
-#define FIND_MOUNTPOINT(name, idx) \
-const char *name##_find_mountpoint(void) \
-{ \
- return fs__find_mountpoint(idx); \
+#define FS__MOUNTPOINT(name, idx) \
+const char *name##__mountpoint(void) \
+{ \
+ return fs__mountpoint(idx); \
}
-FIND_MOUNTPOINT(sysfs, FS__SYSFS);
+FS__MOUNTPOINT(sysfs, FS__SYSFS);
diff --git a/tools/perf/util/fs.h b/tools/perf/util/fs.h
index 082edbd2159b..a7561c83c33c 100644
--- a/tools/perf/util/fs.h
+++ b/tools/perf/util/fs.h
@@ -1,6 +1,6 @@
#ifndef __PERF_FS
#define __PERF_FS
-const char *sysfs_find_mountpoint(void);
+const char *sysfs__mountpoint(void);
#endif /* __PERF_FS */
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 45b42dffcd70..c232d8dd410b 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -77,9 +77,8 @@ static int pmu_format(const char *name, struct list_head *format)
{
struct stat st;
char path[PATH_MAX];
- const char *sysfs;
+ const char *sysfs = sysfs__mountpoint();
- sysfs = sysfs_find_mountpoint();
if (!sysfs)
return -1;
@@ -166,9 +165,8 @@ static int pmu_aliases(const char *name, struct list_head *head)
{
struct stat st;
char path[PATH_MAX];
- const char *sysfs;
+ const char *sysfs = sysfs__mountpoint();
- sysfs = sysfs_find_mountpoint();
if (!sysfs)
return -1;
@@ -212,11 +210,10 @@ static int pmu_type(const char *name, __u32 *type)
{
struct stat st;
char path[PATH_MAX];
- const char *sysfs;
FILE *file;
int ret = 0;
+ const char *sysfs = sysfs__mountpoint();
- sysfs = sysfs_find_mountpoint();
if (!sysfs)
return -1;
@@ -241,11 +238,10 @@ static int pmu_type(const char *name, __u32 *type)
static void pmu_read_sysfs(void)
{
char path[PATH_MAX];
- const char *sysfs;
DIR *dir;
struct dirent *dent;
+ const char *sysfs = sysfs__mountpoint();
- sysfs = sysfs_find_mountpoint();
if (!sysfs)
return;
@@ -270,11 +266,10 @@ static struct cpu_map *pmu_cpumask(const char *name)
{
struct stat st;
char path[PATH_MAX];
- const char *sysfs;
FILE *file;
struct cpu_map *cpus;
+ const char *sysfs = sysfs__mountpoint();
- sysfs = sysfs_find_mountpoint();
if (!sysfs)
return NULL;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 08/10] perf fs: Add procfs support
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (6 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 07/10] perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint() Arnaldo Carvalho de Melo
@ 2013-11-05 20:09 ` Arnaldo Carvalho de Melo
2013-11-05 20:10 ` [PATCH 09/10] perf tools: Check maximum frequency rate for record/top Arnaldo Carvalho de Melo
` (2 subsequent siblings)
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:09 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, Adrian Hunter, Corey Ashford,
David Ahern, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@redhat.com>
Adding procfs support into fs class.
The interface function:
const char *procfs__mountpoint(void);
provides existing mountpoint path for procfs.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1383660887-1734-3-git-send-email-jolsa@redhat.com
[ Fixup namespace ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/fs.c | 16 ++++++++++++++--
tools/perf/util/fs.h | 1 +
tools/perf/util/include/linux/magic.h | 4 ++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/fs.c b/tools/perf/util/fs.c
index 77bac4e4c115..f5be1f26e724 100644
--- a/tools/perf/util/fs.c
+++ b/tools/perf/util/fs.c
@@ -9,6 +9,11 @@ static const char * const sysfs__fs_known_mountpoints[] = {
0,
};
+static const char * const procfs__known_mountpoints[] = {
+ "/proc",
+ 0,
+};
+
struct fs {
const char *name;
const char * const *mounts;
@@ -18,7 +23,8 @@ struct fs {
};
enum {
- FS__SYSFS = 0,
+ FS__SYSFS = 0,
+ FS__PROCFS = 1,
};
static struct fs fs__entries[] = {
@@ -27,6 +33,11 @@ static struct fs fs__entries[] = {
.mounts = sysfs__fs_known_mountpoints,
.magic = SYSFS_MAGIC,
},
+ [FS__PROCFS] = {
+ .name = "proc",
+ .mounts = procfs__known_mountpoints,
+ .magic = PROC_SUPER_MAGIC,
+ },
};
static bool fs__read_mounts(struct fs *fs)
@@ -104,4 +115,5 @@ const char *name##__mountpoint(void) \
return fs__mountpoint(idx); \
}
-FS__MOUNTPOINT(sysfs, FS__SYSFS);
+FS__MOUNTPOINT(sysfs, FS__SYSFS);
+FS__MOUNTPOINT(procfs, FS__PROCFS);
diff --git a/tools/perf/util/fs.h b/tools/perf/util/fs.h
index a7561c83c33c..5e09ce1bab0e 100644
--- a/tools/perf/util/fs.h
+++ b/tools/perf/util/fs.h
@@ -2,5 +2,6 @@
#define __PERF_FS
const char *sysfs__mountpoint(void);
+const char *procfs__mountpoint(void);
#endif /* __PERF_FS */
diff --git a/tools/perf/util/include/linux/magic.h b/tools/perf/util/include/linux/magic.h
index 58b64ed4da12..07d63cf3e0f6 100644
--- a/tools/perf/util/include/linux/magic.h
+++ b/tools/perf/util/include/linux/magic.h
@@ -9,4 +9,8 @@
#define SYSFS_MAGIC 0x62656572
#endif
+#ifndef PROC_SUPER_MAGIC
+#define PROC_SUPER_MAGIC 0x9fa0
+#endif
+
#endif
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 09/10] perf tools: Check maximum frequency rate for record/top
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (7 preceding siblings ...)
2013-11-05 20:09 ` [PATCH 08/10] perf fs: Add procfs support Arnaldo Carvalho de Melo
@ 2013-11-05 20:10 ` Arnaldo Carvalho de Melo
2013-11-05 20:10 ` [PATCH 10/10] perf tools: Finish the removal of 'self' arguments Arnaldo Carvalho de Melo
2013-11-06 5:31 ` [GIT PULL 00/10] perf/core improvements and fixes Ingo Molnar
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:10 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, Adrian Hunter, Corey Ashford,
David Ahern, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@redhat.com>
Adding the check for maximum allowed frequency rate defined in following
file:
/proc/sys/kernel/perf_event_max_sample_rate
When we cross the maximum value we fail and display detailed error
message with advise.
$ perf record -F 3000 ls
Maximum frequency rate (2000) reached.
Please use -F freq option with lower value or consider
tweaking /proc/sys/kernel/perf_event_max_sample_rate.
In case user does not specify the frequency and the default value cross
the maximum, we display warning and set the frequency value to the
current maximum.
$ perf record ls
Lowering default frequency rate to 2000.
Please consider tweaking /proc/sys/kernel/perf_event_max_sample_rate.
Same messages are used for 'perf top'.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1383660887-1734-4-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-record.c | 15 +---------
tools/perf/builtin-top.c | 15 +---------
tools/perf/util/evlist.h | 1 +
tools/perf/util/record.c | 71 +++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 74 insertions(+), 28 deletions(-)
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 8b45fcead5f6..ea4c04f7437e 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -958,20 +958,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
if (perf_evlist__create_maps(evsel_list, &rec->opts.target) < 0)
usage_with_options(record_usage, record_options);
- if (rec->opts.user_interval != ULLONG_MAX)
- rec->opts.default_interval = rec->opts.user_interval;
- if (rec->opts.user_freq != UINT_MAX)
- rec->opts.freq = rec->opts.user_freq;
-
- /*
- * User specified count overrides default frequency.
- */
- if (rec->opts.default_interval)
- rec->opts.freq = 0;
- else if (rec->opts.freq) {
- rec->opts.default_interval = rec->opts.freq;
- } else {
- ui__error("frequency and count are zero, aborting\n");
+ if (perf_record_opts__config(&rec->opts)) {
err = -EINVAL;
goto out_free_fd;
}
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 21897f0ffcd3..9acca8856ccb 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -1209,20 +1209,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
if (top.delay_secs < 1)
top.delay_secs = 1;
- if (opts->user_interval != ULLONG_MAX)
- opts->default_interval = opts->user_interval;
- if (opts->user_freq != UINT_MAX)
- opts->freq = opts->user_freq;
-
- /*
- * User specified count overrides default frequency.
- */
- if (opts->default_interval)
- opts->freq = 0;
- else if (opts->freq) {
- opts->default_interval = opts->freq;
- } else {
- ui__error("frequency and count are zero, aborting\n");
+ if (perf_record_opts__config(opts)) {
status = -EINVAL;
goto out_delete_maps;
}
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 6e8acc9abe38..0617ce2a0679 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -99,6 +99,7 @@ void perf_evlist__set_id_pos(struct perf_evlist *evlist);
bool perf_can_sample_identifier(void);
void perf_evlist__config(struct perf_evlist *evlist,
struct perf_record_opts *opts);
+int perf_record_opts__config(struct perf_record_opts *opts);
int perf_evlist__prepare_workload(struct perf_evlist *evlist,
struct perf_target *target,
diff --git a/tools/perf/util/record.c b/tools/perf/util/record.c
index 18d73aa2f0f8..c8845b107f60 100644
--- a/tools/perf/util/record.c
+++ b/tools/perf/util/record.c
@@ -2,6 +2,8 @@
#include "evsel.h"
#include "cpumap.h"
#include "parse-events.h"
+#include "fs.h"
+#include "util.h"
typedef void (*setup_probe_fn_t)(struct perf_evsel *evsel);
@@ -106,3 +108,72 @@ void perf_evlist__config(struct perf_evlist *evlist,
perf_evlist__set_id_pos(evlist);
}
+
+static int get_max_rate(unsigned int *rate)
+{
+ char path[PATH_MAX];
+ const char *procfs = procfs__mountpoint();
+
+ if (!procfs)
+ return -1;
+
+ snprintf(path, PATH_MAX,
+ "%s/sys/kernel/perf_event_max_sample_rate", procfs);
+
+ return filename__read_int(path, (int *) rate);
+}
+
+static int perf_record_opts__config_freq(struct perf_record_opts *opts)
+{
+ bool user_freq = opts->user_freq != UINT_MAX;
+ unsigned int max_rate;
+
+ if (opts->user_interval != ULLONG_MAX)
+ opts->default_interval = opts->user_interval;
+ if (user_freq)
+ opts->freq = opts->user_freq;
+
+ /*
+ * User specified count overrides default frequency.
+ */
+ if (opts->default_interval)
+ opts->freq = 0;
+ else if (opts->freq) {
+ opts->default_interval = opts->freq;
+ } else {
+ pr_err("frequency and count are zero, aborting\n");
+ return -1;
+ }
+
+ if (get_max_rate(&max_rate))
+ return 0;
+
+ /*
+ * User specified frequency is over current maximum.
+ */
+ if (user_freq && (max_rate < opts->freq)) {
+ pr_err("Maximum frequency rate (%u) reached.\n"
+ "Please use -F freq option with lower value or consider\n"
+ "tweaking /proc/sys/kernel/perf_event_max_sample_rate.\n",
+ max_rate);
+ return -1;
+ }
+
+ /*
+ * Default frequency is over current maximum.
+ */
+ if (max_rate < opts->freq) {
+ pr_warning("Lowering default frequency rate to %u.\n"
+ "Please consider tweaking "
+ "/proc/sys/kernel/perf_event_max_sample_rate.\n",
+ max_rate);
+ opts->freq = max_rate;
+ }
+
+ return 0;
+}
+
+int perf_record_opts__config(struct perf_record_opts *opts)
+{
+ return perf_record_opts__config_freq(opts);
+}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* [PATCH 10/10] perf tools: Finish the removal of 'self' arguments
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (8 preceding siblings ...)
2013-11-05 20:10 ` [PATCH 09/10] perf tools: Check maximum frequency rate for record/top Arnaldo Carvalho de Melo
@ 2013-11-05 20:10 ` Arnaldo Carvalho de Melo
2013-11-06 5:31 ` [GIT PULL 00/10] perf/core improvements and fixes Ingo Molnar
10 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-05 20:10 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
Paul Mackerras, Peter Zijlstra, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
They convey no information, perhaps I was bitten by some snake at some
point, complete the detox by naming the last of those arguments more
sensibly.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-u1r0dnjoro08dgztiy2g3t2q@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
.../perf/scripts/python/Perf-Trace-Util/Context.c | 6 +-
tools/perf/ui/browser.h | 32 +++---
tools/perf/ui/browsers/hists.c | 2 +-
tools/perf/ui/browsers/map.c | 40 +++----
tools/perf/ui/browsers/map.h | 2 +-
tools/perf/ui/browsers/scripts.c | 8 +-
tools/perf/ui/stdio/hist.c | 14 +--
tools/perf/util/build-id.h | 3 +-
tools/perf/util/event.c | 6 +-
tools/perf/util/event.h | 3 +-
tools/perf/util/evlist.h | 2 +-
tools/perf/util/hist.h | 33 +++---
tools/perf/util/probe-finder.c | 113 +++++++++----------
tools/perf/util/probe-finder.h | 10 +-
tools/perf/util/pstack.h | 10 +-
tools/perf/util/session.c | 121 ++++++++++-----------
tools/perf/util/session.h | 27 ++---
tools/perf/util/sort.h | 2 +-
tools/perf/util/strfilter.c | 32 +++---
tools/perf/util/strfilter.h | 12 +-
tools/perf/util/thread.h | 10 +-
21 files changed, 242 insertions(+), 246 deletions(-)
diff --git a/tools/perf/scripts/python/Perf-Trace-Util/Context.c b/tools/perf/scripts/python/Perf-Trace-Util/Context.c
index 315067b8f552..fcd1dd667906 100644
--- a/tools/perf/scripts/python/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/python/Perf-Trace-Util/Context.c
@@ -25,7 +25,7 @@
PyMODINIT_FUNC initperf_trace_context(void);
-static PyObject *perf_trace_context_common_pc(PyObject *self, PyObject *args)
+static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args)
{
static struct scripting_context *scripting_context;
PyObject *context;
@@ -40,7 +40,7 @@ static PyObject *perf_trace_context_common_pc(PyObject *self, PyObject *args)
return Py_BuildValue("i", retval);
}
-static PyObject *perf_trace_context_common_flags(PyObject *self,
+static PyObject *perf_trace_context_common_flags(PyObject *obj,
PyObject *args)
{
static struct scripting_context *scripting_context;
@@ -56,7 +56,7 @@ static PyObject *perf_trace_context_common_flags(PyObject *self,
return Py_BuildValue("i", retval);
}
-static PyObject *perf_trace_context_common_lock_depth(PyObject *self,
+static PyObject *perf_trace_context_common_lock_depth(PyObject *obj,
PyObject *args)
{
static struct scripting_context *scripting_context;
diff --git a/tools/perf/ui/browser.h b/tools/perf/ui/browser.h
index 404ff66a3e36..7d45d2f53601 100644
--- a/tools/perf/ui/browser.h
+++ b/tools/perf/ui/browser.h
@@ -21,32 +21,32 @@ struct ui_browser {
void *priv;
const char *title;
char *helpline;
- unsigned int (*refresh)(struct ui_browser *self);
- void (*write)(struct ui_browser *self, void *entry, int row);
- void (*seek)(struct ui_browser *self, off_t offset, int whence);
- bool (*filter)(struct ui_browser *self, void *entry);
+ unsigned int (*refresh)(struct ui_browser *browser);
+ void (*write)(struct ui_browser *browser, void *entry, int row);
+ void (*seek)(struct ui_browser *browser, off_t offset, int whence);
+ bool (*filter)(struct ui_browser *browser, void *entry);
u32 nr_entries;
bool navkeypressed;
bool use_navkeypressed;
};
int ui_browser__set_color(struct ui_browser *browser, int color);
-void ui_browser__set_percent_color(struct ui_browser *self,
+void ui_browser__set_percent_color(struct ui_browser *browser,
double percent, bool current);
-bool ui_browser__is_current_entry(struct ui_browser *self, unsigned row);
-void ui_browser__refresh_dimensions(struct ui_browser *self);
-void ui_browser__reset_index(struct ui_browser *self);
+bool ui_browser__is_current_entry(struct ui_browser *browser, unsigned row);
+void ui_browser__refresh_dimensions(struct ui_browser *browser);
+void ui_browser__reset_index(struct ui_browser *browser);
-void ui_browser__gotorc(struct ui_browser *self, int y, int x);
+void ui_browser__gotorc(struct ui_browser *browser, int y, int x);
void ui_browser__write_graph(struct ui_browser *browser, int graph);
void __ui_browser__line_arrow(struct ui_browser *browser, unsigned int column,
u64 start, u64 end);
void __ui_browser__show_title(struct ui_browser *browser, const char *title);
void ui_browser__show_title(struct ui_browser *browser, const char *title);
-int ui_browser__show(struct ui_browser *self, const char *title,
+int ui_browser__show(struct ui_browser *browser, const char *title,
const char *helpline, ...);
-void ui_browser__hide(struct ui_browser *self);
-int ui_browser__refresh(struct ui_browser *self);
+void ui_browser__hide(struct ui_browser *browser);
+int ui_browser__refresh(struct ui_browser *browser);
int ui_browser__run(struct ui_browser *browser, int delay_secs);
void ui_browser__update_nr_entries(struct ui_browser *browser, u32 nr_entries);
void ui_browser__handle_resize(struct ui_browser *browser);
@@ -63,11 +63,11 @@ int ui_browser__input_window(const char *title, const char *text, char *input,
void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence);
unsigned int ui_browser__argv_refresh(struct ui_browser *browser);
-void ui_browser__rb_tree_seek(struct ui_browser *self, off_t offset, int whence);
-unsigned int ui_browser__rb_tree_refresh(struct ui_browser *self);
+void ui_browser__rb_tree_seek(struct ui_browser *browser, off_t offset, int whence);
+unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser);
-void ui_browser__list_head_seek(struct ui_browser *self, off_t offset, int whence);
-unsigned int ui_browser__list_head_refresh(struct ui_browser *self);
+void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int whence);
+unsigned int ui_browser__list_head_refresh(struct ui_browser *browser);
void ui_browser__init(void);
void annotate_browser__init(void);
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index a91b6b219412..16848bb4c418 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -1889,7 +1889,7 @@ out:
return key;
}
-static bool filter_group_entries(struct ui_browser *self __maybe_unused,
+static bool filter_group_entries(struct ui_browser *browser __maybe_unused,
void *entry)
{
struct perf_evsel *evsel = list_entry(entry, struct perf_evsel, node);
diff --git a/tools/perf/ui/browsers/map.c b/tools/perf/ui/browsers/map.c
index 95c7cfb8f2c6..b11639f33682 100644
--- a/tools/perf/ui/browsers/map.c
+++ b/tools/perf/ui/browsers/map.c
@@ -18,30 +18,30 @@ struct map_browser {
u8 addrlen;
};
-static void map_browser__write(struct ui_browser *self, void *nd, int row)
+static void map_browser__write(struct ui_browser *browser, void *nd, int row)
{
struct symbol *sym = rb_entry(nd, struct symbol, rb_node);
- struct map_browser *mb = container_of(self, struct map_browser, b);
- bool current_entry = ui_browser__is_current_entry(self, row);
+ struct map_browser *mb = container_of(browser, struct map_browser, b);
+ bool current_entry = ui_browser__is_current_entry(browser, row);
int width;
- ui_browser__set_percent_color(self, 0, current_entry);
+ ui_browser__set_percent_color(browser, 0, current_entry);
slsmg_printf("%*" PRIx64 " %*" PRIx64 " %c ",
mb->addrlen, sym->start, mb->addrlen, sym->end,
sym->binding == STB_GLOBAL ? 'g' :
sym->binding == STB_LOCAL ? 'l' : 'w');
- width = self->width - ((mb->addrlen * 2) + 4);
+ width = browser->width - ((mb->addrlen * 2) + 4);
if (width > 0)
slsmg_write_nstring(sym->name, width);
}
/* FIXME uber-kludgy, see comment on cmd_report... */
-static u32 *symbol__browser_index(struct symbol *self)
+static u32 *symbol__browser_index(struct symbol *browser)
{
- return ((void *)self) - sizeof(struct rb_node) - sizeof(u32);
+ return ((void *)browser) - sizeof(struct rb_node) - sizeof(u32);
}
-static int map_browser__search(struct map_browser *self)
+static int map_browser__search(struct map_browser *browser)
{
char target[512];
struct symbol *sym;
@@ -53,37 +53,37 @@ static int map_browser__search(struct map_browser *self)
if (target[0] == '0' && tolower(target[1]) == 'x') {
u64 addr = strtoull(target, NULL, 16);
- sym = map__find_symbol(self->map, addr, NULL);
+ sym = map__find_symbol(browser->map, addr, NULL);
} else
- sym = map__find_symbol_by_name(self->map, target, NULL);
+ sym = map__find_symbol_by_name(browser->map, target, NULL);
if (sym != NULL) {
u32 *idx = symbol__browser_index(sym);
- self->b.top = &sym->rb_node;
- self->b.index = self->b.top_idx = *idx;
+ browser->b.top = &sym->rb_node;
+ browser->b.index = browser->b.top_idx = *idx;
} else
ui_helpline__fpush("%s not found!", target);
return 0;
}
-static int map_browser__run(struct map_browser *self)
+static int map_browser__run(struct map_browser *browser)
{
int key;
- if (ui_browser__show(&self->b, self->map->dso->long_name,
+ if (ui_browser__show(&browser->b, browser->map->dso->long_name,
"Press <- or ESC to exit, %s / to search",
verbose ? "" : "restart with -v to use") < 0)
return -1;
while (1) {
- key = ui_browser__run(&self->b, 0);
+ key = ui_browser__run(&browser->b, 0);
switch (key) {
case '/':
if (verbose)
- map_browser__search(self);
+ map_browser__search(browser);
default:
break;
case K_LEFT:
@@ -94,20 +94,20 @@ static int map_browser__run(struct map_browser *self)
}
}
out:
- ui_browser__hide(&self->b);
+ ui_browser__hide(&browser->b);
return key;
}
-int map__browse(struct map *self)
+int map__browse(struct map *map)
{
struct map_browser mb = {
.b = {
- .entries = &self->dso->symbols[self->type],
+ .entries = &map->dso->symbols[map->type],
.refresh = ui_browser__rb_tree_refresh,
.seek = ui_browser__rb_tree_seek,
.write = map_browser__write,
},
- .map = self,
+ .map = map,
};
struct rb_node *nd;
char tmp[BITS_PER_LONG / 4];
diff --git a/tools/perf/ui/browsers/map.h b/tools/perf/ui/browsers/map.h
index df8581a43e17..2d58e4b3eb6f 100644
--- a/tools/perf/ui/browsers/map.h
+++ b/tools/perf/ui/browsers/map.h
@@ -2,5 +2,5 @@
#define _PERF_UI_MAP_BROWSER_H_ 1
struct map;
-int map__browse(struct map *self);
+int map__browse(struct map *map);
#endif /* _PERF_UI_MAP_BROWSER_H_ */
diff --git a/tools/perf/ui/browsers/scripts.c b/tools/perf/ui/browsers/scripts.c
index 12f009e61e94..d63c68ea02a8 100644
--- a/tools/perf/ui/browsers/scripts.c
+++ b/tools/perf/ui/browsers/scripts.c
@@ -84,22 +84,22 @@ static void script_browser__write(struct ui_browser *browser,
slsmg_write_nstring(sline->line, browser->width);
}
-static int script_browser__run(struct perf_script_browser *self)
+static int script_browser__run(struct perf_script_browser *browser)
{
int key;
- if (ui_browser__show(&self->b, self->script_name,
+ if (ui_browser__show(&browser->b, browser->script_name,
"Press <- or ESC to exit") < 0)
return -1;
while (1) {
- key = ui_browser__run(&self->b, 0);
+ key = ui_browser__run(&browser->b, 0);
/* We can add some special key handling here if needed */
break;
}
- ui_browser__hide(&self->b);
+ ui_browser__hide(&browser->b);
return key;
}
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 6c152686e837..c244cb524ef2 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -213,20 +213,19 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
return ret;
}
-static size_t __callchain__fprintf_flat(FILE *fp,
- struct callchain_node *self,
+static size_t __callchain__fprintf_flat(FILE *fp, struct callchain_node *node,
u64 total_samples)
{
struct callchain_list *chain;
size_t ret = 0;
- if (!self)
+ if (!node)
return 0;
- ret += __callchain__fprintf_flat(fp, self->parent, total_samples);
+ ret += __callchain__fprintf_flat(fp, node->parent, total_samples);
- list_for_each_entry(chain, &self->val, list) {
+ list_for_each_entry(chain, &node->val, list) {
if (chain->ip >= PERF_CONTEXT_MAX)
continue;
if (chain->ms.sym)
@@ -239,15 +238,14 @@ static size_t __callchain__fprintf_flat(FILE *fp,
return ret;
}
-static size_t callchain__fprintf_flat(FILE *fp, struct rb_root *self,
+static size_t callchain__fprintf_flat(FILE *fp, struct rb_root *tree,
u64 total_samples)
{
size_t ret = 0;
u32 entries_printed = 0;
- struct rb_node *rb_node;
struct callchain_node *chain;
+ struct rb_node *rb_node = rb_first(tree);
- rb_node = rb_first(self);
while (rb_node) {
double percent;
diff --git a/tools/perf/util/build-id.h b/tools/perf/util/build-id.h
index a811f5c62e18..929f28a7c14d 100644
--- a/tools/perf/util/build-id.h
+++ b/tools/perf/util/build-id.h
@@ -10,10 +10,9 @@ extern struct perf_tool build_id__mark_dso_hit_ops;
struct dso;
int build_id__sprintf(const u8 *build_id, int len, char *bf);
-char *dso__build_id_filename(struct dso *self, char *bf, size_t size);
+char *dso__build_id_filename(struct dso *dso, char *bf, size_t size);
int build_id__mark_dso_hit(struct perf_tool *tool, union perf_event *event,
struct perf_sample *sample, struct perf_evsel *evsel,
struct machine *machine);
-
#endif
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index c26b3539187b..ec9ae1114ed4 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -617,15 +617,15 @@ int perf_event__process(struct perf_tool *tool __maybe_unused,
return machine__process_event(machine, event, sample);
}
-void thread__find_addr_map(struct thread *self,
+void thread__find_addr_map(struct thread *thread,
struct machine *machine, u8 cpumode,
enum map_type type, u64 addr,
struct addr_location *al)
{
- struct map_groups *mg = &self->mg;
+ struct map_groups *mg = &thread->mg;
bool load_map = false;
- al->thread = self;
+ al->thread = thread;
al->addr = addr;
al->cpumode = cpumode;
al->filtered = false;
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 752709ccfb00..f8d70f3003ab 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -251,7 +251,8 @@ int perf_event__process(struct perf_tool *tool,
struct machine *machine);
struct addr_location;
-int perf_event__preprocess_sample(const union perf_event *self,
+
+int perf_event__preprocess_sample(const union perf_event *event,
struct machine *machine,
struct addr_location *al,
struct perf_sample *sample);
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 0617ce2a0679..e99eaed92682 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -88,7 +88,7 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id);
struct perf_sample_id *perf_evlist__id2sid(struct perf_evlist *evlist, u64 id);
-union perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx);
+union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx);
void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx);
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 307f1c742563..b621347a1585 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -84,7 +84,7 @@ struct hists {
u16 col_len[HISTC_NR_COLS];
};
-struct hist_entry *__hists__add_entry(struct hists *self,
+struct hist_entry *__hists__add_entry(struct hists *hists,
struct addr_location *al,
struct symbol *parent,
struct branch_info *bi,
@@ -93,34 +93,34 @@ struct hist_entry *__hists__add_entry(struct hists *self,
int64_t hist_entry__cmp(struct hist_entry *left, struct hist_entry *right);
int64_t hist_entry__collapse(struct hist_entry *left, struct hist_entry *right);
int hist_entry__transaction_len(void);
-int hist_entry__sort_snprintf(struct hist_entry *self, char *bf, size_t size,
+int hist_entry__sort_snprintf(struct hist_entry *he, char *bf, size_t size,
struct hists *hists);
void hist_entry__free(struct hist_entry *);
-void hists__output_resort(struct hists *self);
-void hists__collapse_resort(struct hists *self, struct ui_progress *prog);
+void hists__output_resort(struct hists *hists);
+void hists__collapse_resort(struct hists *hists, struct ui_progress *prog);
void hists__decay_entries(struct hists *hists, bool zap_user, bool zap_kernel);
void hists__output_recalc_col_len(struct hists *hists, int max_rows);
void hists__inc_nr_entries(struct hists *hists, struct hist_entry *h);
-void hists__inc_nr_events(struct hists *self, u32 type);
+void hists__inc_nr_events(struct hists *hists, u32 type);
void events_stats__inc(struct events_stats *stats, u32 type);
size_t events_stats__fprintf(struct events_stats *stats, FILE *fp);
-size_t hists__fprintf(struct hists *self, bool show_header, int max_rows,
+size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
int max_cols, float min_pcnt, FILE *fp);
-int hist_entry__inc_addr_samples(struct hist_entry *self, int evidx, u64 addr);
-int hist_entry__annotate(struct hist_entry *self, size_t privsize);
+int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr);
+int hist_entry__annotate(struct hist_entry *he, size_t privsize);
void hists__filter_by_dso(struct hists *hists);
void hists__filter_by_thread(struct hists *hists);
void hists__filter_by_symbol(struct hists *hists);
-u16 hists__col_len(struct hists *self, enum hist_column col);
-void hists__set_col_len(struct hists *self, enum hist_column col, u16 len);
-bool hists__new_col_len(struct hists *self, enum hist_column col, u16 len);
+u16 hists__col_len(struct hists *hists, enum hist_column col);
+void hists__set_col_len(struct hists *hists, enum hist_column col, u16 len);
+bool hists__new_col_len(struct hists *hists, enum hist_column col, u16 len);
void hists__reset_col_len(struct hists *hists);
void hists__calc_col_len(struct hists *hists, struct hist_entry *he);
@@ -210,12 +210,9 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist __maybe_unused,
return 0;
}
-static inline int hist_entry__tui_annotate(struct hist_entry *self
- __maybe_unused,
- struct perf_evsel *evsel
- __maybe_unused,
- struct hist_browser_timer *hbt
- __maybe_unused)
+static inline int hist_entry__tui_annotate(struct hist_entry *he __maybe_unused,
+ struct perf_evsel *evsel __maybe_unused,
+ struct hist_browser_timer *hbt __maybe_unused)
{
return 0;
}
@@ -230,5 +227,5 @@ static inline int script_browse(const char *script_opt __maybe_unused)
#define K_SWITCH_INPUT_DATA -3000
#endif
-unsigned int hists__sort_list_width(struct hists *self);
+unsigned int hists__sort_list_width(struct hists *hists);
#endif /* __PERF_HIST_H */
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 2200dad4c3f4..ffb657ffd327 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -115,7 +115,7 @@ static const Dwfl_Callbacks offline_callbacks = {
};
/* Get a Dwarf from offline image */
-static int debuginfo__init_offline_dwarf(struct debuginfo *self,
+static int debuginfo__init_offline_dwarf(struct debuginfo *dbg,
const char *path)
{
int fd;
@@ -124,25 +124,25 @@ static int debuginfo__init_offline_dwarf(struct debuginfo *self,
if (fd < 0)
return fd;
- self->dwfl = dwfl_begin(&offline_callbacks);
- if (!self->dwfl)
+ dbg->dwfl = dwfl_begin(&offline_callbacks);
+ if (!dbg->dwfl)
goto error;
- self->mod = dwfl_report_offline(self->dwfl, "", "", fd);
- if (!self->mod)
+ dbg->mod = dwfl_report_offline(dbg->dwfl, "", "", fd);
+ if (!dbg->mod)
goto error;
- self->dbg = dwfl_module_getdwarf(self->mod, &self->bias);
- if (!self->dbg)
+ dbg->dbg = dwfl_module_getdwarf(dbg->mod, &dbg->bias);
+ if (!dbg->dbg)
goto error;
return 0;
error:
- if (self->dwfl)
- dwfl_end(self->dwfl);
+ if (dbg->dwfl)
+ dwfl_end(dbg->dwfl);
else
close(fd);
- memset(self, 0, sizeof(*self));
+ memset(dbg, 0, sizeof(*dbg));
return -ENOENT;
}
@@ -180,24 +180,24 @@ static const Dwfl_Callbacks kernel_callbacks = {
};
/* Get a Dwarf from live kernel image */
-static int debuginfo__init_online_kernel_dwarf(struct debuginfo *self,
+static int debuginfo__init_online_kernel_dwarf(struct debuginfo *dbg,
Dwarf_Addr addr)
{
- self->dwfl = dwfl_begin(&kernel_callbacks);
- if (!self->dwfl)
+ dbg->dwfl = dwfl_begin(&kernel_callbacks);
+ if (!dbg->dwfl)
return -EINVAL;
/* Load the kernel dwarves: Don't care the result here */
- dwfl_linux_kernel_report_kernel(self->dwfl);
- dwfl_linux_kernel_report_modules(self->dwfl);
+ dwfl_linux_kernel_report_kernel(dbg->dwfl);
+ dwfl_linux_kernel_report_modules(dbg->dwfl);
- self->dbg = dwfl_addrdwarf(self->dwfl, addr, &self->bias);
+ dbg->dbg = dwfl_addrdwarf(dbg->dwfl, addr, &dbg->bias);
/* Here, check whether we could get a real dwarf */
- if (!self->dbg) {
+ if (!dbg->dbg) {
pr_debug("Failed to find kernel dwarf at %lx\n",
(unsigned long)addr);
- dwfl_end(self->dwfl);
- memset(self, 0, sizeof(*self));
+ dwfl_end(dbg->dwfl);
+ memset(dbg, 0, sizeof(*dbg));
return -ENOENT;
}
@@ -205,7 +205,7 @@ static int debuginfo__init_online_kernel_dwarf(struct debuginfo *self,
}
#else
/* With older elfutils, this just support kernel module... */
-static int debuginfo__init_online_kernel_dwarf(struct debuginfo *self,
+static int debuginfo__init_online_kernel_dwarf(struct debuginfo *dbg,
Dwarf_Addr addr __maybe_unused)
{
const char *path = kernel_get_module_path("kernel");
@@ -216,44 +216,45 @@ static int debuginfo__init_online_kernel_dwarf(struct debuginfo *self,
}
pr_debug2("Use file %s for debuginfo\n", path);
- return debuginfo__init_offline_dwarf(self, path);
+ return debuginfo__init_offline_dwarf(dbg, path);
}
#endif
struct debuginfo *debuginfo__new(const char *path)
{
- struct debuginfo *self = zalloc(sizeof(struct debuginfo));
- if (!self)
+ struct debuginfo *dbg = zalloc(sizeof(*dbg));
+ if (!dbg)
return NULL;
- if (debuginfo__init_offline_dwarf(self, path) < 0) {
- free(self);
- self = NULL;
+ if (debuginfo__init_offline_dwarf(dbg, path) < 0) {
+ free(dbg);
+ dbg = NULL;
}
- return self;
+ return dbg;
}
struct debuginfo *debuginfo__new_online_kernel(unsigned long addr)
{
- struct debuginfo *self = zalloc(sizeof(struct debuginfo));
- if (!self)
+ struct debuginfo *dbg = zalloc(sizeof(*dbg));
+
+ if (!dbg)
return NULL;
- if (debuginfo__init_online_kernel_dwarf(self, (Dwarf_Addr)addr) < 0) {
- free(self);
- self = NULL;
+ if (debuginfo__init_online_kernel_dwarf(dbg, (Dwarf_Addr)addr) < 0) {
+ free(dbg);
+ dbg = NULL;
}
- return self;
+ return dbg;
}
-void debuginfo__delete(struct debuginfo *self)
+void debuginfo__delete(struct debuginfo *dbg)
{
- if (self) {
- if (self->dwfl)
- dwfl_end(self->dwfl);
- free(self);
+ if (dbg) {
+ if (dbg->dwfl)
+ dwfl_end(dbg->dwfl);
+ free(dbg);
}
}
@@ -1083,7 +1084,7 @@ static int pubname_search_cb(Dwarf *dbg, Dwarf_Global *gl, void *data)
}
/* Find probe points from debuginfo */
-static int debuginfo__find_probes(struct debuginfo *self,
+static int debuginfo__find_probes(struct debuginfo *dbg,
struct probe_finder *pf)
{
struct perf_probe_point *pp = &pf->pev->point;
@@ -1094,7 +1095,7 @@ static int debuginfo__find_probes(struct debuginfo *self,
#if _ELFUTILS_PREREQ(0, 142)
/* Get the call frame information from this dwarf */
- pf->cfi = dwarf_getcfi(self->dbg);
+ pf->cfi = dwarf_getcfi(dbg->dbg);
#endif
off = 0;
@@ -1113,7 +1114,7 @@ static int debuginfo__find_probes(struct debuginfo *self,
.data = pf,
};
- dwarf_getpubnames(self->dbg, pubname_search_cb,
+ dwarf_getpubnames(dbg->dbg, pubname_search_cb,
&pubname_param, 0);
if (pubname_param.found) {
ret = probe_point_search_cb(&pf->sp_die, &probe_param);
@@ -1123,9 +1124,9 @@ static int debuginfo__find_probes(struct debuginfo *self,
}
/* Loop on CUs (Compilation Unit) */
- while (!dwarf_nextcu(self->dbg, off, &noff, &cuhl, NULL, NULL, NULL)) {
+ while (!dwarf_nextcu(dbg->dbg, off, &noff, &cuhl, NULL, NULL, NULL)) {
/* Get the DIE(Debugging Information Entry) of this CU */
- diep = dwarf_offdie(self->dbg, off + cuhl, &pf->cu_die);
+ diep = dwarf_offdie(dbg->dbg, off + cuhl, &pf->cu_die);
if (!diep)
continue;
@@ -1281,13 +1282,13 @@ end:
}
/* Find probe_trace_events specified by perf_probe_event from debuginfo */
-int debuginfo__find_trace_events(struct debuginfo *self,
+int debuginfo__find_trace_events(struct debuginfo *dbg,
struct perf_probe_event *pev,
struct probe_trace_event **tevs, int max_tevs)
{
struct trace_event_finder tf = {
.pf = {.pev = pev, .callback = add_probe_trace_event},
- .mod = self->mod, .max_tevs = max_tevs};
+ .mod = dbg->mod, .max_tevs = max_tevs};
int ret;
/* Allocate result tevs array */
@@ -1298,7 +1299,7 @@ int debuginfo__find_trace_events(struct debuginfo *self,
tf.tevs = *tevs;
tf.ntevs = 0;
- ret = debuginfo__find_probes(self, &tf.pf);
+ ret = debuginfo__find_probes(dbg, &tf.pf);
if (ret < 0) {
free(*tevs);
*tevs = NULL;
@@ -1389,14 +1390,14 @@ out:
}
/* Find available variables at given probe point */
-int debuginfo__find_available_vars_at(struct debuginfo *self,
+int debuginfo__find_available_vars_at(struct debuginfo *dbg,
struct perf_probe_event *pev,
struct variable_list **vls,
int max_vls, bool externs)
{
struct available_var_finder af = {
.pf = {.pev = pev, .callback = add_available_vars},
- .mod = self->mod,
+ .mod = dbg->mod,
.max_vls = max_vls, .externs = externs};
int ret;
@@ -1408,7 +1409,7 @@ int debuginfo__find_available_vars_at(struct debuginfo *self,
af.vls = *vls;
af.nvls = 0;
- ret = debuginfo__find_probes(self, &af.pf);
+ ret = debuginfo__find_probes(dbg, &af.pf);
if (ret < 0) {
/* Free vlist for error */
while (af.nvls--) {
@@ -1426,7 +1427,7 @@ int debuginfo__find_available_vars_at(struct debuginfo *self,
}
/* Reverse search */
-int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
+int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr,
struct perf_probe_point *ppt)
{
Dwarf_Die cudie, spdie, indie;
@@ -1435,10 +1436,10 @@ int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
int baseline = 0, lineno = 0, ret = 0;
/* Adjust address with bias */
- addr += self->bias;
+ addr += dbg->bias;
/* Find cu die */
- if (!dwarf_addrdie(self->dbg, (Dwarf_Addr)addr - self->bias, &cudie)) {
+ if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr - dbg->bias, &cudie)) {
pr_warning("Failed to find debug information for address %lx\n",
addr);
ret = -EINVAL;
@@ -1639,7 +1640,7 @@ static int find_line_range_by_func(struct line_finder *lf)
return param.retval;
}
-int debuginfo__find_line_range(struct debuginfo *self, struct line_range *lr)
+int debuginfo__find_line_range(struct debuginfo *dbg, struct line_range *lr)
{
struct line_finder lf = {.lr = lr, .found = 0};
int ret = 0;
@@ -1656,7 +1657,7 @@ int debuginfo__find_line_range(struct debuginfo *self, struct line_range *lr)
struct dwarf_callback_param line_range_param = {
.data = (void *)&lf, .retval = 0};
- dwarf_getpubnames(self->dbg, pubname_search_cb,
+ dwarf_getpubnames(dbg->dbg, pubname_search_cb,
&pubname_param, 0);
if (pubname_param.found) {
line_range_search_cb(&lf.sp_die, &line_range_param);
@@ -1667,12 +1668,12 @@ int debuginfo__find_line_range(struct debuginfo *self, struct line_range *lr)
/* Loop on CUs (Compilation Unit) */
while (!lf.found && ret >= 0) {
- if (dwarf_nextcu(self->dbg, off, &noff, &cuhl,
+ if (dwarf_nextcu(dbg->dbg, off, &noff, &cuhl,
NULL, NULL, NULL) != 0)
break;
/* Get the DIE(Debugging Information Entry) of this CU */
- diep = dwarf_offdie(self->dbg, off + cuhl, &lf.cu_die);
+ diep = dwarf_offdie(dbg->dbg, off + cuhl, &lf.cu_die);
if (!diep)
continue;
diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
index d6dab0e0a937..ffc33cdd25cc 100644
--- a/tools/perf/util/probe-finder.h
+++ b/tools/perf/util/probe-finder.h
@@ -31,25 +31,25 @@ struct debuginfo {
extern struct debuginfo *debuginfo__new(const char *path);
extern struct debuginfo *debuginfo__new_online_kernel(unsigned long addr);
-extern void debuginfo__delete(struct debuginfo *self);
+extern void debuginfo__delete(struct debuginfo *dbg);
/* Find probe_trace_events specified by perf_probe_event from debuginfo */
-extern int debuginfo__find_trace_events(struct debuginfo *self,
+extern int debuginfo__find_trace_events(struct debuginfo *dbg,
struct perf_probe_event *pev,
struct probe_trace_event **tevs,
int max_tevs);
/* Find a perf_probe_point from debuginfo */
-extern int debuginfo__find_probe_point(struct debuginfo *self,
+extern int debuginfo__find_probe_point(struct debuginfo *dbg,
unsigned long addr,
struct perf_probe_point *ppt);
/* Find a line range */
-extern int debuginfo__find_line_range(struct debuginfo *self,
+extern int debuginfo__find_line_range(struct debuginfo *dbg,
struct line_range *lr);
/* Find available variables */
-extern int debuginfo__find_available_vars_at(struct debuginfo *self,
+extern int debuginfo__find_available_vars_at(struct debuginfo *dbg,
struct perf_probe_event *pev,
struct variable_list **vls,
int max_points, bool externs);
diff --git a/tools/perf/util/pstack.h b/tools/perf/util/pstack.h
index 4cedea59f518..c3cb6584d527 100644
--- a/tools/perf/util/pstack.h
+++ b/tools/perf/util/pstack.h
@@ -5,10 +5,10 @@
struct pstack;
struct pstack *pstack__new(unsigned short max_nr_entries);
-void pstack__delete(struct pstack *self);
-bool pstack__empty(const struct pstack *self);
-void pstack__remove(struct pstack *self, void *key);
-void pstack__push(struct pstack *self, void *key);
-void *pstack__pop(struct pstack *self);
+void pstack__delete(struct pstack *pstack);
+bool pstack__empty(const struct pstack *pstack);
+void pstack__remove(struct pstack *pstack, void *key);
+void pstack__push(struct pstack *pstack, void *key);
+void *pstack__pop(struct pstack *pstack);
#endif /* _PERF_PSTACK_ */
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 3c1b30103d54..0ce46943d627 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -16,11 +16,11 @@
#include "perf_regs.h"
#include "vdso.h"
-static int perf_session__open(struct perf_session *self)
+static int perf_session__open(struct perf_session *session)
{
- struct perf_data_file *file = self->file;
+ struct perf_data_file *file = session->file;
- if (perf_session__read_header(self) < 0) {
+ if (perf_session__read_header(session) < 0) {
pr_err("incompatible file format (rerun with -v to learn more)");
return -1;
}
@@ -28,17 +28,17 @@ static int perf_session__open(struct perf_session *self)
if (perf_data_file__is_pipe(file))
return 0;
- if (!perf_evlist__valid_sample_type(self->evlist)) {
+ if (!perf_evlist__valid_sample_type(session->evlist)) {
pr_err("non matching sample_type");
return -1;
}
- if (!perf_evlist__valid_sample_id_all(self->evlist)) {
+ if (!perf_evlist__valid_sample_id_all(session->evlist)) {
pr_err("non matching sample_id_all");
return -1;
}
- if (!perf_evlist__valid_read_format(self->evlist)) {
+ if (!perf_evlist__valid_read_format(session->evlist)) {
pr_err("non matching read_format");
return -1;
}
@@ -53,46 +53,45 @@ void perf_session__set_id_hdr_size(struct perf_session *session)
machines__set_id_hdr_size(&session->machines, id_hdr_size);
}
-int perf_session__create_kernel_maps(struct perf_session *self)
+int perf_session__create_kernel_maps(struct perf_session *session)
{
- int ret = machine__create_kernel_maps(&self->machines.host);
+ int ret = machine__create_kernel_maps(&session->machines.host);
if (ret >= 0)
- ret = machines__create_guest_kernel_maps(&self->machines);
+ ret = machines__create_guest_kernel_maps(&session->machines);
return ret;
}
-static void perf_session__destroy_kernel_maps(struct perf_session *self)
+static void perf_session__destroy_kernel_maps(struct perf_session *session)
{
- machines__destroy_kernel_maps(&self->machines);
+ machines__destroy_kernel_maps(&session->machines);
}
struct perf_session *perf_session__new(struct perf_data_file *file,
bool repipe, struct perf_tool *tool)
{
- struct perf_session *self;
+ struct perf_session *session = zalloc(sizeof(*session));
- self = zalloc(sizeof(*self));
- if (!self)
+ if (!session)
goto out;
- self->repipe = repipe;
- INIT_LIST_HEAD(&self->ordered_samples.samples);
- INIT_LIST_HEAD(&self->ordered_samples.sample_cache);
- INIT_LIST_HEAD(&self->ordered_samples.to_free);
- machines__init(&self->machines);
+ session->repipe = repipe;
+ INIT_LIST_HEAD(&session->ordered_samples.samples);
+ INIT_LIST_HEAD(&session->ordered_samples.sample_cache);
+ INIT_LIST_HEAD(&session->ordered_samples.to_free);
+ machines__init(&session->machines);
if (file) {
if (perf_data_file__open(file))
goto out_delete;
- self->file = file;
+ session->file = file;
if (perf_data_file__is_read(file)) {
- if (perf_session__open(self) < 0)
+ if (perf_session__open(session) < 0)
goto out_close;
- perf_session__set_id_hdr_size(self);
+ perf_session__set_id_hdr_size(session);
}
}
@@ -101,22 +100,22 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
* In O_RDONLY mode this will be performed when reading the
* kernel MMAP event, in perf_event__process_mmap().
*/
- if (perf_session__create_kernel_maps(self) < 0)
+ if (perf_session__create_kernel_maps(session) < 0)
goto out_delete;
}
if (tool && tool->ordering_requires_timestamps &&
- tool->ordered_samples && !perf_evlist__sample_id_all(self->evlist)) {
+ tool->ordered_samples && !perf_evlist__sample_id_all(session->evlist)) {
dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
tool->ordered_samples = false;
}
- return self;
+ return session;
out_close:
perf_data_file__close(file);
out_delete:
- perf_session__delete(self);
+ perf_session__delete(session);
out:
return NULL;
}
@@ -147,16 +146,16 @@ static void perf_session_env__delete(struct perf_session_env *env)
free(env->pmu_mappings);
}
-void perf_session__delete(struct perf_session *self)
+void perf_session__delete(struct perf_session *session)
{
- perf_session__destroy_kernel_maps(self);
- perf_session__delete_dead_threads(self);
- perf_session__delete_threads(self);
- perf_session_env__delete(&self->header.env);
- machines__exit(&self->machines);
- if (self->file)
- perf_data_file__close(self->file);
- free(self);
+ perf_session__destroy_kernel_maps(session);
+ perf_session__delete_dead_threads(session);
+ perf_session__delete_threads(session);
+ perf_session_env__delete(&session->header.env);
+ machines__exit(&session->machines);
+ if (session->file)
+ perf_data_file__close(session->file);
+ free(session);
vdso__exit();
}
@@ -1084,11 +1083,11 @@ static int perf_session__process_event(struct perf_session *session,
file_offset);
}
-void perf_event_header__bswap(struct perf_event_header *self)
+void perf_event_header__bswap(struct perf_event_header *hdr)
{
- self->type = bswap_32(self->type);
- self->misc = bswap_16(self->misc);
- self->size = bswap_16(self->size);
+ hdr->type = bswap_32(hdr->type);
+ hdr->misc = bswap_16(hdr->misc);
+ hdr->size = bswap_16(hdr->size);
}
struct thread *perf_session__findnew(struct perf_session *session, pid_t pid)
@@ -1096,9 +1095,9 @@ struct thread *perf_session__findnew(struct perf_session *session, pid_t pid)
return machine__findnew_thread(&session->machines.host, 0, pid);
}
-static struct thread *perf_session__register_idle_thread(struct perf_session *self)
+static struct thread *perf_session__register_idle_thread(struct perf_session *session)
{
- struct thread *thread = perf_session__findnew(self, 0);
+ struct thread *thread = perf_session__findnew(session, 0);
if (thread == NULL || thread__set_comm(thread, "swapper", 0)) {
pr_err("problem inserting idle task.\n");
@@ -1150,10 +1149,10 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
volatile int session_done;
-static int __perf_session__process_pipe_events(struct perf_session *self,
+static int __perf_session__process_pipe_events(struct perf_session *session,
struct perf_tool *tool)
{
- int fd = perf_data_file__fd(self->file);
+ int fd = perf_data_file__fd(session->file);
union perf_event *event;
uint32_t size, cur_size = 0;
void *buf = NULL;
@@ -1181,7 +1180,7 @@ more:
goto out_err;
}
- if (self->header.needs_swap)
+ if (session->header.needs_swap)
perf_event_header__bswap(&event->header);
size = event->header.size;
@@ -1216,7 +1215,7 @@ more:
}
}
- if ((skip = perf_session__process_event(self, event, tool, head)) < 0) {
+ if ((skip = perf_session__process_event(session, event, tool, head)) < 0) {
pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
head, event->header.size, event->header.type);
err = -EINVAL;
@@ -1232,12 +1231,12 @@ more:
goto more;
done:
/* do the final flush for ordered samples */
- self->ordered_samples.next_flush = ULLONG_MAX;
- err = flush_sample_queue(self, tool);
+ session->ordered_samples.next_flush = ULLONG_MAX;
+ err = flush_sample_queue(session, tool);
out_err:
free(buf);
- perf_session__warn_about_errors(self, tool);
- perf_session_free_sample_buffers(self);
+ perf_session__warn_about_errors(session, tool);
+ perf_session_free_sample_buffers(session);
return err;
}
@@ -1377,22 +1376,22 @@ out_err:
return err;
}
-int perf_session__process_events(struct perf_session *self,
+int perf_session__process_events(struct perf_session *session,
struct perf_tool *tool)
{
- u64 size = perf_data_file__size(self->file);
+ u64 size = perf_data_file__size(session->file);
int err;
- if (perf_session__register_idle_thread(self) == NULL)
+ if (perf_session__register_idle_thread(session) == NULL)
return -ENOMEM;
- if (!perf_data_file__is_pipe(self->file))
- err = __perf_session__process_events(self,
- self->header.data_offset,
- self->header.data_size,
+ if (!perf_data_file__is_pipe(session->file))
+ err = __perf_session__process_events(session,
+ session->header.data_offset,
+ session->header.data_size,
size, tool);
else
- err = __perf_session__process_pipe_events(self, tool);
+ err = __perf_session__process_pipe_events(session, tool);
return err;
}
@@ -1441,15 +1440,15 @@ int maps__set_kallsyms_ref_reloc_sym(struct map **maps,
return 0;
}
-size_t perf_session__fprintf_dsos(struct perf_session *self, FILE *fp)
+size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp)
{
- return machines__fprintf_dsos(&self->machines, fp);
+ return machines__fprintf_dsos(&session->machines, fp);
}
-size_t perf_session__fprintf_dsos_buildid(struct perf_session *self, FILE *fp,
+size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp,
bool (skip)(struct dso *dso, int parm), int parm)
{
- return machines__fprintf_dsos_buildid(&self->machines, fp, skip, parm);
+ return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm);
}
size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp)
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index 27c74d38b868..50f640958f0f 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -51,12 +51,12 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
bool repipe, struct perf_tool *tool);
void perf_session__delete(struct perf_session *session);
-void perf_event_header__bswap(struct perf_event_header *self);
+void perf_event_header__bswap(struct perf_event_header *hdr);
-int __perf_session__process_events(struct perf_session *self,
+int __perf_session__process_events(struct perf_session *session,
u64 data_offset, u64 data_size, u64 size,
struct perf_tool *tool);
-int perf_session__process_events(struct perf_session *self,
+int perf_session__process_events(struct perf_session *session,
struct perf_tool *tool);
int perf_session_queue_event(struct perf_session *s, union perf_event *event,
@@ -64,37 +64,38 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
void perf_tool__fill_defaults(struct perf_tool *tool);
-int perf_session__resolve_callchain(struct perf_session *self, struct perf_evsel *evsel,
+int perf_session__resolve_callchain(struct perf_session *session,
+ struct perf_evsel *evsel,
struct thread *thread,
struct ip_callchain *chain,
struct symbol **parent);
-bool perf_session__has_traces(struct perf_session *self, const char *msg);
+bool perf_session__has_traces(struct perf_session *session, const char *msg);
void mem_bswap_64(void *src, int byte_size);
void mem_bswap_32(void *src, int byte_size);
void perf_event__attr_swap(struct perf_event_attr *attr);
-int perf_session__create_kernel_maps(struct perf_session *self);
+int perf_session__create_kernel_maps(struct perf_session *session);
void perf_session__set_id_hdr_size(struct perf_session *session);
static inline
-struct machine *perf_session__find_machine(struct perf_session *self, pid_t pid)
+struct machine *perf_session__find_machine(struct perf_session *session, pid_t pid)
{
- return machines__find(&self->machines, pid);
+ return machines__find(&session->machines, pid);
}
static inline
-struct machine *perf_session__findnew_machine(struct perf_session *self, pid_t pid)
+struct machine *perf_session__findnew_machine(struct perf_session *session, pid_t pid)
{
- return machines__findnew(&self->machines, pid);
+ return machines__findnew(&session->machines, pid);
}
-struct thread *perf_session__findnew(struct perf_session *self, pid_t pid);
-size_t perf_session__fprintf(struct perf_session *self, FILE *fp);
+struct thread *perf_session__findnew(struct perf_session *session, pid_t pid);
+size_t perf_session__fprintf(struct perf_session *session, FILE *fp);
-size_t perf_session__fprintf_dsos(struct perf_session *self, FILE *fp);
+size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp);
size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp,
bool (fn)(struct dso *dso, int parm), int parm);
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index f4e16f359d64..f4cc147e0220 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -180,7 +180,7 @@ struct sort_entry {
int64_t (*se_cmp)(struct hist_entry *, struct hist_entry *);
int64_t (*se_collapse)(struct hist_entry *, struct hist_entry *);
- int (*se_snprintf)(struct hist_entry *self, char *bf, size_t size,
+ int (*se_snprintf)(struct hist_entry *he, char *bf, size_t size,
unsigned int width);
u8 se_width_idx;
bool elide;
diff --git a/tools/perf/util/strfilter.c b/tools/perf/util/strfilter.c
index 67e4a0082822..3edd0538161f 100644
--- a/tools/perf/util/strfilter.c
+++ b/tools/perf/util/strfilter.c
@@ -62,15 +62,15 @@ static struct strfilter_node *strfilter_node__alloc(const char *op,
struct strfilter_node *l,
struct strfilter_node *r)
{
- struct strfilter_node *ret = zalloc(sizeof(struct strfilter_node));
+ struct strfilter_node *node = zalloc(sizeof(*node));
- if (ret) {
- ret->p = op;
- ret->l = l;
- ret->r = r;
+ if (node) {
+ node->p = op;
+ node->l = l;
+ node->r = r;
}
- return ret;
+ return node;
}
static struct strfilter_node *strfilter_node__new(const char *s,
@@ -154,20 +154,20 @@ error:
*/
struct strfilter *strfilter__new(const char *rules, const char **err)
{
- struct strfilter *ret = zalloc(sizeof(struct strfilter));
+ struct strfilter *filter = zalloc(sizeof(*filter));
const char *ep = NULL;
- if (ret)
- ret->root = strfilter_node__new(rules, &ep);
+ if (filter)
+ filter->root = strfilter_node__new(rules, &ep);
- if (!ret || !ret->root || *ep != '\0') {
+ if (!filter || !filter->root || *ep != '\0') {
if (err)
*err = ep;
- strfilter__delete(ret);
- ret = NULL;
+ strfilter__delete(filter);
+ filter = NULL;
}
- return ret;
+ return filter;
}
static bool strfilter_node__compare(struct strfilter_node *node,
@@ -191,9 +191,9 @@ static bool strfilter_node__compare(struct strfilter_node *node,
}
/* Return true if STR matches the filter rules */
-bool strfilter__compare(struct strfilter *node, const char *str)
+bool strfilter__compare(struct strfilter *filter, const char *str)
{
- if (!node)
+ if (!filter)
return false;
- return strfilter_node__compare(node->root, str);
+ return strfilter_node__compare(filter->root, str);
}
diff --git a/tools/perf/util/strfilter.h b/tools/perf/util/strfilter.h
index 00f58a7506de..fe611f3c9e39 100644
--- a/tools/perf/util/strfilter.h
+++ b/tools/perf/util/strfilter.h
@@ -30,19 +30,19 @@ struct strfilter *strfilter__new(const char *rules, const char **err);
/**
* strfilter__compare - compare given string and a string filter
- * @self: String filter
+ * @filter: String filter
* @str: target string
*
- * Compare @str and @self. Return true if the str match the rule
+ * Compare @str and @filter. Return true if the str match the rule
*/
-bool strfilter__compare(struct strfilter *self, const char *str);
+bool strfilter__compare(struct strfilter *filter, const char *str);
/**
* strfilter__delete - delete a string filter
- * @self: String filter to delete
+ * @filter: String filter to delete
*
- * Delete @self.
+ * Delete @filter.
*/
-void strfilter__delete(struct strfilter *self);
+void strfilter__delete(struct strfilter *filter);
#endif
diff --git a/tools/perf/util/thread.h b/tools/perf/util/thread.h
index 373c055989ed..897c1b2a750a 100644
--- a/tools/perf/util/thread.h
+++ b/tools/perf/util/thread.h
@@ -29,24 +29,24 @@ struct machine;
struct comm;
struct thread *thread__new(pid_t pid, pid_t tid);
-void thread__delete(struct thread *self);
+void thread__delete(struct thread *thread);
static inline void thread__exited(struct thread *thread)
{
thread->dead = true;
}
int thread__set_comm(struct thread *thread, const char *comm, u64 timestamp);
-int thread__comm_len(struct thread *self);
+int thread__comm_len(struct thread *thread);
struct comm *thread__comm(const struct thread *thread);
const char *thread__comm_str(const struct thread *thread);
-void thread__insert_map(struct thread *self, struct map *map);
+void thread__insert_map(struct thread *thread, struct map *map);
int thread__fork(struct thread *thread, struct thread *parent, u64 timestamp);
size_t thread__fprintf(struct thread *thread, FILE *fp);
-static inline struct map *thread__find_map(struct thread *self,
+static inline struct map *thread__find_map(struct thread *thread,
enum map_type type, u64 addr)
{
- return self ? map_groups__find(&self->mg, type, addr) : NULL;
+ return thread ? map_groups__find(&thread->mg, type, addr) : NULL;
}
void thread__find_addr_map(struct thread *thread, struct machine *machine,
--
1.8.1.4
^ permalink raw reply related [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (9 preceding siblings ...)
2013-11-05 20:10 ` [PATCH 10/10] perf tools: Finish the removal of 'self' arguments Arnaldo Carvalho de Melo
@ 2013-11-06 5:31 ` Ingo Molnar
10 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2013-11-06 5:31 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Corey Ashford, David Ahern, Frederic Weisbecker, Jiri Olsa,
Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Rodrigo Campos, Stephane Eranian
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 87968f94fbea47df334502a0db645833ce8a848b:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-11-04 21:14:04 +0100)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to 316c7136f8bad924609163b9b115f68d59a68c82:
>
> perf tools: Finish the removal of 'self' arguments (2013-11-05 15:32:36 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . Check maximum frequency rate for record/top, emitting better error
> messages, from Jiri Olsa.
>
> . Disable live kvm command if timerfd is not supported, from David Ahern.
>
> . Add usage to 'perf list', from David Ahern.
>
> . Fix detection of non-core features, from David Ahern.
>
> . Consolidate __hists__add_*entry(), cleanup from Namhyung Kim.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
> perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint()
> perf tools: Finish the removal of 'self' arguments
>
> David Ahern (4):
> perf kvm: Disable live command if timerfd is not supported
> tools/perf/build: Fix detection of non-core features
> perf list: Remove a level of indentation
> perf list: Add usage
>
> Jiri Olsa (3):
> perf tools: Factor sysfs code into generic fs object
> perf fs: Add procfs support
> perf tools: Check maximum frequency rate for record/top
>
> Namhyung Kim (1):
> perf hists: Consolidate __hists__add_*entry()
>
> tools/perf/Makefile.perf | 4 +-
> tools/perf/builtin-annotate.c | 2 +-
> tools/perf/builtin-diff.c | 3 +-
> tools/perf/builtin-kvm.c | 12 ++
> tools/perf/builtin-list.c | 84 ++++++++------
> tools/perf/builtin-record.c | 15 +--
> tools/perf/builtin-report.c | 16 ++-
> tools/perf/builtin-top.c | 20 +---
> tools/perf/config/Makefile | 17 ++-
> tools/perf/config/feature-checks/Makefile | 6 +-
> tools/perf/config/feature-checks/test-all.c | 5 +
> tools/perf/config/feature-checks/test-timerfd.c | 18 +++
> .../perf/scripts/python/Perf-Trace-Util/Context.c | 6 +-
> tools/perf/tests/hists_link.c | 6 +-
> tools/perf/tests/parse-events.c | 6 +-
> tools/perf/ui/browser.h | 32 +++---
> tools/perf/ui/browsers/hists.c | 2 +-
> tools/perf/ui/browsers/map.c | 40 +++----
> tools/perf/ui/browsers/map.h | 2 +-
> tools/perf/ui/browsers/scripts.c | 8 +-
> tools/perf/ui/stdio/hist.c | 14 +--
> tools/perf/util/build-id.h | 3 +-
> tools/perf/util/cpumap.c | 6 +-
> tools/perf/util/event.c | 6 +-
> tools/perf/util/event.h | 3 +-
> tools/perf/util/evlist.h | 3 +-
> tools/perf/util/fs.c | 119 ++++++++++++++++++++
> tools/perf/util/fs.h | 7 ++
> tools/perf/util/hist.c | 75 ++-----------
> tools/perf/util/hist.h | 51 +++------
> tools/perf/util/include/linux/magic.h | 4 +
> tools/perf/util/pmu.c | 17 +--
> tools/perf/util/probe-finder.c | 113 +++++++++----------
> tools/perf/util/probe-finder.h | 10 +-
> tools/perf/util/pstack.h | 10 +-
> tools/perf/util/python-ext-sources | 2 +-
> tools/perf/util/record.c | 71 ++++++++++++
> tools/perf/util/session.c | 121 ++++++++++-----------
> tools/perf/util/session.h | 27 ++---
> tools/perf/util/sort.h | 2 +-
> tools/perf/util/strfilter.c | 32 +++---
> tools/perf/util/strfilter.h | 12 +-
> tools/perf/util/sysfs.c | 60 ----------
> tools/perf/util/sysfs.h | 6 -
> tools/perf/util/thread.h | 10 +-
> 45 files changed, 591 insertions(+), 497 deletions(-)
> create mode 100644 tools/perf/config/feature-checks/test-timerfd.c
> create mode 100644 tools/perf/util/fs.c
> create mode 100644 tools/perf/util/fs.h
> delete mode 100644 tools/perf/util/sysfs.c
> delete mode 100644 tools/perf/util/sysfs.h
Pulled, thanks Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2017-08-16 20:20 Arnaldo Carvalho de Melo
2017-08-17 7:45 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-08-16 20:20 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
Adrian Hunter, David Ahern, Hendrik Brueckner, Jiri Olsa,
Kim Phillips, Michael Petlan, Namhyung Kim, Thomas-Mich Richter,
Wang Nan
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit cf31b7dd51b542f9a9b2d0de416b5524dfdb1cf2:
Merge tag 'perf-core-for-mingo-4.14-20170814' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-08-14 19:38:40 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.14-20170816
for you to fetch changes up to 35435cd06081d7db96bc617b65ba556f8e24340e:
perf test shell: Replace '|&' with '2>&1 |' to work with more shells (2017-08-16 16:23:26 -0300)
----------------------------------------------------------------
perf core improvements and fixes:
New features:
- Support exporting Intel PT data to sqlite3 with python perf scripts,
this is in addition to the postgresql support that was already there (Adrian Hunter)
Infrastructure:
- Handle perf tool builds with less features in perf shell tests, such
as those with NO_LIBDWARF=1 or even without 'perf probe' (Arnaldo Carvalho de Melo)
- Replace '|&' with '2>&1 |' to work with more shells in the just
introduced perf test shell harness (Kim Phillips)
Architecture related fixes:
- Fix endianness problem when loading parameters in the BPF prologue
generated by perf, noticed using 'perf test BPF' in s390x systems (Wang Nan, Thomas Richter)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (5):
perf scripts python: Fix missing call_path_id in export-to-postgresql script
perf scripts python: Fix query in call-graph-from-postgresql.py
perf script python: Add support for exporting to sqlite3
perf script python: Rename call-graph-from-postgresql.py to call-graph-from-sql.py
perf script python: Add support for sqlite3 to call-graph-from-sql.py
Arnaldo Carvalho de Melo (3):
perf tests shell: Remove duplicate skip_if_no_debuginfo() function
perf test shell: Check if 'perf probe' is available, skip tests if not
perf test shell vfs_getname: Skip for tools built with NO_LIBDWARF=1
Kim Phillips (1):
perf test shell: Replace '|&' with '2>&1 |' to work with more shells
Wang Nan (1):
perf bpf: Fix endianness problem when loading parameters in prologue
tools/perf/Documentation/intel-pt.txt | 6 +-
.../scripts/python/bin/export-to-sqlite-record | 8 +
.../scripts/python/bin/export-to-sqlite-report | 29 ++
...h-from-postgresql.py => call-graph-from-sql.py} | 70 ++--
tools/perf/scripts/python/export-to-postgresql.py | 5 +-
tools/perf/scripts/python/export-to-sqlite.py | 451 +++++++++++++++++++++
tools/perf/tests/bpf-script-test-prologue.c | 4 +-
tools/perf/tests/shell/lib/probe.sh | 6 +
tools/perf/tests/shell/lib/probe_vfs_getname.sh | 13 +-
tools/perf/tests/shell/probe_vfs_getname.sh | 4 +
.../tests/shell/record+script_probe_vfs_getname.sh | 4 +
.../perf/tests/shell/trace+probe_libc_inet_pton.sh | 5 +-
tools/perf/tests/shell/trace+probe_vfs_getname.sh | 4 +
tools/perf/util/bpf-prologue.c | 49 ++-
14 files changed, 611 insertions(+), 47 deletions(-)
create mode 100644 tools/perf/scripts/python/bin/export-to-sqlite-record
create mode 100644 tools/perf/scripts/python/bin/export-to-sqlite-report
rename tools/perf/scripts/python/{call-graph-from-postgresql.py => call-graph-from-sql.py} (87%)
create mode 100644 tools/perf/scripts/python/export-to-sqlite.py
create mode 100644 tools/perf/tests/shell/lib/probe.sh
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Where clang is available, it is also used to build perf with/without libelf.
Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf
commands with a variety of command line event specifications to then
intercept the sys_perf_event syscall to check that the perf_event_attr
fields are set up as expected, among a variety of other unit tests.
The 'perf test' also runs shell scripts exercising the tools, checking
if they affect the system in certain ways, like setting up kprobes and
uprobes, request callchains for well known programs and check that they
are the expected ones, see if 'perf trace' beautifies system call
arguments correctly, etc.
Additionally, a new set of tests, script based, runs the tools in a live system,
setting probes in place that then gets used by 'perf trace', with its output
compared against expected results.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
# dm
1 alpine:3.4: Ok
2 alpine:3.5: Ok
3 alpine:3.6: Ok
4 alpine:edge: Ok
5 android-ndk:r12b-arm: Ok
6 archlinux:latest: Ok
7 centos:5: Ok
8 centos:6: Ok
9 centos:7: Ok
10 debian:7: Ok
11 debian:8: Ok
12 debian:9: Ok
13 debian:experimental: Ok
14 debian:experimental-x-arm64: Ok
15 debian:experimental-x-mips: Ok
16 debian:experimental-x-mips64: Ok
17 debian:experimental-x-mipsel: Ok
18 fedora:20: Ok
19 fedora:21: Ok
20 fedora:22: Ok
21 fedora:23: Ok
22 fedora:24: Ok
23 fedora:24-x-ARC-uClibc: Ok
24 fedora:25: Ok
25 fedora:26: Ok
26 fedora:rawhide: Ok
27 mageia:5: Ok
28 opensuse:13.2: Ok
29 opensuse:42.1: Ok
30 opensuse:42.2: Ok
31 opensuse:tumbleweed: Ok
32 oraclelinux:6: Ok
33 oraclelinux:7: Ok
34 ubuntu:12.04.5: Ok
35 ubuntu:14.04.4: Ok
36 ubuntu:14.04.4-x-linaro-arm64: Ok
37 ubuntu:15.10: Ok
38 ubuntu:16.04: Ok
39 ubuntu:16.04-x-arm: Ok
40 ubuntu:16.04-x-arm64: Ok
41 ubuntu:16.04-x-powerpc: Ok
42 ubuntu:16.04-x-powerpc64: Ok
43 ubuntu:16.04-x-powerpc64el: Ok
44 ubuntu:16.04-x-s390: Ok
45 ubuntu:16.10: Ok
46 ubuntu:17.04: Ok
47 ubuntu:17.10: Ok
#
# uname -a
Linux jouet 4.13.0-rc4+ #2 SMP Fri Aug 11 12:39:09 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: Simple expression parser : Ok
7: PERF_RECORD_* events & perf_sample fields : Ok
8: Parse perf pmu format : Ok
9: DSO data read : Ok
10: DSO data cache : Ok
11: DSO data reopen : Ok
12: Roundtrip evsel->name : Ok
13: Parse sched tracepoints fields : Ok
14: syscalls:sys_enter_openat event fields : Ok
15: Setup struct perf_event_attr : Ok
16: Match and link multiple hists : Ok
17: 'import perf' in python : Ok
18: Breakpoint overflow signal handler : Ok
19: Breakpoint overflow sampling : Ok
20: Number of exit events of a simple workload : Ok
21: Software clock events period values : Ok
22: Object code reading : Ok
23: Sample parsing : Ok
24: Use a dummy software event to keep tracking : Ok
25: Parse with no sample_id_all bit set : Ok
26: Filter hist entries : Ok
27: Lookup mmap thread : Ok
28: Share thread mg : Ok
29: Sort output of hist entries : Ok
30: Cumulate child hist entries : Ok
31: Track with sched_switch : Ok
32: Filter fds with revents mask in a fdarray : Ok
33: Add fd to a fdarray, making it autogrow : Ok
34: kmod_path__parse : Ok
35: Thread map : Ok
36: LLVM search and compile :
36.1: Basic BPF llvm compile : Ok
36.2: kbuild searching : Ok
36.3: Compile source for BPF prologue generation : Ok
36.4: Compile source for BPF relocation : Ok
37: Session topology : Ok
38: BPF filter :
38.1: Basic BPF filtering : Ok
38.2: BPF pinning : Ok
38.3: BPF prologue generation : Ok
38.4: BPF relocation checker : Ok
39: Synthesize thread map : Ok
40: Remove thread map : Ok
41: Synthesize cpu map : Ok
42: Synthesize stat config : Ok
43: Synthesize stat : Ok
44: Synthesize stat round : Ok
45: Synthesize attr update : Ok
46: Event times : Ok
47: Read backward ring buffer : Ok
48: Print cpu map : Ok
49: Probe SDT events : Ok
50: is_printable_array : Ok
51: Print bitmap : Ok
52: perf hooks : Ok
53: builtin clang support : Skip (not compiled in)
54: unit_number__scnprintf : Ok
55: x86 rdpmc : Ok
56: Convert perf time to TSC : Ok
57: DWARF unwind : Ok
58: x86 instruction decoder - new instructions : Ok
59: Intel cqm nmi context read : Skip
60: Use vfs_getname probe to get syscall args filenames : Ok
61: probe libc's inet_pton & backtrace it with ping : Ok
62: Check open filename arg using perf trace + vfs_getname: Ok
63: Add vfs_getname probe to get syscall args filenames : Ok
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_libelf_O: make NO_LIBELF=1
make_clean_all_O: make clean all
make_tags_O: make tags
make_perf_o_O: make perf.o
make_util_map_o_O: make util/map.o
make_install_bin_O: make install-bin
make_doc_O: make doc
make_no_demangle_O: make NO_DEMANGLE=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libperl_O: make NO_LIBPERL=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_install_prefix_O: make install prefix=/tmp/krava
make_no_libbionic_O: make NO_LIBBIONIC=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_debug_O: make DEBUG=1
make_no_libbpf_O: make NO_LIBBPF=1
make_no_newt_O: make NO_NEWT=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_gtk2_O: make NO_GTK2=1
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_pure_O: make
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_slang_O: make NO_SLANG=1
make_install_O: make install
make_no_libnuma_O: make NO_LIBNUMA=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_help_O: make help
make_no_libunwind_O: make NO_LIBUNWIND=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2017-08-16 20:20 Arnaldo Carvalho de Melo
@ 2017-08-17 7:45 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2017-08-17 7:45 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo,
Adrian Hunter, David Ahern, Hendrik Brueckner, Jiri Olsa,
Kim Phillips, Michael Petlan, Namhyung Kim, Thomas-Mich Richter,
Wang Nan
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit cf31b7dd51b542f9a9b2d0de416b5524dfdb1cf2:
>
> Merge tag 'perf-core-for-mingo-4.14-20170814' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-08-14 19:38:40 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.14-20170816
>
> for you to fetch changes up to 35435cd06081d7db96bc617b65ba556f8e24340e:
>
> perf test shell: Replace '|&' with '2>&1 |' to work with more shells (2017-08-16 16:23:26 -0300)
>
> ----------------------------------------------------------------
> perf core improvements and fixes:
>
> New features:
>
> - Support exporting Intel PT data to sqlite3 with python perf scripts,
> this is in addition to the postgresql support that was already there (Adrian Hunter)
>
> Infrastructure:
>
> - Handle perf tool builds with less features in perf shell tests, such
> as those with NO_LIBDWARF=1 or even without 'perf probe' (Arnaldo Carvalho de Melo)
>
> - Replace '|&' with '2>&1 |' to work with more shells in the just
> introduced perf test shell harness (Kim Phillips)
>
> Architecture related fixes:
>
> - Fix endianness problem when loading parameters in the BPF prologue
> generated by perf, noticed using 'perf test BPF' in s390x systems (Wang Nan, Thomas Richter)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (5):
> perf scripts python: Fix missing call_path_id in export-to-postgresql script
> perf scripts python: Fix query in call-graph-from-postgresql.py
> perf script python: Add support for exporting to sqlite3
> perf script python: Rename call-graph-from-postgresql.py to call-graph-from-sql.py
> perf script python: Add support for sqlite3 to call-graph-from-sql.py
>
> Arnaldo Carvalho de Melo (3):
> perf tests shell: Remove duplicate skip_if_no_debuginfo() function
> perf test shell: Check if 'perf probe' is available, skip tests if not
> perf test shell vfs_getname: Skip for tools built with NO_LIBDWARF=1
>
> Kim Phillips (1):
> perf test shell: Replace '|&' with '2>&1 |' to work with more shells
>
> Wang Nan (1):
> perf bpf: Fix endianness problem when loading parameters in prologue
>
> tools/perf/Documentation/intel-pt.txt | 6 +-
> .../scripts/python/bin/export-to-sqlite-record | 8 +
> .../scripts/python/bin/export-to-sqlite-report | 29 ++
> ...h-from-postgresql.py => call-graph-from-sql.py} | 70 ++--
> tools/perf/scripts/python/export-to-postgresql.py | 5 +-
> tools/perf/scripts/python/export-to-sqlite.py | 451 +++++++++++++++++++++
> tools/perf/tests/bpf-script-test-prologue.c | 4 +-
> tools/perf/tests/shell/lib/probe.sh | 6 +
> tools/perf/tests/shell/lib/probe_vfs_getname.sh | 13 +-
> tools/perf/tests/shell/probe_vfs_getname.sh | 4 +
> .../tests/shell/record+script_probe_vfs_getname.sh | 4 +
> .../perf/tests/shell/trace+probe_libc_inet_pton.sh | 5 +-
> tools/perf/tests/shell/trace+probe_vfs_getname.sh | 4 +
> tools/perf/util/bpf-prologue.c | 49 ++-
> 14 files changed, 611 insertions(+), 47 deletions(-)
> create mode 100644 tools/perf/scripts/python/bin/export-to-sqlite-record
> create mode 100644 tools/perf/scripts/python/bin/export-to-sqlite-report
> rename tools/perf/scripts/python/{call-graph-from-postgresql.py => call-graph-from-sql.py} (87%)
> create mode 100644 tools/perf/scripts/python/export-to-sqlite.py
> create mode 100644 tools/perf/tests/shell/lib/probe.sh
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2017-05-03 13:58 Arnaldo Carvalho de Melo
2017-05-03 17:30 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-05-03 13:58 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Jiri Olsa, Josh Poimboeuf, Masami Hiramatsu,
Michael Petlan, Namhyung Kim, Paul A . Clarke, Taeung Song,
Wang Nan, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit fd7647979a3948dae4fc6f25dbbdf9ba269bed78:
Merge tag 'perf-core-for-mingo-4.12-20170424' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-04-24 23:31:35 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170503
for you to fetch changes up to 4341ec6b3db4c3e903d6c44958722918baec1e59:
perf config: Refactor a duplicated code for obtaining config file name (2017-05-02 18:23:12 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
Fixes:
- Support setting probes in versioned user space symbols, such as
pthread_create@@GLIBC_2.1, picking the default one, more work
needed to make it possible to set it on the other versions, as
the 'perf probe' syntax already uses @ for other purposes.
(Paul Clarke)
- Do not special case address zero as an error for routines that
return addresses (symbol lookup), instead use the return as the
success/error indication and pass a pointer to return the address,
fixing 'perf test vmlinux' (the one that compares address between
vmlinux and kallsyms) on s/390, where the '_text' address is equal
to zero (Arnaldo Carvalho de Melo)
Infrastructure:
- More header sanitization, moving stuff out of util.h into
more appropriate headers and objects and sometimes creating
new ones (Arnaldo Carvalho de Melo)
- Refactor a duplicated code for obtaining config file name (Taeung Song)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (8):
perf buildid: Move prototypes from util.h to build-id.h
perf tools: Move event prototypes from util.h to event.h
perf memswap: Split the byteswap memory range wrappers from util.[ch]
perf tools: Move HAS_BOOL define to where perl headers are used
perf ui gtk: Move gtk .so name to the only place where it is used
perf units: Move parse_tag_value() to units.[ch]
tools lib string: Adopt prefixcmp() from perf and subcmd
perf symbols: Accept symbols starting at address 0
Paul Clarke (1):
perf symbols: Allow user probes on versioned symbols
Taeung Song (1):
perf config: Refactor a duplicated code for obtaining config file name
tools/include/linux/string.h | 2 +
tools/lib/string.c | 9 +++
tools/lib/subcmd/help.c | 1 +
tools/lib/subcmd/parse-options.c | 1 +
tools/lib/subcmd/subcmd-util.h | 9 ---
tools/perf/arch/powerpc/util/sym-handling.c | 12 ++++
tools/perf/builtin-buildid-cache.c | 13 ++--
tools/perf/builtin-c2c.c | 1 +
tools/perf/builtin-config.c | 19 +++---
tools/perf/builtin-top.c | 2 +-
tools/perf/builtin-trace.c | 1 +
tools/perf/perf.c | 1 +
tools/perf/tests/hists_cumulate.c | 1 +
tools/perf/tests/hists_filter.c | 1 +
tools/perf/tests/hists_output.c | 1 +
tools/perf/tests/sdt.c | 1 -
tools/perf/ui/setup.c | 3 +
tools/perf/util/Build | 1 +
tools/perf/util/build-id.h | 4 ++
tools/perf/util/event.c | 10 +--
tools/perf/util/event.h | 12 +++-
tools/perf/util/evsel.c | 1 +
tools/perf/util/header.c | 1 +
tools/perf/util/intel-pt.c | 1 +
tools/perf/util/machine.c | 28 +++++----
tools/perf/util/map.c | 5 --
tools/perf/util/map.h | 5 +-
tools/perf/util/memswap.c | 24 ++++++++
tools/perf/util/memswap.h | 7 +++
.../perf/util/scripting-engines/trace-event-perl.c | 4 +-
tools/perf/util/session.c | 1 +
tools/perf/util/strbuf.c | 9 ---
tools/perf/util/symbol.c | 72 ++++++++++++++++------
tools/perf/util/symbol.h | 11 ++++
tools/perf/util/units.c | 29 +++++++++
tools/perf/util/units.h | 7 +++
tools/perf/util/util.c | 49 ---------------
tools/perf/util/util.h | 26 --------
38 files changed, 230 insertions(+), 155 deletions(-)
create mode 100644 tools/perf/util/memswap.c
create mode 100644 tools/perf/util/memswap.h
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Where clang is available, it is also used to build perf with/without libelf.
Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
# time dm
1 alpine:3.4: Ok
2 alpine:3.5: Ok
3 alpine:edge: Ok
4 android-ndk:r12b-arm: Ok
5 archlinux:latest: Ok
6 centos:5: Ok
7 centos:6: Ok
8 centos:7: Ok
9 debian:7: Ok
10 debian:8: Ok
11 debian:9: Ok
12 debian:experimental: Ok
13 debian:experimental-x-arm64: Ok
14 debian:experimental-x-mips: Ok
15 debian:experimental-x-mips64: Ok
16 debian:experimental-x-mipsel: Ok
17 fedora:20: Ok
18 fedora:21: Ok
19 fedora:22: Ok
20 fedora:23: Ok
21 fedora:24: Ok
22 fedora:24-x-ARC-uClibc: Ok
23 fedora:25: Ok
24 fedora:rawhide: Ok
25 mageia:5: Ok
26 opensuse:13.2: Ok
27 opensuse:42.1: Ok
28 opensuse:tumbleweed: Ok
29 ubuntu:12.04.5: Ok
30 ubuntu:14.04.4: Ok
31 ubuntu:14.04.4-x-linaro-arm64: Ok
32 ubuntu:15.10: Ok
33 ubuntu:16.04: Ok
34 ubuntu:16.04-x-arm: Ok
35 ubuntu:16.04-x-arm64: Ok
36 ubuntu:16.04-x-powerpc: Ok
37 ubuntu:16.04-x-powerpc64: Ok
38 ubuntu:16.04-x-s390: Ok
39 ubuntu:16.10: Ok
40 ubuntu:17.04: Ok
#
# uname -a
Linux jouet 4.11.0-rc8+ #8 SMP Wed Apr 26 08:50:41 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: Simple expression parser : Ok
7: PERF_RECORD_* events & perf_sample fields : Ok
8: Parse perf pmu format : Ok
9: DSO data read : Ok
10: DSO data cache : Ok
11: DSO data reopen : Ok
12: Roundtrip evsel->name : Ok
13: Parse sched tracepoints fields : Ok
14: syscalls:sys_enter_openat event fields : Ok
15: Setup struct perf_event_attr : Ok
16: Match and link multiple hists : Ok
17: 'import perf' in python : Ok
18: Breakpoint overflow signal handler : Ok
19: Breakpoint overflow sampling : Ok
20: Number of exit events of a simple workload : Ok
21: Software clock events period values : Ok
22: Object code reading : Ok
23: Sample parsing : Ok
24: Use a dummy software event to keep tracking: Ok
25: Parse with no sample_id_all bit set : Ok
26: Filter hist entries : Ok
27: Lookup mmap thread : Ok
28: Share thread mg : Ok
29: Sort output of hist entries : Ok
30: Cumulate child hist entries : Ok
31: Track with sched_switch : Ok
32: Filter fds with revents mask in a fdarray : Ok
33: Add fd to a fdarray, making it autogrow : Ok
34: kmod_path__parse : Ok
35: Thread map : Ok
36: LLVM search and compile :
36.1: Basic BPF llvm compile : Ok
36.2: kbuild searching : Ok
36.3: Compile source for BPF prologue generation: Ok
36.4: Compile source for BPF relocation : Ok
37: Session topology : Ok
38: BPF filter :
38.1: Basic BPF filtering : Ok
38.2: BPF pinning : Ok
38.3: BPF prologue generation : Ok
38.4: BPF relocation checker : Ok
39: Synthesize thread map : Ok
40: Remove thread map : Ok
41: Synthesize cpu map : Ok
42: Synthesize stat config : Ok
43: Synthesize stat : Ok
44: Synthesize stat round : Ok
45: Synthesize attr update : Ok
46: Event times : Ok
47: Read backward ring buffer : Ok
48: Print cpu map : Ok
49: Probe SDT events : Ok
50: is_printable_array : Ok
51: Print bitmap : Ok
52: perf hooks : Ok
53: builtin clang support : Skip (not compiled in)
54: unit_number__scnprintf : Ok
55: x86 rdpmc : Ok
56: Convert perf time to TSC : Ok
57: DWARF unwind : Ok
58: x86 instruction decoder - new instructions : Ok
59: Intel cqm nmi context read : Skip
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_libperl_O: make NO_LIBPERL=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_libelf_O: make NO_LIBELF=1
make_doc_O: make doc
make_no_libunwind_O: make NO_LIBUNWIND=1
make_clean_all_O: make clean all
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_util_map_o_O: make util/map.o
make_no_libnuma_O: make NO_LIBNUMA=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_demangle_O: make NO_DEMANGLE=1
make_tags_O: make tags
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_slang_O: make NO_SLANG=1
make_help_O: make help
make_no_gtk2_O: make NO_GTK2=1
make_install_prefix_O: make install prefix=/tmp/krava
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_install_O: make install
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_perf_o_O: make perf.o
make_no_auxtrace_O: make NO_AUXTRACE=1
make_pure_O: make
make_no_libbpf_O: make NO_LIBBPF=1
make_no_newt_O: make NO_NEWT=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_static_O: make LDFLAGS=-static
make_install_bin_O: make install-bin
make_debug_O: make DEBUG=1
make_no_backtrace_O: make NO_BACKTRACE=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2017-05-03 13:58 Arnaldo Carvalho de Melo
@ 2017-05-03 17:30 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2017-05-03 17:30 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, David Ahern, Jiri Olsa,
Josh Poimboeuf, Masami Hiramatsu, Michael Petlan, Namhyung Kim,
Paul A . Clarke, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit fd7647979a3948dae4fc6f25dbbdf9ba269bed78:
>
> Merge tag 'perf-core-for-mingo-4.12-20170424' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-04-24 23:31:35 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170503
>
> for you to fetch changes up to 4341ec6b3db4c3e903d6c44958722918baec1e59:
>
> perf config: Refactor a duplicated code for obtaining config file name (2017-05-02 18:23:12 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> Fixes:
>
> - Support setting probes in versioned user space symbols, such as
> pthread_create@@GLIBC_2.1, picking the default one, more work
> needed to make it possible to set it on the other versions, as
> the 'perf probe' syntax already uses @ for other purposes.
> (Paul Clarke)
>
> - Do not special case address zero as an error for routines that
> return addresses (symbol lookup), instead use the return as the
> success/error indication and pass a pointer to return the address,
> fixing 'perf test vmlinux' (the one that compares address between
> vmlinux and kallsyms) on s/390, where the '_text' address is equal
> to zero (Arnaldo Carvalho de Melo)
>
> Infrastructure:
>
> - More header sanitization, moving stuff out of util.h into
> more appropriate headers and objects and sometimes creating
> new ones (Arnaldo Carvalho de Melo)
>
> - Refactor a duplicated code for obtaining config file name (Taeung Song)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (8):
> perf buildid: Move prototypes from util.h to build-id.h
> perf tools: Move event prototypes from util.h to event.h
> perf memswap: Split the byteswap memory range wrappers from util.[ch]
> perf tools: Move HAS_BOOL define to where perl headers are used
> perf ui gtk: Move gtk .so name to the only place where it is used
> perf units: Move parse_tag_value() to units.[ch]
> tools lib string: Adopt prefixcmp() from perf and subcmd
> perf symbols: Accept symbols starting at address 0
>
> Paul Clarke (1):
> perf symbols: Allow user probes on versioned symbols
>
> Taeung Song (1):
> perf config: Refactor a duplicated code for obtaining config file name
>
> tools/include/linux/string.h | 2 +
> tools/lib/string.c | 9 +++
> tools/lib/subcmd/help.c | 1 +
> tools/lib/subcmd/parse-options.c | 1 +
> tools/lib/subcmd/subcmd-util.h | 9 ---
> tools/perf/arch/powerpc/util/sym-handling.c | 12 ++++
> tools/perf/builtin-buildid-cache.c | 13 ++--
> tools/perf/builtin-c2c.c | 1 +
> tools/perf/builtin-config.c | 19 +++---
> tools/perf/builtin-top.c | 2 +-
> tools/perf/builtin-trace.c | 1 +
> tools/perf/perf.c | 1 +
> tools/perf/tests/hists_cumulate.c | 1 +
> tools/perf/tests/hists_filter.c | 1 +
> tools/perf/tests/hists_output.c | 1 +
> tools/perf/tests/sdt.c | 1 -
> tools/perf/ui/setup.c | 3 +
> tools/perf/util/Build | 1 +
> tools/perf/util/build-id.h | 4 ++
> tools/perf/util/event.c | 10 +--
> tools/perf/util/event.h | 12 +++-
> tools/perf/util/evsel.c | 1 +
> tools/perf/util/header.c | 1 +
> tools/perf/util/intel-pt.c | 1 +
> tools/perf/util/machine.c | 28 +++++----
> tools/perf/util/map.c | 5 --
> tools/perf/util/map.h | 5 +-
> tools/perf/util/memswap.c | 24 ++++++++
> tools/perf/util/memswap.h | 7 +++
> .../perf/util/scripting-engines/trace-event-perl.c | 4 +-
> tools/perf/util/session.c | 1 +
> tools/perf/util/strbuf.c | 9 ---
> tools/perf/util/symbol.c | 72 ++++++++++++++++------
> tools/perf/util/symbol.h | 11 ++++
> tools/perf/util/units.c | 29 +++++++++
> tools/perf/util/units.h | 7 +++
> tools/perf/util/util.c | 49 ---------------
> tools/perf/util/util.h | 26 --------
> 38 files changed, 230 insertions(+), 155 deletions(-)
> create mode 100644 tools/perf/util/memswap.c
> create mode 100644 tools/perf/util/memswap.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2017-01-17 16:06 Arnaldo Carvalho de Melo
2017-01-18 9:09 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-01-17 16:06 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexander Shishkin,
Andi Kleen, David Ahern, David Carrillo-Cisneros, Jiri Olsa,
kernel-team, Mark Drayton, Michael Petlan, Minchan Kim,
Namhyung Kim, Peter Zijlstra, Soramichi Akiyama,
Stephane Eranian, Thomas Gleixner, Yannick Brosseau
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 5b485629ba0d5d027880769ff467c587b24b4bde:
kprobes, extable: Identify kprobes trampolines as kernel text area (2017-01-14 08:38:05 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.11-20170117
for you to fetch changes up to d94386f28abad0c5879f0760712e34e71f88a7da:
perf evlist: Fix typo in deliver_sample() (2017-01-17 11:36:45 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
New feature:
- Account thread wait time (off cpu time) separately: sleep, iowait and
preempt, based on the prev_state of the last event, show the breakdown
when using "perf sched timehist --state" (Namhyumg Kim)
Infrastructure:
- Factor out pmu scale conversion code (Andi Kleen)
- Remove unnecessary feature-dwarf warning (David Carrillo-Cisneros)
- Add missing member name in OPT_() macros (Soramichi AKIYAMA)
- Move variables referenced in libperf.a object files from perf's main()
file, so that other tools can use libperf.a with a different main()
(Soramichi AKIYAMA)
Documentation:
- Fix 'perf script' man page about --dump-raw-trace option (Michael Petlan)
- Also allow forcing reading of non-root owned files by root in 'perf
script' (Yannick Brosseau)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (1):
perf pmu: Factor out scale conversion code
David Carrillo-Cisneros (1):
perf tools: Remove unneccessary feature-dwarf warning
Michael Petlan (1):
perf script: Fix man page about --dump-raw-trace option
Namhyung Kim (3):
perf sched timehist: Account thread wait time separately
perf sched timehist: Add --state option
perf sched timehist: Show total wait times for summary
Soramichi AKIYAMA (3):
tools lib subcmd: Fix missing member name
perf tools: Move two variables usied in libperf from perf.c
perf evlist: Fix typo in deliver_sample()
Yannick Brosseau (1):
perf script: Also allow forcing reading of non-root owned files by root
tools/lib/subcmd/parse-options.h | 18 ++---
tools/perf/Build | 3 +-
tools/perf/Documentation/perf-sched.txt | 2 +
tools/perf/Documentation/perf-script.txt | 4 +-
tools/perf/Makefile.config | 6 +-
tools/perf/builtin-sched.c | 130 ++++++++++++++++++++++++++++---
tools/perf/builtin-script.c | 3 +-
tools/perf/perf.c | 3 -
tools/perf/ui/setup.c | 1 +
tools/perf/util/Build | 1 +
tools/perf/util/header.c | 2 +
tools/perf/util/pmu.c | 62 ++++++++-------
tools/perf/util/session.c | 2 +-
13 files changed, 177 insertions(+), 60 deletions(-)
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
# time dm
1 alpine:3.4: Ok
2 android-ndk:r12b-arm: Ok
3 archlinux:latest: Ok
4 centos:5: Ok
5 centos:6: Ok
6 centos:7: Ok
7 debian:7: Ok
8 debian:8: Ok
9 debian:experimental: Ok
10 debian:experimental-x-arm64: Ok
11 debian:experimental-x-mips: Ok
12 debian:experimental-x-mips64: Ok
13 debian:experimental-x-mipsel: Ok
14 fedora:20: Ok
15 fedora:21: Ok
16 fedora:22: Ok
17 fedora:23: Ok
18 fedora:24: Ok
19 fedora:24-x-ARC-uClibc: Ok
20 fedora:25: Ok
21 fedora:rawhide: Ok
22 mageia:5: Ok
23 opensuse:13.2: Ok
24 opensuse:42.1: Ok
25 opensuse:tumbleweed: Ok
26 ubuntu:12.04.5: Ok
27 ubuntu:14.04.4-x-linaro-arm64: Ok
28 ubuntu:15.10: Ok
29 ubuntu:16.04: Ok
30 ubuntu:16.04-x-arm: Ok
31 ubuntu:16.04-x-arm64: Ok
32 ubuntu:16.04-x-powerpc: Ok
33 ubuntu:16.04-x-powerpc64: Ok
34 ubuntu:16.04-x-powerpc64el: Ok
35 ubuntu:16.04-x-s390: Ok
36 ubuntu:16.10: Ok
#
# uname -a
Linux jouet 4.9.0+ #2 SMP Wed Dec 21 11:54:44 BRT 2016 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: PERF_RECORD_* events & perf_sample fields : Ok
7: Parse perf pmu format : Ok
8: DSO data read : Ok
9: DSO data cache : Ok
10: DSO data reopen : Ok
11: Roundtrip evsel->name : Ok
12: Parse sched tracepoints fields : Ok
13: syscalls:sys_enter_openat event fields : Ok
14: Setup struct perf_event_attr : Ok
15: Match and link multiple hists : Ok
16: 'import perf' in python : Ok
17: Breakpoint overflow signal handler : Ok
18: Breakpoint overflow sampling : Ok
19: Number of exit events of a simple workload : Ok
20: Software clock events period values : Ok
21: Object code reading : Ok
22: Sample parsing : Ok
23: Use a dummy software event to keep tracking: Ok
24: Parse with no sample_id_all bit set : Ok
25: Filter hist entries : Ok
26: Lookup mmap thread : Ok
27: Share thread mg : Ok
28: Sort output of hist entries : Ok
29: Cumulate child hist entries : Ok
30: Track with sched_switch : Ok
31: Filter fds with revents mask in a fdarray : Ok
32: Add fd to a fdarray, making it autogrow : Ok
33: kmod_path__parse : Ok
34: Thread map : Ok
35: LLVM search and compile :
35.1: Basic BPF llvm compile : Ok
35.2: kbuild searching : Ok
35.3: Compile source for BPF prologue generation: Ok
35.4: Compile source for BPF relocation : Ok
36: Session topology : Ok
37: BPF filter :
37.1: Basic BPF filtering : Ok
37.2: BPF prologue generation : Ok
37.3: BPF relocation checker : Ok
38: Synthesize thread map : Ok
39: Remove thread map : Ok
40: Synthesize cpu map : Ok
41: Synthesize stat config : Ok
42: Synthesize stat : Ok
43: Synthesize stat round : Ok
44: Synthesize attr update : Ok
45: Event times : Ok
46: Read backward ring buffer : Ok
47: Print cpu map : Ok
48: Probe SDT events : Ok
49: is_printable_array : Ok
50: Print bitmap : Ok
51: perf hooks : Ok
52: builtin clang support : Skip (not compiled in)
53: unit_number__scnprintf : Ok
54: x86 rdpmc : Ok
55: Convert perf time to TSC : Ok
56: DWARF unwind : Ok
57: x86 instruction decoder - new instructions : Ok
58: Intel cqm nmi context read : Skip
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make FEATURE_DUMP_COPY=/home/acme/git/linux/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump
make_no_libperl_O: make NO_LIBPERL=1
make_doc_O: make doc
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_demangle_O: make NO_DEMANGLE=1
make_help_O: make help
make_no_gtk2_O: make NO_GTK2=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_clean_all_O: make clean all
make_install_bin_O: make install-bin
make_no_libbionic_O: make NO_LIBBIONIC=1
make_install_O: make install
make_debug_O: make DEBUG=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_install_prefix_O: make install prefix=/tmp/krava
make_perf_o_O: make perf.o
make_no_libpython_O: make NO_LIBPYTHON=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_slang_O: make NO_SLANG=1
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_newt_O: make NO_NEWT=1
make_no_libbpf_O: make NO_LIBBPF=1
make_util_map_o_O: make util/map.o
make_static_O: make LDFLAGS=-static
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_libelf_O: make NO_LIBELF=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_tags_O: make tags
make_pure_O: make
make_no_libnuma_O: make NO_LIBNUMA=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2017-01-17 16:06 Arnaldo Carvalho de Melo
@ 2017-01-18 9:09 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2017-01-18 9:09 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexander Shishkin,
Andi Kleen, David Ahern, David Carrillo-Cisneros, Jiri Olsa,
kernel-team, Mark Drayton, Michael Petlan, Minchan Kim,
Namhyung Kim, Peter Zijlstra, Soramichi Akiyama,
Stephane Eranian, Thomas Gleixner, Yannick Brosseau
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 5b485629ba0d5d027880769ff467c587b24b4bde:
>
> kprobes, extable: Identify kprobes trampolines as kernel text area (2017-01-14 08:38:05 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.11-20170117
>
> for you to fetch changes up to d94386f28abad0c5879f0760712e34e71f88a7da:
>
> perf evlist: Fix typo in deliver_sample() (2017-01-17 11:36:45 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> New feature:
>
> - Account thread wait time (off cpu time) separately: sleep, iowait and
> preempt, based on the prev_state of the last event, show the breakdown
> when using "perf sched timehist --state" (Namhyumg Kim)
>
> Infrastructure:
>
> - Factor out pmu scale conversion code (Andi Kleen)
>
> - Remove unnecessary feature-dwarf warning (David Carrillo-Cisneros)
>
> - Add missing member name in OPT_() macros (Soramichi AKIYAMA)
>
> - Move variables referenced in libperf.a object files from perf's main()
> file, so that other tools can use libperf.a with a different main()
> (Soramichi AKIYAMA)
>
> Documentation:
>
> - Fix 'perf script' man page about --dump-raw-trace option (Michael Petlan)
>
> - Also allow forcing reading of non-root owned files by root in 'perf
> script' (Yannick Brosseau)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Andi Kleen (1):
> perf pmu: Factor out scale conversion code
>
> David Carrillo-Cisneros (1):
> perf tools: Remove unneccessary feature-dwarf warning
>
> Michael Petlan (1):
> perf script: Fix man page about --dump-raw-trace option
>
> Namhyung Kim (3):
> perf sched timehist: Account thread wait time separately
> perf sched timehist: Add --state option
> perf sched timehist: Show total wait times for summary
>
> Soramichi AKIYAMA (3):
> tools lib subcmd: Fix missing member name
> perf tools: Move two variables usied in libperf from perf.c
> perf evlist: Fix typo in deliver_sample()
>
> Yannick Brosseau (1):
> perf script: Also allow forcing reading of non-root owned files by root
>
> tools/lib/subcmd/parse-options.h | 18 ++---
> tools/perf/Build | 3 +-
> tools/perf/Documentation/perf-sched.txt | 2 +
> tools/perf/Documentation/perf-script.txt | 4 +-
> tools/perf/Makefile.config | 6 +-
> tools/perf/builtin-sched.c | 130 ++++++++++++++++++++++++++++---
> tools/perf/builtin-script.c | 3 +-
> tools/perf/perf.c | 3 -
> tools/perf/ui/setup.c | 1 +
> tools/perf/util/Build | 1 +
> tools/perf/util/header.c | 2 +
> tools/perf/util/pmu.c | 62 ++++++++-------
> tools/perf/util/session.c | 2 +-
> 13 files changed, 177 insertions(+), 60 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2016-12-07 16:53 Arnaldo Carvalho de Melo
2016-12-07 18:17 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-07 16:53 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexei Starovoitov,
Andi Kleen, David Ahern, He Kuang, Jiri Olsa, Joe Stringer,
kernel-team, Minchan Kim, Namhyung Kim, Peter Zijlstra, pi3orama,
Wang Nan, Yannick Brosseau, Zefan Li, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, should get linux-next free of perf build fixdep
related race conditions on high core count machines,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 34c4a42791bbc455e65a15d12dcd0b6b3c52ad13:
Merge tag 'perf-core-for-mingo-20161205' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-12-06 09:14:56 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161207
for you to fetch changes up to 108a7c103b761309ccbd997002e8428808cf1e04:
perf tools: Explicitly document that --children is enabled by default (2016-12-07 12:00:35 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
Improvements:
- Improve error message when analyzing file with required events in
'perf sched timehist' (David Ahern)
Fixes:
- Force fixdep compilation to be done at the start of the build, fixing
some build race conditions in high core count machines (Jiri Olsa)
- Fix handling a zero sample->tid in 'perf sched timehist', as
sometimes that isn't the idle thread (Namhyung Kim)
Infrastructure:
- Check minimal accepted LLVM version in its feature check, 3.9 at this
time (Wang Nan)
Documentation:
- Explicitly document that --children is enabled by default (Yannick Brosseau)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
David Ahern (1):
perf sched timehist: Improve error message when analyzing wrong file
Jiri Olsa (3):
perf tools: Move PERF-VERSION-FILE target into rules area
perf tools: Force fixdep compilation at the start of the build
perf tools: Move perf build related variables under non fixdep leg
Namhyung Kim (4):
perf sched: Cleanup option processing
perf callchain: Introduce callchain_cursor__copy()
perf sched timehist: Handle zero sample->tid properly
perf sched timehist: Cleanup idle_max_cpu handling
Wang Nan (1):
perf build: Check LLVM version in feature check
Yannick Brosseau (1):
perf tools: Explicitly document that --children is enabled by default
tools/build/feature/Makefile | 8 +++-
tools/build/feature/test-llvm-version.cpp | 11 +++++
tools/build/feature/test-llvm.cpp | 5 +++
tools/perf/Documentation/perf-report.txt | 3 +-
tools/perf/Documentation/perf-top.txt | 1 +
tools/perf/Makefile.config | 8 +++-
tools/perf/Makefile.perf | 68 +++++++++++++++++++++----------
tools/perf/builtin-sched.c | 26 ++++++------
tools/perf/util/callchain.c | 27 ++++++++++++
tools/perf/util/callchain.h | 3 ++
10 files changed, 122 insertions(+), 38 deletions(-)
create mode 100644 tools/build/feature/test-llvm-version.cpp
# uname -a
Linux jouet 4.8.8-300.fc25.x86_64 #1 SMP Tue Nov 15 18:10:06 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: PERF_RECORD_* events & perf_sample fields : Ok
7: Parse perf pmu format : Ok
8: DSO data read : Ok
9: DSO data cache : Ok
10: DSO data reopen : Ok
11: Roundtrip evsel->name : Ok
12: Parse sched tracepoints fields : Ok
13: syscalls:sys_enter_openat event fields : Ok
14: Setup struct perf_event_attr : Ok
15: Match and link multiple hists : Ok
16: 'import perf' in python : Ok
17: Breakpoint overflow signal handler : Ok
18: Breakpoint overflow sampling : Ok
19: Number of exit events of a simple workload : Ok
20: Software clock events period values : Ok
21: Object code reading : Ok
22: Sample parsing : Ok
23: Use a dummy software event to keep tracking: Ok
24: Parse with no sample_id_all bit set : Ok
25: Filter hist entries : Ok
26: Lookup mmap thread : Ok
27: Share thread mg : Ok
28: Sort output of hist entries : Ok
29: Cumulate child hist entries : Ok
30: Track with sched_switch : Ok
31: Filter fds with revents mask in a fdarray : Ok
32: Add fd to a fdarray, making it autogrow : Ok
33: kmod_path__parse : Ok
34: Thread map : Ok
35: LLVM search and compile :
35.1: Basic BPF llvm compile : Ok
35.2: kbuild searching : Ok
35.3: Compile source for BPF prologue generation: Ok
35.4: Compile source for BPF relocation : Ok
36: Session topology : Ok
37: BPF filter :
37.1: Basic BPF filtering : Ok
37.2: BPF prologue generation : Ok
37.3: BPF relocation checker : Ok
38: Synthesize thread map : Ok
39: Synthesize cpu map : Ok
40: Synthesize stat config : Ok
41: Synthesize stat : Ok
42: Synthesize stat round : Ok
43: Synthesize attr update : Ok
44: Event times : Ok
45: Read backward ring buffer : Ok
46: Print cpu map : Ok
47: Probe SDT events : Ok
48: is_printable_array : Ok
49: Print bitmap : Ok
50: perf hooks : Ok
51: builtin clang support :
51.1: builtin clang compile C source to IR : Ok
51.2: builtin clang compile C source to ELF object: Ok
52: x86 rdpmc : Ok
53: Convert perf time to TSC : Ok
54: DWARF unwind : Ok
55: x86 instruction decoder - new instructions : Ok
56: Intel cqm nmi context read : Skip
#
# uname -a
Linux zoo 4.7.3-200.fc24.x86_64 #1 SMP Wed Sep 7 17:31:21 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# time dm
1 alpine:3.4: Ok
2 android-ndk:r12b-arm: Ok
3 archlinux:latest: Ok
4 centos:5: Ok
5 centos:6: Ok
6 centos:7: Ok
7 debian:7: Ok
8 debian:8: Ok
9 debian:experimental: Ok
10 fedora:20: Ok
11 fedora:21: Ok
12 fedora:22: Ok
13 fedora:23: Ok
14 fedora:24: Ok
15 fedora:24-x-ARC-uClibc: Ok
16 fedora:rawhide: Ok
17 mageia:5: Ok
18 opensuse:13.2: Ok
19 opensuse:42.1: Ok
20 opensuse:tumbleweed: Ok
21 ubuntu:12.04.5: Ok
22 ubuntu:14.04: Ok
23 ubuntu:14.04.4: Ok
24 ubuntu:15.10: Ok
25 ubuntu:16.04: Ok
26 ubuntu:16.04-x-arm: Ok
27 ubuntu:16.04-x-arm64: Ok
28 ubuntu:16.04-x-powerpc: Ok
29 ubuntu:16.04-x-powerpc64: Ok
30 ubuntu:16.04-x-powerpc64el: Ok
31 ubuntu:16.04-x-s390: Ok
32 ubuntu:16.10: Ok
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_help_O: make help
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_install_O: make install
make_static_O: make LDFLAGS=-static
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_doc_O: make doc
make_no_libbpf_O: make NO_LIBBPF=1
make_util_map_o_O: make util/map.o
make_install_bin_O: make install-bin
make_no_auxtrace_O: make NO_AUXTRACE=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_debug_O: make DEBUG=1
make_no_libelf_O: make NO_LIBELF=1
make_clean_all_O: make clean all
make_no_libperl_O: make NO_LIBPERL=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_slang_O: make NO_SLANG=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_gtk2_O: make NO_GTK2=1
make_pure_O: make
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_install_prefix_O: make install prefix=/tmp/krava
make_tags_O: make tags
make_no_demangle_O: make NO_DEMANGLE=1
make_perf_o_O: make perf.o
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_no_newt_O: make NO_NEWT=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-12-07 16:53 Arnaldo Carvalho de Melo
@ 2016-12-07 18:17 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2016-12-07 18:17 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Alexei Starovoitov, Andi Kleen, David Ahern,
He Kuang, Jiri Olsa, Joe Stringer, kernel-team, Minchan Kim,
Namhyung Kim, Peter Zijlstra, pi3orama, Wang Nan,
Yannick Brosseau, Zefan Li, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling, should get linux-next free of perf build fixdep
> related race conditions on high core count machines,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 34c4a42791bbc455e65a15d12dcd0b6b3c52ad13:
>
> Merge tag 'perf-core-for-mingo-20161205' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-12-06 09:14:56 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161207
>
> for you to fetch changes up to 108a7c103b761309ccbd997002e8428808cf1e04:
>
> perf tools: Explicitly document that --children is enabled by default (2016-12-07 12:00:35 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> Improvements:
>
> - Improve error message when analyzing file with required events in
> 'perf sched timehist' (David Ahern)
>
> Fixes:
>
> - Force fixdep compilation to be done at the start of the build, fixing
> some build race conditions in high core count machines (Jiri Olsa)
>
> - Fix handling a zero sample->tid in 'perf sched timehist', as
> sometimes that isn't the idle thread (Namhyung Kim)
>
> Infrastructure:
>
> - Check minimal accepted LLVM version in its feature check, 3.9 at this
> time (Wang Nan)
>
> Documentation:
>
> - Explicitly document that --children is enabled by default (Yannick Brosseau)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> David Ahern (1):
> perf sched timehist: Improve error message when analyzing wrong file
>
> Jiri Olsa (3):
> perf tools: Move PERF-VERSION-FILE target into rules area
> perf tools: Force fixdep compilation at the start of the build
> perf tools: Move perf build related variables under non fixdep leg
>
> Namhyung Kim (4):
> perf sched: Cleanup option processing
> perf callchain: Introduce callchain_cursor__copy()
> perf sched timehist: Handle zero sample->tid properly
> perf sched timehist: Cleanup idle_max_cpu handling
>
> Wang Nan (1):
> perf build: Check LLVM version in feature check
>
> Yannick Brosseau (1):
> perf tools: Explicitly document that --children is enabled by default
>
> tools/build/feature/Makefile | 8 +++-
> tools/build/feature/test-llvm-version.cpp | 11 +++++
> tools/build/feature/test-llvm.cpp | 5 +++
> tools/perf/Documentation/perf-report.txt | 3 +-
> tools/perf/Documentation/perf-top.txt | 1 +
> tools/perf/Makefile.config | 8 +++-
> tools/perf/Makefile.perf | 68 +++++++++++++++++++++----------
> tools/perf/builtin-sched.c | 26 ++++++------
> tools/perf/util/callchain.c | 27 ++++++++++++
> tools/perf/util/callchain.h | 3 ++
> 10 files changed, 122 insertions(+), 38 deletions(-)
> create mode 100644 tools/build/feature/test-llvm-version.cpp
>
> # uname -a
> Linux jouet 4.8.8-300.fc25.x86_64 #1 SMP Tue Nov 15 18:10:06 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
> # perf test
> 1: vmlinux symtab matches kallsyms : Ok
> 2: Detect openat syscall event : Ok
> 3: Detect openat syscall event on all cpus : Ok
> 4: Read samples using the mmap interface : Ok
> 5: Parse event definition strings : Ok
> 6: PERF_RECORD_* events & perf_sample fields : Ok
> 7: Parse perf pmu format : Ok
> 8: DSO data read : Ok
> 9: DSO data cache : Ok
> 10: DSO data reopen : Ok
> 11: Roundtrip evsel->name : Ok
> 12: Parse sched tracepoints fields : Ok
> 13: syscalls:sys_enter_openat event fields : Ok
> 14: Setup struct perf_event_attr : Ok
> 15: Match and link multiple hists : Ok
> 16: 'import perf' in python : Ok
> 17: Breakpoint overflow signal handler : Ok
> 18: Breakpoint overflow sampling : Ok
> 19: Number of exit events of a simple workload : Ok
> 20: Software clock events period values : Ok
> 21: Object code reading : Ok
> 22: Sample parsing : Ok
> 23: Use a dummy software event to keep tracking: Ok
> 24: Parse with no sample_id_all bit set : Ok
> 25: Filter hist entries : Ok
> 26: Lookup mmap thread : Ok
> 27: Share thread mg : Ok
> 28: Sort output of hist entries : Ok
> 29: Cumulate child hist entries : Ok
> 30: Track with sched_switch : Ok
> 31: Filter fds with revents mask in a fdarray : Ok
> 32: Add fd to a fdarray, making it autogrow : Ok
> 33: kmod_path__parse : Ok
> 34: Thread map : Ok
> 35: LLVM search and compile :
> 35.1: Basic BPF llvm compile : Ok
> 35.2: kbuild searching : Ok
> 35.3: Compile source for BPF prologue generation: Ok
> 35.4: Compile source for BPF relocation : Ok
> 36: Session topology : Ok
> 37: BPF filter :
> 37.1: Basic BPF filtering : Ok
> 37.2: BPF prologue generation : Ok
> 37.3: BPF relocation checker : Ok
> 38: Synthesize thread map : Ok
> 39: Synthesize cpu map : Ok
> 40: Synthesize stat config : Ok
> 41: Synthesize stat : Ok
> 42: Synthesize stat round : Ok
> 43: Synthesize attr update : Ok
> 44: Event times : Ok
> 45: Read backward ring buffer : Ok
> 46: Print cpu map : Ok
> 47: Probe SDT events : Ok
> 48: is_printable_array : Ok
> 49: Print bitmap : Ok
> 50: perf hooks : Ok
> 51: builtin clang support :
> 51.1: builtin clang compile C source to IR : Ok
> 51.2: builtin clang compile C source to ELF object: Ok
> 52: x86 rdpmc : Ok
> 53: Convert perf time to TSC : Ok
> 54: DWARF unwind : Ok
> 55: x86 instruction decoder - new instructions : Ok
> 56: Intel cqm nmi context read : Skip
> #
> # uname -a
> Linux zoo 4.7.3-200.fc24.x86_64 #1 SMP Wed Sep 7 17:31:21 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
> # time dm
> 1 alpine:3.4: Ok
> 2 android-ndk:r12b-arm: Ok
> 3 archlinux:latest: Ok
> 4 centos:5: Ok
> 5 centos:6: Ok
> 6 centos:7: Ok
> 7 debian:7: Ok
> 8 debian:8: Ok
> 9 debian:experimental: Ok
> 10 fedora:20: Ok
> 11 fedora:21: Ok
> 12 fedora:22: Ok
> 13 fedora:23: Ok
> 14 fedora:24: Ok
> 15 fedora:24-x-ARC-uClibc: Ok
> 16 fedora:rawhide: Ok
> 17 mageia:5: Ok
> 18 opensuse:13.2: Ok
> 19 opensuse:42.1: Ok
> 20 opensuse:tumbleweed: Ok
> 21 ubuntu:12.04.5: Ok
> 22 ubuntu:14.04: Ok
> 23 ubuntu:14.04.4: Ok
> 24 ubuntu:15.10: Ok
> 25 ubuntu:16.04: Ok
> 26 ubuntu:16.04-x-arm: Ok
> 27 ubuntu:16.04-x-arm64: Ok
> 28 ubuntu:16.04-x-powerpc: Ok
> 29 ubuntu:16.04-x-powerpc64: Ok
> 30 ubuntu:16.04-x-powerpc64el: Ok
> 31 ubuntu:16.04-x-s390: Ok
> 32 ubuntu:16.10: Ok
> #
> $ make -C tools/perf build-test
> make: Entering directory '/home/acme/git/linux/tools/perf'
> - tarpkg: ./tests/perf-targz-src-pkg .
> make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
> make_help_O: make help
> make_install_prefix_slash_O: make install prefix=/tmp/krava/
> make_install_O: make install
> make_static_O: make LDFLAGS=-static
> make_no_libbionic_O: make NO_LIBBIONIC=1
> make_no_backtrace_O: make NO_BACKTRACE=1
> make_no_libunwind_O: make NO_LIBUNWIND=1
> make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
> make_doc_O: make doc
> make_no_libbpf_O: make NO_LIBBPF=1
> make_util_map_o_O: make util/map.o
> make_install_bin_O: make install-bin
> make_no_auxtrace_O: make NO_AUXTRACE=1
> make_with_babeltrace_O: make LIBBABELTRACE=1
> make_with_clangllvm_O: make LIBCLANGLLVM=1
> make_debug_O: make DEBUG=1
> make_no_libelf_O: make NO_LIBELF=1
> make_clean_all_O: make clean all
> make_no_libperl_O: make NO_LIBPERL=1
> make_no_libaudit_O: make NO_LIBAUDIT=1
> make_no_slang_O: make NO_SLANG=1
> make_util_pmu_bison_o_O: make util/pmu-bison.o
> make_no_gtk2_O: make NO_GTK2=1
> make_pure_O: make
> make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
> make_install_prefix_O: make install prefix=/tmp/krava
> make_tags_O: make tags
> make_no_demangle_O: make NO_DEMANGLE=1
> make_perf_o_O: make perf.o
> make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
> make_no_libnuma_O: make NO_LIBNUMA=1
> make_no_libpython_O: make NO_LIBPYTHON=1
> make_no_newt_O: make NO_NEWT=1
> OK
> make: Leaving directory '/home/acme/git/linux/tools/perf'
> $
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2016-06-20 22:23 Arnaldo Carvalho de Melo
2016-06-21 2:18 ` Namhyung Kim
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-06-20 22:23 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, Alexei Starovoitov, Andi Kleen,
Brendan Gregg, David Ahern, Ekaterina Tumanova, He Kuang,
Jean Delvare, Jiri Olsa, Josh Poimboeuf, Kan Liang, linux-kbuild,
Masami Hiramatsu, Michal Marek, Namhyung Kim, Paolo Bonzini,
Pekka Enberg, Peter Zijlstra, pi3orama, Stephane Eranian,
Sukadev Bhattiprolu, Wang Nan, Zefan Li,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 02469a95096a549508c5adf61d84a1d72851c85b:
Merge tag 'perf-core-for-mingo-20160615' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-06-16 10:27:35 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160620
for you to fetch changes up to 2a0a7c72702bac1b87cd4d49196a334483386fab:
perf script: Add stackcollapse.py script (2016-06-20 17:50:39 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
New features:
. Add --dry-run option to 'perf record' to check if command line options can be
parsed, but not doing any recording (Wang Nan)
. Allow dumping the object files generated by llvm when processing eBPF
scriptlet events (Wang Nan)
- Add stackcollapse.py script to help generating flame graphs (Paolo Bonzini)
Documentation:
. Fix 'perf script' documentation of '-f' when it should be '-F' (Adrian Hunter)
Infrastructure:
- Fix write_backwards fallback when using a new tool on older kernels
without support for this feature (Arnaldo Carvalho de Melo)
- Find vdso file in cross-platform perf.data file processing scenarios (He Kuang)
- Remove some leftovers from the initial codebase copying from git
(Arnaldo Carvalho de Melo)
- List libelf-devel as an alternative, as this is how the libelf
development package is called on OpenSuSE (Jean Delvare)
- Rename __hists__add_entry to hists__add_entry (Jiri Olsa)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (1):
perf script: Fix documentation of '-f' when it should be '-F'
Arnaldo Carvalho de Melo (3):
perf tools: Remove some unused functions
perf tools: Remove --perf-dir and --work-dir
perf evsel: Fix write_backwards fallback
He Kuang (1):
perf tools: Find vdso with the consider of cross-platform
Jean Delvare (1):
kbuild: List libelf-devel as an alternative
Jiri Olsa (1):
perf hists: Rename __hists__add_entry to hists__add_entry
Paolo Bonzini (1):
perf script: Add stackcollapse.py script
Wang Nan (2):
perf llvm: Allow dump llvm output object file using llvm.dump-obj
perf record: Add --dry-run option to check cmdline options
Makefile | 2 +-
tools/perf/Documentation/perf-record.txt | 7 ++
tools/perf/Documentation/perf-script.txt | 20 ++--
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-diff.c | 12 +-
tools/perf/builtin-record.c | 7 ++
tools/perf/config/Makefile | 2 +-
tools/perf/perf.c | 36 ------
tools/perf/scripts/python/bin/stackcollapse-record | 8 ++
tools/perf/scripts/python/bin/stackcollapse-report | 3 +
tools/perf/scripts/python/stackcollapse.py | 127 +++++++++++++++++++++
tools/perf/tests/hists_link.c | 4 +-
tools/perf/util/cache.h | 9 --
tools/perf/util/config.c | 2 +-
tools/perf/util/evsel.c | 23 ++--
tools/perf/util/hist.c | 34 +++---
tools/perf/util/hist.h | 14 +--
tools/perf/util/llvm-utils.c | 42 +++++++
tools/perf/util/llvm-utils.h | 5 +
tools/perf/util/path.c | 65 +----------
tools/perf/util/vdso.c | 40 ++++++-
21 files changed, 288 insertions(+), 176 deletions(-)
create mode 100755 tools/perf/scripts/python/bin/stackcollapse-record
create mode 100755 tools/perf/scripts/python/bin/stackcollapse-report
create mode 100755 tools/perf/scripts/python/stackcollapse.py
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-06-20 22:23 Arnaldo Carvalho de Melo
@ 2016-06-21 2:18 ` Namhyung Kim
2016-06-21 3:11 ` Brendan Gregg
0 siblings, 1 reply; 62+ messages in thread
From: Namhyung Kim @ 2016-06-21 2:18 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, linux-kernel, Adrian Hunter, Alexander Shishkin,
Alexei Starovoitov, Andi Kleen, Brendan Gregg, David Ahern,
Ekaterina Tumanova, He Kuang, Jean Delvare, Jiri Olsa,
Josh Poimboeuf, Kan Liang, linux-kbuild, Masami Hiramatsu,
Michal Marek, Paolo Bonzini, Pekka Enberg, Peter Zijlstra,
pi3orama, Stephane Eranian, Sukadev Bhattiprolu, Wang Nan,
Zefan Li, Arnaldo Carvalho de Melo
Hi Arnaldo,
On Mon, Jun 20, 2016 at 07:23:20PM -0300, Arnaldo Carvalho de Melo wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 02469a95096a549508c5adf61d84a1d72851c85b:
>
> Merge tag 'perf-core-for-mingo-20160615' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-06-16 10:27:35 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160620
>
> for you to fetch changes up to 2a0a7c72702bac1b87cd4d49196a334483386fab:
>
> perf script: Add stackcollapse.py script (2016-06-20 17:50:39 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> New features:
>
> . Add --dry-run option to 'perf record' to check if command line options can be
> parsed, but not doing any recording (Wang Nan)
>
> . Allow dumping the object files generated by llvm when processing eBPF
> scriptlet events (Wang Nan)
>
> - Add stackcollapse.py script to help generating flame graphs (Paolo Bonzini)
I think this is already done by '-g folded'. Please see:
http://www.brendangregg.com/blog/2016-04-30/linux-perf-folded.html
Thanks,
Namhyung
>
> Documentation:
>
> . Fix 'perf script' documentation of '-f' when it should be '-F' (Adrian Hunter)
>
> Infrastructure:
>
> - Fix write_backwards fallback when using a new tool on older kernels
> without support for this feature (Arnaldo Carvalho de Melo)
>
> - Find vdso file in cross-platform perf.data file processing scenarios (He Kuang)
>
> - Remove some leftovers from the initial codebase copying from git
> (Arnaldo Carvalho de Melo)
>
> - List libelf-devel as an alternative, as this is how the libelf
> development package is called on OpenSuSE (Jean Delvare)
>
> - Rename __hists__add_entry to hists__add_entry (Jiri Olsa)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (1):
> perf script: Fix documentation of '-f' when it should be '-F'
>
> Arnaldo Carvalho de Melo (3):
> perf tools: Remove some unused functions
> perf tools: Remove --perf-dir and --work-dir
> perf evsel: Fix write_backwards fallback
>
> He Kuang (1):
> perf tools: Find vdso with the consider of cross-platform
>
> Jean Delvare (1):
> kbuild: List libelf-devel as an alternative
>
> Jiri Olsa (1):
> perf hists: Rename __hists__add_entry to hists__add_entry
>
> Paolo Bonzini (1):
> perf script: Add stackcollapse.py script
>
> Wang Nan (2):
> perf llvm: Allow dump llvm output object file using llvm.dump-obj
> perf record: Add --dry-run option to check cmdline options
>
> Makefile | 2 +-
> tools/perf/Documentation/perf-record.txt | 7 ++
> tools/perf/Documentation/perf-script.txt | 20 ++--
> tools/perf/builtin-annotate.c | 2 +-
> tools/perf/builtin-diff.c | 12 +-
> tools/perf/builtin-record.c | 7 ++
> tools/perf/config/Makefile | 2 +-
> tools/perf/perf.c | 36 ------
> tools/perf/scripts/python/bin/stackcollapse-record | 8 ++
> tools/perf/scripts/python/bin/stackcollapse-report | 3 +
> tools/perf/scripts/python/stackcollapse.py | 127 +++++++++++++++++++++
> tools/perf/tests/hists_link.c | 4 +-
> tools/perf/util/cache.h | 9 --
> tools/perf/util/config.c | 2 +-
> tools/perf/util/evsel.c | 23 ++--
> tools/perf/util/hist.c | 34 +++---
> tools/perf/util/hist.h | 14 +--
> tools/perf/util/llvm-utils.c | 42 +++++++
> tools/perf/util/llvm-utils.h | 5 +
> tools/perf/util/path.c | 65 +----------
> tools/perf/util/vdso.c | 40 ++++++-
> 21 files changed, 288 insertions(+), 176 deletions(-)
> create mode 100755 tools/perf/scripts/python/bin/stackcollapse-record
> create mode 100755 tools/perf/scripts/python/bin/stackcollapse-report
> create mode 100755 tools/perf/scripts/python/stackcollapse.py
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-06-21 2:18 ` Namhyung Kim
@ 2016-06-21 3:11 ` Brendan Gregg
2016-06-21 10:08 ` Paolo Bonzini
0 siblings, 1 reply; 62+ messages in thread
From: Brendan Gregg @ 2016-06-21 3:11 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
Adrian Hunter, Alexander Shishkin, Alexei Starovoitov,
Andi Kleen, David Ahern, Ekaterina Tumanova, He Kuang,
Jean Delvare, Jiri Olsa, Josh Poimboeuf, Kan Liang, linux-kbuild,
Masami Hiramatsu, Michal Marek, Paolo Bonzini, Pekka Enberg,
Peter Zijlstra, pi3orama, Stephane Eranian, Sukadev Bhattiprolu,
Wang Nan, Zefan Li, Arnaldo Carvalho de Melo
On Mon, Jun 20, 2016 at 7:18 PM, Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hi Arnaldo,
>
> On Mon, Jun 20, 2016 at 07:23:20PM -0300, Arnaldo Carvalho de Melo wrote:
> > Hi Ingo,
> >
> > Please consider pulling,
> >
> > - Arnaldo
> >
> > The following changes since commit 02469a95096a549508c5adf61d84a1d72851c85b:
> >
> > Merge tag 'perf-core-for-mingo-20160615' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-06-16 10:27:35 +0200)
> >
> > are available in the git repository at:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160620
> >
> > for you to fetch changes up to 2a0a7c72702bac1b87cd4d49196a334483386fab:
> >
> > perf script: Add stackcollapse.py script (2016-06-20 17:50:39 -0300)
> >
> > ----------------------------------------------------------------
> > perf/core improvements and fixes:
> >
> > New features:
> >
> > . Add --dry-run option to 'perf record' to check if command line options can be
> > parsed, but not doing any recording (Wang Nan)
> >
> > . Allow dumping the object files generated by llvm when processing eBPF
> > scriptlet events (Wang Nan)
> >
> > - Add stackcollapse.py script to help generating flame graphs (Paolo Bonzini)
>
> I think this is already done by '-g folded'. Please see:
>
> http://www.brendangregg.com/blog/2016-04-30/linux-perf-folded.html
>
Pretty much. Two similar solutions were developed around the same
time. Although I have to use some awk to get "perf -g folded" in the
exact right format, and stackcollapse-perf.py does that directly.
Brendan
Brendan Gregg, Senior Performance Architect, Netflix
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-06-21 3:11 ` Brendan Gregg
@ 2016-06-21 10:08 ` Paolo Bonzini
2016-06-21 16:14 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 62+ messages in thread
From: Paolo Bonzini @ 2016-06-21 10:08 UTC (permalink / raw)
To: Brendan Gregg, Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
Adrian Hunter, Alexander Shishkin, Alexei Starovoitov,
Andi Kleen, David Ahern, Ekaterina Tumanova, He Kuang,
Jean Delvare, Jiri Olsa, Josh Poimboeuf, Kan Liang, linux-kbuild,
Masami Hiramatsu, Michal Marek, Pekka Enberg, Peter Zijlstra,
pi3orama, Stephane Eranian, Sukadev Bhattiprolu, Wang Nan,
Zefan Li, Arnaldo Carvalho de Melo
On 21/06/2016 05:11, Brendan Gregg wrote:
>>> > > - Add stackcollapse.py script to help generating flame graphs (Paolo Bonzini)
>> >
>> > I think this is already done by '-g folded'. Please see:
>> >
>> > http://www.brendangregg.com/blog/2016-04-30/linux-perf-folded.html
>> >
> Pretty much. Two similar solutions were developed around the same
> time. Although I have to use some awk to get "perf -g folded" in the
> exact right format, and stackcollapse-perf.py does that directly.
Yes, the idea for stackcollapse-perf.py was:
- to do everything directly and emit "the right" format for the
flamegraph tools. This however is a very minimal output, and it's not
necessarily the best for perf in general.
- to provide an example of visiting callgraphs from the scripting
interface, since it's not really documented. From the commit message:
"Add stackcollapse.py script as an example of parsing call chains, and
also of using optparse to access command line options".
Paolo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-06-21 10:08 ` Paolo Bonzini
@ 2016-06-21 16:14 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-06-21 16:14 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Brendan Gregg, Namhyung Kim, Arnaldo Carvalho de Melo,
Ingo Molnar, linux-kernel, Adrian Hunter, Alexander Shishkin,
Alexei Starovoitov, Andi Kleen, David Ahern, Ekaterina Tumanova,
He Kuang, Jean Delvare, Jiri Olsa, Josh Poimboeuf, Kan Liang,
linux-kbuild, Masami Hiramatsu, Michal Marek, Pekka Enberg,
Peter Zijlstra, pi3orama, Stephane Eranian, Sukadev Bhattiprolu,
Wang Nan, Zefan Li
Em Tue, Jun 21, 2016 at 12:08:47PM +0200, Paolo Bonzini escreveu:
> On 21/06/2016 05:11, Brendan Gregg wrote:
> >>> > > - Add stackcollapse.py script to help generating flame graphs (Paolo Bonzini)
> >> >
> >> > I think this is already done by '-g folded'. Please see:
> >> >
> >> > http://www.brendangregg.com/blog/2016-04-30/linux-perf-folded.html
> >> >
> > Pretty much. Two similar solutions were developed around the same
> > time. Although I have to use some awk to get "perf -g folded" in the
> > exact right format, and stackcollapse-perf.py does that directly.
>
> Yes, the idea for stackcollapse-perf.py was:
>
> - to do everything directly and emit "the right" format for the
> flamegraph tools. This however is a very minimal output, and it's not
> necessarily the best for perf in general.
>
> - to provide an example of visiting callgraphs from the scripting
> interface, since it's not really documented. From the commit message:
> "Add stackcollapse.py script as an example of parsing call chains, and
> also of using optparse to access command line options".
Yeah, agreed, its short, and it provides the output ready to be used, no
need for extra processing, up to the user to decide if one or the other
is more suitable to their needs.
As a bonus, it documents callgraphs in scripts, good deal :-)
- Arnaldo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2016-05-25 21:34 Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-25 21:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, Alexei Starovoitov, Andi Kleen,
Brendan Gregg, David Ahern, Frederic Weisbecker, He Kuang,
Jiri Olsa, Linus Torvalds, Masami Hiramatsu, Milian Wolff,
Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian,
Thomas Gleixner, Vince Weaver, Wang Nan, Zefan Li,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 275ae411e56f8f900fa364da29c4706f9af4e1f3:
perf/x86/intel/rapl: Fix pmus free during cleanup (2016-05-25 10:56:43 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160525
for you to fetch changes up to 83e1e314baf9a1424bf2f50953ed7d50612763c4:
tools: Pass arg to fdarray__filter's call back function (2016-05-25 17:27:25 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible/kernel ABI:
- Per event callchain limit: Recently we introduced a sysctl to tune the
max-stack for all events for which callchains were requested:
$ sysctl kernel.perf_event_max_stack
kernel.perf_event_max_stack = 127
Now this patch introduces a way to configure this per event, i.e. this
becomes possible:
$ perf record -e sched:*/max-stack=2/ -e block:*/max-stack=10/ -a
allowing finer tuning of how much buffer space callchains use.
This uses an u16 from the reserved space at the end, leaving another
u16 for future use.
There has been interest in even finer tuning, namely to control the
max stack for kernel and userspace callchains separately. Further
discussion is needed, we may for instance use the remaining u16 for
that and when it is present, assume that the sample_max_stack introduced
in this patch applies for the kernel, and the u16 left is used for
limiting the userspace callchain. (Arnaldo Carvalho de Melo)
- Fix kptr_restrict=2 related 'perf record' segfault (Wang Nan)
Infrastructure;
- Adopt get_main_thread from db-export.c (Andi Kleen)
- More prep work for backward ring buffer support (Wang Nan)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (1):
perf thread: Adopt get_main_thread from db-export.c
Arnaldo Carvalho de Melo (2):
perf core: Per event callchain limit
perf tools: Per event max-stack settings
Wang Nan (7):
perf symbols: Check kptr_restrict for root
perf record: Fix crash when kptr is restricted
perf record: Robustify perf_event__synth_time_conv()
perf evlist: Don't poll and mmap overwritable events
perf evlist: Check 'base' pointer before checking refcnt when put a mmap
perf evlist: Choose correct reading direction according to evlist->backward
tools: Pass arg to fdarray__filter's call back function
include/linux/perf_event.h | 2 +-
include/uapi/linux/perf_event.h | 6 +++++-
kernel/bpf/stackmap.c | 2 +-
kernel/events/callchain.c | 14 ++++++++++++--
kernel/events/core.c | 5 ++++-
tools/lib/api/fd/array.c | 5 +++--
tools/lib/api/fd/array.h | 3 ++-
tools/perf/arch/x86/util/tsc.c | 2 ++
tools/perf/builtin-record.c | 9 ++++++++-
tools/perf/tests/fdarray.c | 8 ++++----
tools/perf/util/callchain.h | 1 +
tools/perf/util/db-export.c | 13 +------------
tools/perf/util/event.c | 2 ++
tools/perf/util/evlist.c | 43 ++++++++++++++++++++++++++++++++---------
tools/perf/util/evlist.h | 2 ++
tools/perf/util/evsel.c | 16 +++++++++++++--
tools/perf/util/evsel.h | 2 ++
tools/perf/util/parse-events.c | 8 ++++++++
tools/perf/util/parse-events.h | 1 +
tools/perf/util/parse-events.l | 1 +
tools/perf/util/session.c | 2 ++
tools/perf/util/symbol.c | 16 +++++++--------
tools/perf/util/thread.c | 11 +++++++++++
tools/perf/util/thread.h | 2 ++
24 files changed, 131 insertions(+), 45 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2016-04-01 21:56 Arnaldo Carvalho de Melo
2016-04-06 6:47 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-04-01 21:56 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, Andi Kleen, David Ahern, He Kuang, Jiri Olsa,
Josh Poimboeuf, Kan Liang, Milian Wolff, Namhyung Kim,
Peter Zijlstra, pi3orama, Stephane Eranian, Sukadev Bhattiprolu,
Wang Nan, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit d1b26c70246bc72922ae61d9f972d5c2588409e7:
perf/ring_buffer: Prepare writing into the ring-buffer from the end (2016-03-31 10:30:49 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160401
for you to fetch changes up to d37ba880598654fda10b312331377cdca3edd574:
perf bpf: Add sample types for 'bpf-output' event (2016-04-01 18:46:25 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Do not use events that don't have timestamps when setting 'perf trace's
base timestamp, fixing up the timestamp column for syscalls (Arnaldo Carvalho de Melo)
- Make the 'bpf-output' sample_type be the same as tracepoint's, fixing up
'perf trace's timestamp column for bpf events (Wang Nan)
- Fix PMU term format max value calculation (Kan Liang)
- Pretty print 'seccomp', 'getrandom' syscalls in 'perf trace' (Arnaldo Carvalho de Melo)
Infrastructure:
- Add support for using TSC as an ARCH timestamp when synthesizing
JIT records (Adrian Hunter)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (3):
perf tools: Add time conversion event
perf jit: Add support for using TSC as a timestamp
perf intel-pt/bts: Define JITDUMP_USE_ARCH_TIMESTAMP
Arnaldo Carvalho de Melo (5):
perf trace: Do not process PERF_RECORD_LOST twice
perf trace: Pretty print seccomp() args
perf trace: Pretty print getrandom() args
perf trace: Introduce function to set the base timestamp
perf trace: Don't set the base timestamp using events without PERF_SAMPLE_TIME
Kan Liang (1):
perf tools: Fix PMU term format max value calculation
Wang Nan (1):
perf bpf: Add sample types for 'bpf-output' event
tools/perf/arch/x86/util/intel-bts.c | 5 ++
tools/perf/arch/x86/util/intel-pt.c | 5 ++
tools/perf/arch/x86/util/tsc.c | 32 +++++++++++-
tools/perf/arch/x86/util/tsc.h | 17 -------
tools/perf/builtin-inject.c | 1 +
tools/perf/builtin-record.c | 15 ++++++
tools/perf/builtin-trace.c | 99 ++++++++++++++++++++++++++++++++++--
tools/perf/jvmti/jvmti_agent.c | 43 +++++++++++++++-
tools/perf/util/Build | 3 +-
tools/perf/util/event.c | 1 +
tools/perf/util/event.h | 9 ++++
tools/perf/util/evsel.c | 3 +-
tools/perf/util/jitdump.c | 37 ++++++++++++--
tools/perf/util/jitdump.h | 3 ++
tools/perf/util/pmu.c | 13 +++--
tools/perf/util/session.c | 6 +++
tools/perf/util/session.h | 1 +
tools/perf/util/tool.h | 1 +
tools/perf/util/tsc.h | 21 +++++++-
19 files changed, 274 insertions(+), 41 deletions(-)
delete mode 100644 tools/perf/arch/x86/util/tsc.h
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-04-01 21:56 Arnaldo Carvalho de Melo
@ 2016-04-06 6:47 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2016-04-06 6:47 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Andi Kleen,
David Ahern, He Kuang, Jiri Olsa, Josh Poimboeuf, Kan Liang,
Milian Wolff, Namhyung Kim, Peter Zijlstra, pi3orama,
Stephane Eranian, Sukadev Bhattiprolu, Wang Nan,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit d1b26c70246bc72922ae61d9f972d5c2588409e7:
>
> perf/ring_buffer: Prepare writing into the ring-buffer from the end (2016-03-31 10:30:49 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160401
>
> for you to fetch changes up to d37ba880598654fda10b312331377cdca3edd574:
>
> perf bpf: Add sample types for 'bpf-output' event (2016-04-01 18:46:25 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Do not use events that don't have timestamps when setting 'perf trace's
> base timestamp, fixing up the timestamp column for syscalls (Arnaldo Carvalho de Melo)
>
> - Make the 'bpf-output' sample_type be the same as tracepoint's, fixing up
> 'perf trace's timestamp column for bpf events (Wang Nan)
>
> - Fix PMU term format max value calculation (Kan Liang)
>
> - Pretty print 'seccomp', 'getrandom' syscalls in 'perf trace' (Arnaldo Carvalho de Melo)
>
> Infrastructure:
>
> - Add support for using TSC as an ARCH timestamp when synthesizing
> JIT records (Adrian Hunter)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (3):
> perf tools: Add time conversion event
> perf jit: Add support for using TSC as a timestamp
> perf intel-pt/bts: Define JITDUMP_USE_ARCH_TIMESTAMP
>
> Arnaldo Carvalho de Melo (5):
> perf trace: Do not process PERF_RECORD_LOST twice
> perf trace: Pretty print seccomp() args
> perf trace: Pretty print getrandom() args
> perf trace: Introduce function to set the base timestamp
> perf trace: Don't set the base timestamp using events without PERF_SAMPLE_TIME
>
> Kan Liang (1):
> perf tools: Fix PMU term format max value calculation
>
> Wang Nan (1):
> perf bpf: Add sample types for 'bpf-output' event
>
> tools/perf/arch/x86/util/intel-bts.c | 5 ++
> tools/perf/arch/x86/util/intel-pt.c | 5 ++
> tools/perf/arch/x86/util/tsc.c | 32 +++++++++++-
> tools/perf/arch/x86/util/tsc.h | 17 -------
> tools/perf/builtin-inject.c | 1 +
> tools/perf/builtin-record.c | 15 ++++++
> tools/perf/builtin-trace.c | 99 ++++++++++++++++++++++++++++++++++--
> tools/perf/jvmti/jvmti_agent.c | 43 +++++++++++++++-
> tools/perf/util/Build | 3 +-
> tools/perf/util/event.c | 1 +
> tools/perf/util/event.h | 9 ++++
> tools/perf/util/evsel.c | 3 +-
> tools/perf/util/jitdump.c | 37 ++++++++++++--
> tools/perf/util/jitdump.h | 3 ++
> tools/perf/util/pmu.c | 13 +++--
> tools/perf/util/session.c | 6 +++
> tools/perf/util/session.h | 1 +
> tools/perf/util/tool.h | 1 +
> tools/perf/util/tsc.h | 21 +++++++-
> 19 files changed, 274 insertions(+), 41 deletions(-)
> delete mode 100644 tools/perf/arch/x86/util/tsc.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2016-02-16 20:34 Arnaldo Carvalho de Melo
2016-02-17 7:39 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-16 20:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Andi Kleen, David Ahern, Jiri Olsa, Kan Liang, Namhyung Kim,
Peter Zijlstra, Stephane Eranian, Wang Nan,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit fe7a2eaa71c55aadbf95d01d32df8dccc0db0646:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-16 08:45:56 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to cb110f471025f3278978aaccb18f3164ea2b8189:
perf stat: Move noise/running printing into printout (2016-02-16 17:13:02 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Make 'perf record' collect CPU cache info in the perf.data file header:
$ perf record usleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.017 MB perf.data (7 samples) ]
$ perf report --header-only -I | tail -10 | head -8
# CPU cache info:
# L1 Data 32K [0-1]
# L1 Instruction 32K [0-1]
# L1 Data 32K [2-3]
# L1 Instruction 32K [2-3]
# L2 Unified 256K [0-1]
# L2 Unified 256K [2-3]
# L3 Unified 4096K [0-3]
$
Will be used in 'perf c2c' and eventually in 'perf diff' to allow, for instance
running the same workload in multiple machines and then when using 'diff' show
the hardware difference. (Jiri Olsa)
- 'perf stat' now shows shadow metrics (insn per cycle, etc) in
interval mode too. E.g:
# perf stat -I 1000 -e instructions,cycles sleep 1
# time counts unit events
1.000215928 519,620 instructions # 0.69 insn per cycle
1.000215928 752,003 cycles
<SNIP>
Infrastructure:
- libapi now can also use pr_{warning,info,debug}() and that can be
set by tools using it (Jiri Olsa)
- libapi adopts filename__read_str() from perf, adds sysfs__read_str() (Jiri Olsa)
- Add check for java alternatives cmd in jvmti Makefile, so that it manages
to automatically find the right path for the JDK devel files in Ubuntu like
systems in addition to Fedora like ones (Stephane Eranian)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (3):
perf stat: Abstract stat metrics printing
perf stat: Add support for metrics in interval mode
perf stat: Move noise/running printing into printout
Arnaldo Carvalho de Melo (1):
perf debug: Rename __eprintf(va_list args) to veprintf
Jiri Olsa (5):
tools lib api: Add debug output support
tools lib api fs: Adopt filename__read_str from perf
tools lib api fs: Add sysfs__read_str function
perf tools: Initialize libapi debug output
perf tools: Add perf data cache feature
Stephane Eranian (1):
perf jvmti: Add check for java alternatives cmd in Makefile
tools/lib/api/Build | 1 +
tools/lib/api/Makefile | 1 +
tools/lib/api/debug-internal.h | 20 +++
tools/lib/api/debug.c | 28 +++++
tools/lib/api/debug.h | 10 ++
tools/lib/api/fs/fs.c | 64 ++++++++++
tools/lib/api/fs/fs.h | 3 +
tools/perf/builtin-stat.c | 202 +++++++++++++++---------------
tools/perf/jvmti/Makefile | 6 +-
tools/perf/perf.c | 2 +
tools/perf/util/debug.c | 36 ++++--
tools/perf/util/debug.h | 1 +
tools/perf/util/env.c | 13 ++
tools/perf/util/env.h | 15 +++
tools/perf/util/header.c | 270 +++++++++++++++++++++++++++++++++++++++++
tools/perf/util/header.h | 1 +
tools/perf/util/stat-shadow.c | 211 +++++++++++++++++---------------
tools/perf/util/stat.h | 15 ++-
tools/perf/util/trace-event.c | 1 +
tools/perf/util/util.c | 48 --------
tools/perf/util/util.h | 1 -
21 files changed, 694 insertions(+), 255 deletions(-)
create mode 100644 tools/lib/api/debug-internal.h
create mode 100644 tools/lib/api/debug.c
create mode 100644 tools/lib/api/debug.h
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2016-02-16 20:34 Arnaldo Carvalho de Melo
@ 2016-02-17 7:39 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2016-02-17 7:39 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Andi Kleen, David Ahern, Jiri Olsa,
Kan Liang, Namhyung Kim, Peter Zijlstra, Stephane Eranian,
Wang Nan, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit fe7a2eaa71c55aadbf95d01d32df8dccc0db0646:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-16 08:45:56 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to cb110f471025f3278978aaccb18f3164ea2b8189:
>
> perf stat: Move noise/running printing into printout (2016-02-16 17:13:02 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Make 'perf record' collect CPU cache info in the perf.data file header:
>
> $ perf record usleep 1
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.017 MB perf.data (7 samples) ]
> $ perf report --header-only -I | tail -10 | head -8
> # CPU cache info:
> # L1 Data 32K [0-1]
> # L1 Instruction 32K [0-1]
> # L1 Data 32K [2-3]
> # L1 Instruction 32K [2-3]
> # L2 Unified 256K [0-1]
> # L2 Unified 256K [2-3]
> # L3 Unified 4096K [0-3]
> $
>
> Will be used in 'perf c2c' and eventually in 'perf diff' to allow, for instance
> running the same workload in multiple machines and then when using 'diff' show
> the hardware difference. (Jiri Olsa)
>
> - 'perf stat' now shows shadow metrics (insn per cycle, etc) in
> interval mode too. E.g:
>
> # perf stat -I 1000 -e instructions,cycles sleep 1
> # time counts unit events
> 1.000215928 519,620 instructions # 0.69 insn per cycle
> 1.000215928 752,003 cycles
> <SNIP>
>
> Infrastructure:
>
> - libapi now can also use pr_{warning,info,debug}() and that can be
> set by tools using it (Jiri Olsa)
>
> - libapi adopts filename__read_str() from perf, adds sysfs__read_str() (Jiri Olsa)
>
> - Add check for java alternatives cmd in jvmti Makefile, so that it manages
> to automatically find the right path for the JDK devel files in Ubuntu like
> systems in addition to Fedora like ones (Stephane Eranian)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Andi Kleen (3):
> perf stat: Abstract stat metrics printing
> perf stat: Add support for metrics in interval mode
> perf stat: Move noise/running printing into printout
>
> Arnaldo Carvalho de Melo (1):
> perf debug: Rename __eprintf(va_list args) to veprintf
>
> Jiri Olsa (5):
> tools lib api: Add debug output support
> tools lib api fs: Adopt filename__read_str from perf
> tools lib api fs: Add sysfs__read_str function
> perf tools: Initialize libapi debug output
> perf tools: Add perf data cache feature
>
> Stephane Eranian (1):
> perf jvmti: Add check for java alternatives cmd in Makefile
>
> tools/lib/api/Build | 1 +
> tools/lib/api/Makefile | 1 +
> tools/lib/api/debug-internal.h | 20 +++
> tools/lib/api/debug.c | 28 +++++
> tools/lib/api/debug.h | 10 ++
> tools/lib/api/fs/fs.c | 64 ++++++++++
> tools/lib/api/fs/fs.h | 3 +
> tools/perf/builtin-stat.c | 202 +++++++++++++++---------------
> tools/perf/jvmti/Makefile | 6 +-
> tools/perf/perf.c | 2 +
> tools/perf/util/debug.c | 36 ++++--
> tools/perf/util/debug.h | 1 +
> tools/perf/util/env.c | 13 ++
> tools/perf/util/env.h | 15 +++
> tools/perf/util/header.c | 270 +++++++++++++++++++++++++++++++++++++++++
> tools/perf/util/header.h | 1 +
> tools/perf/util/stat-shadow.c | 211 +++++++++++++++++---------------
> tools/perf/util/stat.h | 15 ++-
> tools/perf/util/trace-event.c | 1 +
> tools/perf/util/util.c | 48 --------
> tools/perf/util/util.h | 1 -
> 21 files changed, 694 insertions(+), 255 deletions(-)
> create mode 100644 tools/lib/api/debug-internal.h
> create mode 100644 tools/lib/api/debug.c
> create mode 100644 tools/lib/api/debug.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2015-11-28 1:22 Arnaldo Carvalho de Melo
2015-11-28 9:50 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-11-28 1:22 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexei Starovoitov, David Ahern, He Kuang, Jiri Olsa,
Masami Hiramatsu, Michael Petlan, Namhyung Kim, Peter Zijlstra,
pi3orama, Wang Nan, Zefan Li
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider applying,
- Arnaldo
The following changes since commit 3f3b1a46bfdbce97dd3f9594d8a95db82baa554b:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-11-27 08:28:44 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to 0bb93490170477224f8bd4cc9ce8920517461643:
perf bpf: Rename bpf config to program config (2015-11-27 22:00:46 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Fix 'perf list' segfault due to lack of support for PERF_CONF_SW_BPF_OUTPUT
in an array used just for printing available events, robustify the code
involved (Arnaldo Carvalho de Melo)
- 'perf test unwind' should create kernel maps, now that entry works and the
test passes (Jiri Olsa)
- Fix showing the running kernel build id in 'perf buildid-list' (Michael Petlan)
- Fix command line symbol filtering in 'perf report' (Namhyung Kim)
Infrastructure:
- Extract and collect map info from BPF object files in libbpf (Wang Nan)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf list: Add support for PERF_COUNT_SW_BPF_OUT
perf list: Robustify event printing routine
Jiri Olsa (1):
perf test: 'unwind' test should create kernel maps
Michael Petlan (1):
perf buildid-list: Show running kernel build id fix
Namhyung Kim (3):
perf report: Show error message when processing sample fails
perf hists: Do not skip elided fields when processing samples
perf hists browser: Update nr entries regardless of min percent
Wang Nan (3):
tools lib bpf: Collect map definition in bpf_object
tools lib bpf: Extract and collect map names from BPF object file
perf bpf: Rename bpf config to program config
tools/lib/bpf/libbpf.c | 252 ++++++++++++++++++++++++++++++----------
tools/lib/bpf/libbpf.h | 24 ++++
tools/perf/builtin-report.c | 12 +-
tools/perf/tests/dwarf-unwind.c | 5 +
tools/perf/ui/browsers/hists.c | 5 +-
tools/perf/util/bpf-loader.c | 65 +++++------
tools/perf/util/bpf-loader.h | 2 +-
tools/perf/util/build-id.c | 2 +-
tools/perf/util/hist.c | 6 -
tools/perf/util/parse-events.c | 6 +-
10 files changed, 268 insertions(+), 111 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-11-28 1:22 Arnaldo Carvalho de Melo
@ 2015-11-28 9:50 ` Ingo Molnar
2015-11-29 13:16 ` Namhyung Kim
0 siblings, 1 reply; 62+ messages in thread
From: Ingo Molnar @ 2015-11-28 9:50 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexei Starovoitov, David Ahern, He Kuang, Jiri Olsa,
Masami Hiramatsu, Michael Petlan, Namhyung Kim, Peter Zijlstra,
pi3orama, Wang Nan, Zefan Li
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Hi Ingo,
>
> Please consider applying,
>
> - Arnaldo
>
> The following changes since commit 3f3b1a46bfdbce97dd3f9594d8a95db82baa554b:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-11-27 08:28:44 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to 0bb93490170477224f8bd4cc9ce8920517461643:
>
> perf bpf: Rename bpf config to program config (2015-11-27 22:00:46 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Fix 'perf list' segfault due to lack of support for PERF_CONF_SW_BPF_OUTPUT
> in an array used just for printing available events, robustify the code
> involved (Arnaldo Carvalho de Melo)
>
> - 'perf test unwind' should create kernel maps, now that entry works and the
> test passes (Jiri Olsa)
>
> - Fix showing the running kernel build id in 'perf buildid-list' (Michael Petlan)
>
> - Fix command line symbol filtering in 'perf report' (Namhyung Kim)
>
> Infrastructure:
>
> - Extract and collect map info from BPF object files in libbpf (Wang Nan)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
> perf list: Add support for PERF_COUNT_SW_BPF_OUT
> perf list: Robustify event printing routine
>
> Jiri Olsa (1):
> perf test: 'unwind' test should create kernel maps
>
> Michael Petlan (1):
> perf buildid-list: Show running kernel build id fix
>
> Namhyung Kim (3):
> perf report: Show error message when processing sample fails
> perf hists: Do not skip elided fields when processing samples
> perf hists browser: Update nr entries regardless of min percent
>
> Wang Nan (3):
> tools lib bpf: Collect map definition in bpf_object
> tools lib bpf: Extract and collect map names from BPF object file
> perf bpf: Rename bpf config to program config
>
> tools/lib/bpf/libbpf.c | 252 ++++++++++++++++++++++++++++++----------
> tools/lib/bpf/libbpf.h | 24 ++++
> tools/perf/builtin-report.c | 12 +-
> tools/perf/tests/dwarf-unwind.c | 5 +
> tools/perf/ui/browsers/hists.c | 5 +-
> tools/perf/util/bpf-loader.c | 65 +++++------
> tools/perf/util/bpf-loader.h | 2 +-
> tools/perf/util/build-id.c | 2 +-
> tools/perf/util/hist.c | 6 -
> tools/perf/util/parse-events.c | 6 +-
> 10 files changed, 268 insertions(+), 111 deletions(-)
Pulled, thanks a lot Arnaldo!
Should any of the above fixes be cherry-picked over into perf/urgent, or are these
all new regressions?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-11-28 9:50 ` Ingo Molnar
@ 2015-11-29 13:16 ` Namhyung Kim
0 siblings, 0 replies; 62+ messages in thread
From: Namhyung Kim @ 2015-11-29 13:16 UTC (permalink / raw)
To: Ingo Molnar
Cc: Arnaldo Carvalho de Melo, linux-kernel, Arnaldo Carvalho de Melo,
Adrian Hunter, Alexei Starovoitov, David Ahern, He Kuang,
Jiri Olsa, Masami Hiramatsu, Michael Petlan, Peter Zijlstra,
pi3orama, Wang Nan, Zefan Li
Hi Ingo,
On Sat, Nov 28, 2015 at 10:50:19AM +0100, Ingo Molnar wrote:
>
> * Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
>
> > From: Arnaldo Carvalho de Melo <acme@redhat.com>
> >
> > Hi Ingo,
> >
> > Please consider applying,
> >
> > - Arnaldo
> >
> > The following changes since commit 3f3b1a46bfdbce97dd3f9594d8a95db82baa554b:
> >
> > Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-11-27 08:28:44 +0100)
> >
> > are available in the git repository at:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> >
> > for you to fetch changes up to 0bb93490170477224f8bd4cc9ce8920517461643:
> >
> > perf bpf: Rename bpf config to program config (2015-11-27 22:00:46 -0300)
> >
> > ----------------------------------------------------------------
> > perf/core improvements and fixes:
> >
> > User visible:
> >
> > - Fix 'perf list' segfault due to lack of support for PERF_CONF_SW_BPF_OUTPUT
> > in an array used just for printing available events, robustify the code
> > involved (Arnaldo Carvalho de Melo)
> >
> > - 'perf test unwind' should create kernel maps, now that entry works and the
> > test passes (Jiri Olsa)
> >
> > - Fix showing the running kernel build id in 'perf buildid-list' (Michael Petlan)
> >
> > - Fix command line symbol filtering in 'perf report' (Namhyung Kim)
> >
> > Infrastructure:
> >
> > - Extract and collect map info from BPF object files in libbpf (Wang Nan)
> >
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> >
> > ----------------------------------------------------------------
> > Arnaldo Carvalho de Melo (2):
> > perf list: Add support for PERF_COUNT_SW_BPF_OUT
> > perf list: Robustify event printing routine
> >
> > Jiri Olsa (1):
> > perf test: 'unwind' test should create kernel maps
> >
> > Michael Petlan (1):
> > perf buildid-list: Show running kernel build id fix
> >
> > Namhyung Kim (3):
> > perf report: Show error message when processing sample fails
> > perf hists: Do not skip elided fields when processing samples
> > perf hists browser: Update nr entries regardless of min percent
> >
> > Wang Nan (3):
> > tools lib bpf: Collect map definition in bpf_object
> > tools lib bpf: Extract and collect map names from BPF object file
> > perf bpf: Rename bpf config to program config
> >
> > tools/lib/bpf/libbpf.c | 252 ++++++++++++++++++++++++++++++----------
> > tools/lib/bpf/libbpf.h | 24 ++++
> > tools/perf/builtin-report.c | 12 +-
> > tools/perf/tests/dwarf-unwind.c | 5 +
> > tools/perf/ui/browsers/hists.c | 5 +-
> > tools/perf/util/bpf-loader.c | 65 +++++------
> > tools/perf/util/bpf-loader.h | 2 +-
> > tools/perf/util/build-id.c | 2 +-
> > tools/perf/util/hist.c | 6 -
> > tools/perf/util/parse-events.c | 6 +-
> > 10 files changed, 268 insertions(+), 111 deletions(-)
>
> Pulled, thanks a lot Arnaldo!
>
> Should any of the above fixes be cherry-picked over into perf/urgent, or are these
> all new regressions?
At least my changes should go into perf/urgent and probably stable too.
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2015-08-28 18:06 Arnaldo Carvalho de Melo
2015-08-31 8:28 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-08-28 18:06 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo, Carvalho, de, Melo <acme,
Adrian Hunter, Andi Kleen, Andy Lutomirski, Borislav Petkov,
David Ahern, Frederic Weisbecker, Hemant Kumar, Jiri Olsa,
Kan Liang, Mark Drayton, Mark Rutland, Masami Hiramatsu,
Matt Fleming, Mel Gorman, Namhyung Kim, Paul Mackerras,
Peter Zijlstra, Raphael Beamonte, Stephane Eranian,
Steven Rostedt, Tony Jones, Vlastimil Babka, Yannick Brosseau,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@kernel.org
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit d1ee8bc195ffedbf91af0245a2406d6ebd2578f8:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-08-28 08:22:02 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to 2c07144dfce366e21465cc7b0ada9f0b6dc7b7ed:
perf evlist: Add backpointer for perf_env to evlist (2015-08-28 14:54:14 -0300)
----------------------------------------------------------------
perf/core improvement and fixes:
User visible:
- Add new compaction-times python script (Tony Jones)
- Make the --[no-]-demangle/--[no-]-demangle-kernel command line
options available in 'perf script' too (Mark Drayton)
- Allow for negative numbers in libtraceevent's print format,
fixing up misformatting in some tracepoints (Steven Rostedt)
Infrastructure:
- perf_env/perf_evlist changes to allow accessing the data
structure with the environment where some perf data was
collected in functions not necessarily related to perf.data
file processing (Kan Liang)
- Cleanups for the tracepoint definition location paths routines (Jiri Olsa)
- Introduce sysfs/filename__sprintf_build_id, removing code
duplication (Masami Hiramatsu)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf trace: Add header with copyright and background info
perf evsel: Add a backpointer to the evlist a evsel is in
Jiri Olsa (2):
perf tools: Add tracing_path and remove unneeded functions
perf tools: Do not change lib/api/fs/debugfs directly
Kan Liang (2):
perf tools: Rename perf_session_env to perf_env
perf evlist: Add backpointer for perf_env to evlist
Mark Drayton (1):
perf script: Add --[no-]-demangle/--[no-]-demangle-kernel
Masami Hiramatsu (1):
perf buildid: Introduce sysfs/filename__sprintf_build_id
Steven Rostedt (1):
tools lib traceeveent: Allow for negative numbers in print format
Tony Jones (1):
perf scripts python: Add new compaction-times script
tools/lib/traceevent/event-parse.c | 1 +
tools/perf/Documentation/perf-script.txt | 7 +
tools/perf/arch/common.c | 4 +-
tools/perf/arch/common.h | 2 +-
tools/perf/builtin-buildid-cache.c | 14 +-
tools/perf/builtin-buildid-list.c | 24 +-
tools/perf/builtin-script.c | 5 +
tools/perf/builtin-trace.c | 19 ++
tools/perf/perf.c | 2 +-
.../scripts/python/bin/compaction-times-record | 2 +
.../scripts/python/bin/compaction-times-report | 4 +
tools/perf/scripts/python/compaction-times.py | 311 +++++++++++++++++++++
tools/perf/ui/browser.h | 4 +-
tools/perf/ui/browsers/header.c | 2 +-
tools/perf/ui/browsers/hists.c | 12 +-
tools/perf/util/build-id.c | 32 +++
tools/perf/util/build-id.h | 3 +
tools/perf/util/evlist.c | 2 +
tools/perf/util/evlist.h | 1 +
tools/perf/util/evsel.c | 2 +
tools/perf/util/evsel.h | 4 +
tools/perf/util/header.c | 1 +
tools/perf/util/header.h | 4 +-
tools/perf/util/hist.h | 4 +-
tools/perf/util/session.c | 2 +-
tools/perf/util/symbol.c | 4 +-
tools/perf/util/symbol.h | 4 +-
tools/perf/util/util.c | 57 +---
tools/perf/util/util.h | 2 +-
29 files changed, 433 insertions(+), 102 deletions(-)
create mode 100644 tools/perf/scripts/python/bin/compaction-times-record
create mode 100644 tools/perf/scripts/python/bin/compaction-times-report
create mode 100644 tools/perf/scripts/python/compaction-times.py
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-08-28 18:06 Arnaldo Carvalho de Melo
@ 2015-08-31 8:28 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2015-08-31 8:28 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo, Carvalho, de, Adrian Hunter, Andi Kleen,
Andy Lutomirski, Borislav Petkov, David Ahern,
Frederic Weisbecker, Hemant Kumar, Jiri Olsa, Kan Liang,
Mark Drayton, Mark Rutland, Masami Hiramatsu, Matt Fleming,
Mel Gorman, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Raphael Beamonte, Stephane Eranian, Steven Rostedt, Tony Jones,
Vlastimil Babka, Yannick Brosseau, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@kernel.org
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit d1ee8bc195ffedbf91af0245a2406d6ebd2578f8:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-08-28 08:22:02 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to 2c07144dfce366e21465cc7b0ada9f0b6dc7b7ed:
>
> perf evlist: Add backpointer for perf_env to evlist (2015-08-28 14:54:14 -0300)
>
> ----------------------------------------------------------------
> perf/core improvement and fixes:
>
> User visible:
>
> - Add new compaction-times python script (Tony Jones)
>
> - Make the --[no-]-demangle/--[no-]-demangle-kernel command line
> options available in 'perf script' too (Mark Drayton)
>
> - Allow for negative numbers in libtraceevent's print format,
> fixing up misformatting in some tracepoints (Steven Rostedt)
>
> Infrastructure:
>
> - perf_env/perf_evlist changes to allow accessing the data
> structure with the environment where some perf data was
> collected in functions not necessarily related to perf.data
> file processing (Kan Liang)
>
> - Cleanups for the tracepoint definition location paths routines (Jiri Olsa)
>
> - Introduce sysfs/filename__sprintf_build_id, removing code
> duplication (Masami Hiramatsu)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
> perf trace: Add header with copyright and background info
> perf evsel: Add a backpointer to the evlist a evsel is in
>
> Jiri Olsa (2):
> perf tools: Add tracing_path and remove unneeded functions
> perf tools: Do not change lib/api/fs/debugfs directly
>
> Kan Liang (2):
> perf tools: Rename perf_session_env to perf_env
> perf evlist: Add backpointer for perf_env to evlist
>
> Mark Drayton (1):
> perf script: Add --[no-]-demangle/--[no-]-demangle-kernel
>
> Masami Hiramatsu (1):
> perf buildid: Introduce sysfs/filename__sprintf_build_id
>
> Steven Rostedt (1):
> tools lib traceeveent: Allow for negative numbers in print format
>
> Tony Jones (1):
> perf scripts python: Add new compaction-times script
>
> tools/lib/traceevent/event-parse.c | 1 +
> tools/perf/Documentation/perf-script.txt | 7 +
> tools/perf/arch/common.c | 4 +-
> tools/perf/arch/common.h | 2 +-
> tools/perf/builtin-buildid-cache.c | 14 +-
> tools/perf/builtin-buildid-list.c | 24 +-
> tools/perf/builtin-script.c | 5 +
> tools/perf/builtin-trace.c | 19 ++
> tools/perf/perf.c | 2 +-
> .../scripts/python/bin/compaction-times-record | 2 +
> .../scripts/python/bin/compaction-times-report | 4 +
> tools/perf/scripts/python/compaction-times.py | 311 +++++++++++++++++++++
> tools/perf/ui/browser.h | 4 +-
> tools/perf/ui/browsers/header.c | 2 +-
> tools/perf/ui/browsers/hists.c | 12 +-
> tools/perf/util/build-id.c | 32 +++
> tools/perf/util/build-id.h | 3 +
> tools/perf/util/evlist.c | 2 +
> tools/perf/util/evlist.h | 1 +
> tools/perf/util/evsel.c | 2 +
> tools/perf/util/evsel.h | 4 +
> tools/perf/util/header.c | 1 +
> tools/perf/util/header.h | 4 +-
> tools/perf/util/hist.h | 4 +-
> tools/perf/util/session.c | 2 +-
> tools/perf/util/symbol.c | 4 +-
> tools/perf/util/symbol.h | 4 +-
> tools/perf/util/util.c | 57 +---
> tools/perf/util/util.h | 2 +-
> 29 files changed, 433 insertions(+), 102 deletions(-)
> create mode 100644 tools/perf/scripts/python/bin/compaction-times-record
> create mode 100644 tools/perf/scripts/python/bin/compaction-times-report
> create mode 100644 tools/perf/scripts/python/compaction-times.py
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2015-07-30 16:16 Arnaldo Carvalho de Melo
2015-07-31 8:04 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-07-30 16:16 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Andi Kleen, Borislav Petkov, David Ahern, Frederic Weisbecker,
Jaroslav Skarvada, Jeremy Eder, Jiri Olsa, Kan Liang,
Luiz Fernando Capitulino, Namhyung Kim, Pawel Moll,
Peter Zijlstra, Stephane Eranian
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 4b0c53e9e1a2a785746b2d379a32cb70b4dbb2fd:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-07-27 17:56:18 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to aa53c09e90a19c215549bd1ca970fddcb7c0c001:
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-07-30 16:16 Arnaldo Carvalho de Melo
@ 2015-07-31 8:04 ` Ingo Molnar
2015-07-31 13:30 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 62+ messages in thread
From: Ingo Molnar @ 2015-07-31 8:04 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Andi Kleen, Borislav Petkov,
David Ahern, Frederic Weisbecker, Jaroslav Skarvada, Jeremy Eder,
Jiri Olsa, Kan Liang, Luiz Fernando Capitulino, Namhyung Kim,
Pawel Moll, Peter Zijlstra, Stephane Eranian
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 4b0c53e9e1a2a785746b2d379a32cb70b4dbb2fd:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-07-27 17:56:18 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to aa53c09e90a19c215549bd1ca970fddcb7c0c001:
Hm, your pull request mail was cut short as it ends here abruptly. I figured it
out nevertheless, from the commit log:
====================>
User visible changes:
- Force period term to overload global settings, i.e. previously this
command line:
$ perf record -e 'cpu/instructions,period=20000/',cycles -c 1000 sleep 1
would result in both events having a period equal to 1000, with the fix we
get something saner:
$ perf evlist -v | grep period
cpu/instructions,period=20000/: ... { sample_period, sample_freq }: 20000, ...
cycles: ... { sample_period, sample_freq }: 1000 ...
$
(Jiri Olsa)
Infrastructure changes:
- Use the dummy software event with freq=0 in the twatch.py python
binding example, to avoid disabling nohz. (Arnaldo Carvalho de Melo)
- Add some missing constants to the python binding. (Arnaldo Carvalho de Melo)
- Fix mismatched declarations for elf_getphdrnum, that happens
only in the corner case where this function is not found on
the system. (Arnaldo Carvalho de Melo)
- Add build test for having ending double slash. (Jiri Olsa)
- Introduce callgraph_set for callgraph option. (Kan Liang)
tools/perf/Documentation/perf-record.txt | 2 +-
tools/perf/builtin-record.c | 9 +-
tools/perf/builtin-trace.c | 2 +-
tools/perf/perf.h | 1 +
tools/perf/python/twatch.py | 12 ++-
tools/perf/tests/make | 13 ++-
tools/perf/tests/parse-events.c | 12 ++-
tools/perf/util/evsel.c | 33 ++++++++
tools/perf/util/evsel.h | 20 +++++
tools/perf/util/parse-events.c | 70 +++++++++++++---
tools/perf/util/python.c | 140 ++++++++++++++++---------------
tools/perf/util/session.c | 4 +-
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/trace-event.c | 7 +-
tools/perf/util/trace-event.h | 3 +-
15 files changed, 233 insertions(+), 97 deletions(-)
<================
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-07-31 8:04 ` Ingo Molnar
@ 2015-07-31 13:30 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-07-31 13:30 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Adrian Hunter, Andi Kleen, Borislav Petkov,
David Ahern, Frederic Weisbecker, Jaroslav Skarvada, Jeremy Eder,
Jiri Olsa, Kan Liang, Luiz Fernando Capitulino, Namhyung Kim,
Pawel Moll, Peter Zijlstra, Stephane Eranian
Em Fri, Jul 31, 2015 at 10:04:35AM +0200, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > Please consider pulling,
> > for you to fetch changes up to aa53c09e90a19c215549bd1ca970fddcb7c0c001:
>
> Hm, your pull request mail was cut short as it ends here abruptly. I figured it
> out nevertheless, from the commit log:
Right, I forgot the 'git request-pull' part after pushing the signed tag
:-\
Thanks!
- Arnaldo
> ====================>
>
> User visible changes:
>
> - Force period term to overload global settings, i.e. previously this
> command line:
>
> $ perf record -e 'cpu/instructions,period=20000/',cycles -c 1000 sleep 1
>
> would result in both events having a period equal to 1000, with the fix we
> get something saner:
>
> $ perf evlist -v | grep period
> cpu/instructions,period=20000/: ... { sample_period, sample_freq }: 20000, ...
> cycles: ... { sample_period, sample_freq }: 1000 ...
> $
>
> (Jiri Olsa)
>
> Infrastructure changes:
>
> - Use the dummy software event with freq=0 in the twatch.py python
> binding example, to avoid disabling nohz. (Arnaldo Carvalho de Melo)
>
> - Add some missing constants to the python binding. (Arnaldo Carvalho de Melo)
>
> - Fix mismatched declarations for elf_getphdrnum, that happens
> only in the corner case where this function is not found on
> the system. (Arnaldo Carvalho de Melo)
>
> - Add build test for having ending double slash. (Jiri Olsa)
>
> - Introduce callgraph_set for callgraph option. (Kan Liang)
>
> tools/perf/Documentation/perf-record.txt | 2 +-
> tools/perf/builtin-record.c | 9 +-
> tools/perf/builtin-trace.c | 2 +-
> tools/perf/perf.h | 1 +
> tools/perf/python/twatch.py | 12 ++-
> tools/perf/tests/make | 13 ++-
> tools/perf/tests/parse-events.c | 12 ++-
> tools/perf/util/evsel.c | 33 ++++++++
> tools/perf/util/evsel.h | 20 +++++
> tools/perf/util/parse-events.c | 70 +++++++++++++---
> tools/perf/util/python.c | 140 ++++++++++++++++---------------
> tools/perf/util/session.c | 4 +-
> tools/perf/util/symbol-elf.c | 2 +-
> tools/perf/util/trace-event.c | 7 +-
> tools/perf/util/trace-event.h | 3 +-
> 15 files changed, 233 insertions(+), 97 deletions(-)
>
> <================
>
> Pulled, thanks a lot Arnaldo!
>
> Ingo
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2015-06-16 18:21 Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-06-16 18:21 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Andi Kleen, Borislav Petkov, David Ahern, Don Zickus,
Frederic Weisbecker, He Kuang, Hou Pengyang, Jiri Olsa,
Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Naohiro Aota,
Peter Zijlstra, Stephane Eranian, Wang Nan, Zefan Li,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 61d67d568445413137995e1bea2746783e3a81e9:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-06-12 10:08:38 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to b031220d520238075bd99513a420e65cf37866ad:
perf probe: Fix to return error if no probe is added (2015-06-16 11:39:51 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- List perf probes to stdout (Masami Hiramatsu)
- Return error when none of the requested probes were
installed (Masami Hiramatsu)
- Cut off the gcc optimization postfixes from
function name in 'perf probe' (Masami Hiramatsu)
Infrastructure:
- Replace map->referenced & maps->removed_maps with
map->refcnt (Arnaldo Carvalho de Melo)
- Introduce xyarray__reset function (Jiri Olsa)
- Add thread_map__(alloc|realloc) helpers (Jiri Olsa)
- Move perf_evsel__(alloc|free|reset)_counts into stat object (Jiri Olsa)
- Introduce perf_counts__(new|delete|reset) functions (Jiri Olsa)
Build Fixes:
- Fix a libunwind related compile error (Hou Pengyang)
- Fix python/perf.so compiling error related to libtraceevent (Wang Nan)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
perf tools: Replace map->referenced & maps->removed_maps with map->refcnt
Hou Pengyang (1):
perf unwind: Fix a compile error
Jiri Olsa (4):
perf tools: Introduce xyarray__reset function
perf tools: Add thread_map__(alloc|realloc) helpers
perf tools: Move perf_evsel__(alloc|free|reset)_counts into stat object
perf stat: Introduce perf_counts__(new|delete|reset) functions
Masami Hiramatsu (3):
perf probe: Cut off the gcc optimization postfixes from function name
perf probe: List probes in stdout
perf probe: Fix to return error if no probe is added
Wang Nan (1):
tools lib traceevent: Fix python/perf.so compiling error
tools/perf/Makefile.perf | 2 +-
tools/perf/builtin-stat.c | 19 ++--
tools/perf/tests/openat-syscall-all-cpus.c | 1 +
tools/perf/util/evsel.c | 19 +---
tools/perf/util/evsel.h | 3 -
tools/perf/util/hist.c | 37 ++++---
tools/perf/util/map.c | 58 +---------
tools/perf/util/map.h | 10 +-
tools/perf/util/probe-event.c | 167 +++++++++++++++++++----------
tools/perf/util/python-ext-sources | 1 +
tools/perf/util/stat.c | 36 +++++++
tools/perf/util/stat.h | 6 ++
tools/perf/util/thread_map.c | 24 +++--
tools/perf/util/unwind-libunwind.c | 2 +-
tools/perf/util/xyarray.c | 8 ++
tools/perf/util/xyarray.h | 2 +
16 files changed, 223 insertions(+), 172 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2015-01-29 20:23 Arnaldo Carvalho de Melo
2015-01-30 18:28 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-01-29 20:23 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexey Brodkin, Andi Kleen, David Ahern, Frederic Weisbecker,
Jiri Olsa, Milian Wolff, Namhyung Kim, Peter Zijlstra,
Stephane Eranian, Vineet Gupta, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, there is some more stuff in queue to be
processed, but better send in smaller batches,
- Arnaldo
The following changes since commit b3890e4704594fa23abe1395d1fafc97d3214be8:
Merge branch 'perf/hw_breakpoints' into perf/core (2015-01-28 15:48:59 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to c52686f9f888d23ca72f1309e86af8e91d075697:
perf symbols: Convert lseek + read to pread (2015-01-29 17:02:01 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Show precise number of samples in at the end of a 'record' session, if
processing build ids, since we will then traverse the whole perf.data file
and see all the PERF_RECORD_SAMPLE records, otherwise stop showing the
previous off-base heuristicly counted number of "samples" (Namhyung Kim).
- Support to read compressed module from build-id cache (Namhyung Kim)
Infrastructure:
- Cache eh/debug frame offset for dwarf unwind (Namhyung Kim)
- Set header version correctly in all cases (Namhyung Kim)
- Set attr.task bit for a tracking event, to be consistent (Namhyung Kim)
perf tools: Use perf_data_file__fd() consistently
perf symbols: Convert lseek + read to pread
- Don't rely on malloc working for sz 0, fixing another problem when
using uClibc (Vineet Gupta)
- Provide stub for missing pthread_attr_setaffinity_np for libcs where this
is not available, such as uClibc (Vineet Gupta)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Namhyung Kim (8):
perf callchain: Cache eh/debug frame offset for dwarf unwind
perf tools: Do not use __perf_session__process_events() directly
perf record: Show precise number of samples
perf header: Set header version correctly
perf evsel: Set attr.task bit for a tracking event
perf symbols: Support to read compressed module from build-id cache
perf tools: Use perf_data_file__fd() consistently
perf symbols: Convert lseek + read to pread
Vineet Gupta (2):
perf evsel: Don't rely on malloc working for sz 0
perf tools: Provide stub for missing pthread_attr_setaffinity_np
tools/perf/bench/futex.h | 13 ++++
tools/perf/builtin-inject.c | 5 +-
tools/perf/builtin-record.c | 70 +++++++++++++++-------
tools/perf/config/Makefile | 6 ++
tools/perf/config/feature-checks/Makefile | 4 ++
tools/perf/config/feature-checks/test-all.c | 5 ++
.../test-pthread-attr-setaffinity-np.c | 14 +++++
tools/perf/util/dso.c | 6 +-
tools/perf/util/dso.h | 1 +
tools/perf/util/evsel.c | 4 ++
tools/perf/util/header.c | 2 +-
tools/perf/util/session.c | 6 +-
tools/perf/util/session.h | 3 -
tools/perf/util/symbol-elf.c | 13 ++--
tools/perf/util/unwind-libunwind.c | 31 ++++++----
15 files changed, 131 insertions(+), 52 deletions(-)
create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2015-01-29 20:23 Arnaldo Carvalho de Melo
@ 2015-01-30 18:28 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2015-01-30 18:28 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Alexey Brodkin, Andi Kleen,
David Ahern, Frederic Weisbecker, Jiri Olsa, Milian Wolff,
Namhyung Kim, Peter Zijlstra, Stephane Eranian, Vineet Gupta,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling, there is some more stuff in queue to be
> processed, but better send in smaller batches,
>
> - Arnaldo
>
> The following changes since commit b3890e4704594fa23abe1395d1fafc97d3214be8:
>
> Merge branch 'perf/hw_breakpoints' into perf/core (2015-01-28 15:48:59 +0100)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to c52686f9f888d23ca72f1309e86af8e91d075697:
>
> perf symbols: Convert lseek + read to pread (2015-01-29 17:02:01 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Show precise number of samples in at the end of a 'record' session, if
> processing build ids, since we will then traverse the whole perf.data file
> and see all the PERF_RECORD_SAMPLE records, otherwise stop showing the
> previous off-base heuristicly counted number of "samples" (Namhyung Kim).
>
> - Support to read compressed module from build-id cache (Namhyung Kim)
>
> Infrastructure:
>
> - Cache eh/debug frame offset for dwarf unwind (Namhyung Kim)
>
> - Set header version correctly in all cases (Namhyung Kim)
>
> - Set attr.task bit for a tracking event, to be consistent (Namhyung Kim)
> perf tools: Use perf_data_file__fd() consistently
> perf symbols: Convert lseek + read to pread
>
> - Don't rely on malloc working for sz 0, fixing another problem when
> using uClibc (Vineet Gupta)
>
> - Provide stub for missing pthread_attr_setaffinity_np for libcs where this
> is not available, such as uClibc (Vineet Gupta)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Namhyung Kim (8):
> perf callchain: Cache eh/debug frame offset for dwarf unwind
> perf tools: Do not use __perf_session__process_events() directly
> perf record: Show precise number of samples
> perf header: Set header version correctly
> perf evsel: Set attr.task bit for a tracking event
> perf symbols: Support to read compressed module from build-id cache
> perf tools: Use perf_data_file__fd() consistently
> perf symbols: Convert lseek + read to pread
>
> Vineet Gupta (2):
> perf evsel: Don't rely on malloc working for sz 0
> perf tools: Provide stub for missing pthread_attr_setaffinity_np
>
> tools/perf/bench/futex.h | 13 ++++
> tools/perf/builtin-inject.c | 5 +-
> tools/perf/builtin-record.c | 70 +++++++++++++++-------
> tools/perf/config/Makefile | 6 ++
> tools/perf/config/feature-checks/Makefile | 4 ++
> tools/perf/config/feature-checks/test-all.c | 5 ++
> .../test-pthread-attr-setaffinity-np.c | 14 +++++
> tools/perf/util/dso.c | 6 +-
> tools/perf/util/dso.h | 1 +
> tools/perf/util/evsel.c | 4 ++
> tools/perf/util/header.c | 2 +-
> tools/perf/util/session.c | 6 +-
> tools/perf/util/session.h | 3 -
> tools/perf/util/symbol-elf.c | 13 ++--
> tools/perf/util/unwind-libunwind.c | 31 ++++++----
> 15 files changed, 131 insertions(+), 52 deletions(-)
> create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
Pulled into tip:perf/core, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2014-12-22 15:29 Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-12-22 15:29 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Andi Kleen, Borislav Petkov, David Ahern, Don Zickus,
Frederic Weisbecker, Jiri Olsa, Joe Mario, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Ramkumar Ramachandra, Richard Fowles, Rickard Strandqvist,
Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit ac931f87a647ca156f65a4c00e7297165e4fa2d8:
perf: Fix building warning on ARM 32 (2014-12-19 13:09:43 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to e51679f54467febc6e9f1091c0ac8c31b54d59a1:
perf tools: Remove some unused functions from color.c (2014-12-22 11:55:09 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- Enable sampling loads and stores simultaneously by default
in 'perf mem' (Stephane Eranian)
- Show progress bar in more places while doing histogram processing
in the hists browser (Namhyung Kim)
- Print backtrace symbols when segfault occurs in 'report' (Namhyung Kim)
Infrastructure:
- Consistency and code duplication elimination fixes in the
hists code (Arnaldo Carvalho de Melo)
- Append callchains only when requested (Namhyung Kim)
- Remove some unused functions from color.c (Rickard Strandqvist)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
perf mem: Move the mem_operations global to struct perf_mem
perf tools: Remove EOL whitespaces
perf hists: Rename hist_entry__free to __delete
perf hists: Introduce function for deleting/removing hist_entry
Namhyung Kim (4):
perf report: Get rid of report__inc_stat()
perf report: Show progress bar for output resorting
perf ui/tui: Print backtrace symbols when segfault occurs
perf callchain: Append callchains only when requested
Rickard Strandqvist (1):
perf tools: Remove some unused functions from color.c
Stephane Eranian (1):
perf mem: Enable sampling loads and stores simultaneously
tools/perf/Documentation/perf-buildid-cache.txt | 2 +-
tools/perf/Documentation/perf-mem.txt | 9 +-
tools/perf/Documentation/perf-script.txt | 28 ++---
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-buildid-cache.c | 4 +-
tools/perf/builtin-diff.c | 4 +-
tools/perf/builtin-mem.c | 131 ++++++++++++++++-----
tools/perf/builtin-report.c | 40 ++++---
tools/perf/builtin-stat.c | 2 +-
tools/perf/builtin-top.c | 6 +-
tools/perf/builtin-trace.c | 80 ++++++-------
tools/perf/tests/attr.py | 1 -
tools/perf/tests/hists_cumulate.c | 4 +-
tools/perf/tests/hists_filter.c | 2 +-
tools/perf/tests/hists_output.c | 12 +-
tools/perf/tests/make | 1 -
tools/perf/tests/parse-events.c | 2 +-
tools/perf/ui/browsers/annotate.c | 3 +-
tools/perf/ui/progress.h | 4 +-
tools/perf/ui/tui/setup.c | 26 +++-
tools/perf/util/annotate.c | 2 +-
tools/perf/util/color.c | 126 --------------------
tools/perf/util/color.h | 2 -
tools/perf/util/hist.c | 59 ++++++----
tools/perf/util/hist.h | 4 +-
tools/perf/util/parse-events.c | 6 +-
tools/perf/util/python.c | 2 +-
.../util/scripting-engines/trace-event-python.c | 2 +-
tools/perf/util/session.c | 2 +-
tools/perf/util/symbol.c | 2 +-
30 files changed, 278 insertions(+), 292 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2014-09-26 20:19 Arnaldo Carvalho de Melo
2014-09-27 7:20 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2014-09-26 20:19 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Andi Kleen, Corey Ashford, David Ahern, Jiri Olsa, Milian Wolff,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Peter Zijlstra,
Pranith Kumar, Stephane Eranian, Taeung Song,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling.
- Arnaldo
The following changes since commit cf8102f64c8d23f0bd4af0659bbd94d0c1d8d1c7:
Merge tag 'perf-fdarray-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-09-26 11:12:46 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to 49757c9cc7887bc79f742eb8aacf16e464ca5f0b:
perf tools: Fix line number in the config file error message (2014-09-26 12:45:23 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
o Restore "--callchain graph" output, broken in recent cset to end
up being the same as "fractal" (Namhyung Kim)
o Allow profiling when kptr_restrict == 1 for non root users,
kernel samples will just remain unresolved (Andi Kleen)
o Allow configuring default options for callchains in config file (Namhyung Kim)
o Fix line number in the config file error message (Jiri Olsa)
o Fix --per-core on multi socket systems (Andi Kleen)
Cleanups:
o Use ACCESS_ONCE() instead of volatile cast. (Pranith Kumar)
o Modify error code for when perf_session__new() fails (Taeung Song)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Andi Kleen (2):
perf stat: Fix --per-core on multi socket systems
perf tools: Fix perf record as non root with kptr_restrict == 1
Jiri Olsa (1):
perf tools: Fix line number in the config file error message
Namhyung Kim (5):
perf hists browser: Fix callchain print bug on TUI
perf tools: Move callchain config from record_opts to callchain_param
perf callchain: Move some parser functions to callchain.c
perf tools: Introduce perf_callchain_config()
perf tools: Convert {record,top}.call-graph option to call-graph.record-mode
Pranith Kumar (1):
perf tools: Use ACCESS_ONCE() instead of volatile cast
Taeung Song (1):
perf tools: Modify error code for when perf_session__new() fails
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-diff.c | 2 +-
tools/perf/builtin-evlist.c | 2 +-
tools/perf/builtin-inject.c | 2 +-
tools/perf/builtin-kmem.c | 2 +-
tools/perf/builtin-kvm.c | 4 +-
tools/perf/builtin-lock.c | 2 +-
tools/perf/builtin-mem.c | 2 +-
tools/perf/builtin-record.c | 119 ++++---------------------
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-script.c | 2 +-
tools/perf/builtin-stat.c | 9 +-
tools/perf/builtin-timechart.c | 2 +-
tools/perf/builtin-top.c | 6 +-
tools/perf/builtin-trace.c | 2 +-
tools/perf/perf.h | 3 -
tools/perf/ui/browsers/hists.c | 3 -
tools/perf/util/callchain.c | 193 +++++++++++++++++++++++++++++++++++++----
tools/perf/util/callchain.h | 6 +-
tools/perf/util/config.c | 16 +++-
tools/perf/util/event.c | 8 +-
tools/perf/util/evsel.c | 11 ++-
tools/perf/util/session.c | 2 +-
tools/perf/util/session.h | 2 +-
24 files changed, 241 insertions(+), 163 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2014-09-26 20:19 Arnaldo Carvalho de Melo
@ 2014-09-27 7:20 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2014-09-27 7:20 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Andi Kleen, Corey Ashford,
David Ahern, Jiri Olsa, Milian Wolff, Namhyung Kim,
Paul Mackerras, Peter Zijlstra, Peter Zijlstra, Pranith Kumar,
Stephane Eranian, Taeung Song, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling.
>
> - Arnaldo
>
> The following changes since commit cf8102f64c8d23f0bd4af0659bbd94d0c1d8d1c7:
>
> Merge tag 'perf-fdarray-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-09-26 11:12:46 +0200)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to 49757c9cc7887bc79f742eb8aacf16e464ca5f0b:
>
> perf tools: Fix line number in the config file error message (2014-09-26 12:45:23 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> o Restore "--callchain graph" output, broken in recent cset to end
> up being the same as "fractal" (Namhyung Kim)
>
> o Allow profiling when kptr_restrict == 1 for non root users,
> kernel samples will just remain unresolved (Andi Kleen)
>
> o Allow configuring default options for callchains in config file (Namhyung Kim)
>
> o Fix line number in the config file error message (Jiri Olsa)
>
> o Fix --per-core on multi socket systems (Andi Kleen)
>
> Cleanups:
>
> o Use ACCESS_ONCE() instead of volatile cast. (Pranith Kumar)
>
> o Modify error code for when perf_session__new() fails (Taeung Song)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Andi Kleen (2):
> perf stat: Fix --per-core on multi socket systems
> perf tools: Fix perf record as non root with kptr_restrict == 1
>
> Jiri Olsa (1):
> perf tools: Fix line number in the config file error message
>
> Namhyung Kim (5):
> perf hists browser: Fix callchain print bug on TUI
> perf tools: Move callchain config from record_opts to callchain_param
> perf callchain: Move some parser functions to callchain.c
> perf tools: Introduce perf_callchain_config()
> perf tools: Convert {record,top}.call-graph option to call-graph.record-mode
>
> Pranith Kumar (1):
> perf tools: Use ACCESS_ONCE() instead of volatile cast
>
> Taeung Song (1):
> perf tools: Modify error code for when perf_session__new() fails
>
> tools/perf/builtin-annotate.c | 2 +-
> tools/perf/builtin-diff.c | 2 +-
> tools/perf/builtin-evlist.c | 2 +-
> tools/perf/builtin-inject.c | 2 +-
> tools/perf/builtin-kmem.c | 2 +-
> tools/perf/builtin-kvm.c | 4 +-
> tools/perf/builtin-lock.c | 2 +-
> tools/perf/builtin-mem.c | 2 +-
> tools/perf/builtin-record.c | 119 ++++---------------------
> tools/perf/builtin-report.c | 2 +-
> tools/perf/builtin-script.c | 2 +-
> tools/perf/builtin-stat.c | 9 +-
> tools/perf/builtin-timechart.c | 2 +-
> tools/perf/builtin-top.c | 6 +-
> tools/perf/builtin-trace.c | 2 +-
> tools/perf/perf.h | 3 -
> tools/perf/ui/browsers/hists.c | 3 -
> tools/perf/util/callchain.c | 193 +++++++++++++++++++++++++++++++++++++----
> tools/perf/util/callchain.h | 6 +-
> tools/perf/util/config.c | 16 +++-
> tools/perf/util/event.c | 8 +-
> tools/perf/util/evsel.c | 11 ++-
> tools/perf/util/session.c | 2 +-
> tools/perf/util/session.h | 2 +-
> 24 files changed, 241 insertions(+), 163 deletions(-)
Pulled into tip:perf/core, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2014-04-08 18:00 Jiri Olsa
[not found] ` <8738hnk3dg.fsf@tassilo.jf.intel.com>
0 siblings, 1 reply; 62+ messages in thread
From: Jiri Olsa @ 2014-04-08 18:00 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Adrian Hunter, Corey Ashford, David Ahern,
Don Zickus, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra,
Ramkumar Ramachandra, Stephane Eranian, Steven Rostedt
hi Ingo,
please consider pulling
jirka
The following changes since commit 538592ff0b008237ae88f5ce5fb1247127dc3ce5:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-03-19 08:05:47 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo
for you to fetch changes up to dad45c767443b738232a99c747efaaddbe56855c:
MAINTAINERS: Change e-mail to kernel.org one (2014-04-08 19:39:43 +0200)
----------------------------------------------------------------
perf/core improvements and fixes:
Documentation:
. Fix documentation of invalid 'perf top -s' option (Namhyung Kim)
. Change e-mail to kernel.org one in MAINTAINERS file (Arnaldo Carvalho de Melo)
Developer stuff:
. Disable unwind libraries when libelf isn't found (Arnaldo Carvalho de Melo)
. Add thread maps lookup automated tests (Jiri Olsa)
. Print event name when showing libtraceevent warnings if possible (Namhyung Kim)
. Add --list-cmds to 'kmem', 'mem', 'lock' and 'sched', for use by completion scripts (Ramkumar Ramachandra)
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf callchains: Disable unwind libraries when libelf isn't found
MAINTAINERS: Change e-mail to kernel.org one
Jiri Olsa (1):
perf tests: Add thread maps lookup automated tests
Namhyung Kim (3):
perf top: Fix documentation of invalid -s option
tools lib traceevent: Print event name when show warning if possible
tools lib traceevent: Do not call warning() directly
Ramkumar Ramachandra (4):
perf kmem: Introduce --list-cmds for use by scripts
perf mem: Introduce --list-cmds for use by scripts
perf lock: Introduce --list-cmds for use by scripts
perf sched: Introduce --list-cmds for use by scripts
MAINTAINERS | 2 +-
tools/lib/traceevent/event-parse.c | 109 +++++++++-------
tools/perf/Documentation/perf-top.txt | 1 -
tools/perf/Makefile.perf | 1 +
tools/perf/builtin-kmem.c | 8 +-
tools/perf/builtin-lock.c | 10 +-
tools/perf/builtin-mem.c | 15 ++-
tools/perf/builtin-sched.c | 10 +-
tools/perf/config/Makefile | 2 +
tools/perf/perf-completion.sh | 4 +-
tools/perf/perf.h | 6 +
tools/perf/tests/builtin-test.c | 4 +
tools/perf/tests/mmap-thread-lookup.c | 233 ++++++++++++++++++++++++++++++++++
tools/perf/tests/tests.h | 1 +
14 files changed, 341 insertions(+), 65 deletions(-)
create mode 100644 tools/perf/tests/mmap-thread-lookup.c
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2013-11-14 20:25 Arnaldo Carvalho de Melo
2013-11-15 6:38 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-14 20:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Azat Khuzhin, Bill Gray, David Ahern, Davidlohr Bueso,
Don Zickus, Frederic Weisbecker, Jiri Olsa, Joe Mario,
Mike Galbraith, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Richard Fowles, stable, Stephane Eranian,
Sukadev Bhattiprolu, v.karpov, Waiman Long,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Hi Ingo,
Please consider pulling, done on top of tip/perf/urgent.
- Arnaldo
The following changes since commit e310718d0e83aeb9969264dc577c45db16d9104d:
tools/perf/build: Fix feature-libunwind-debug-frame handling (2013-11-14 18:00:45 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 539e6bb71e350541105e67e3d6c31392d9da25ef:
perf record: Add an option to force per-cpu mmaps (2013-11-14 16:10:27 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. Synthesize anon MMAP records again, fix from Don Zickus.
. Add an option in 'perf record' to force per-cpu mmaps, from Adrian Hunter.
. Limit max callchain using max_stack on DWARF unwinding too.
. Fix segfault in the UI browser caused by off by one handling END key.
. Add '--demangle'/'--no-demangle' to perf probe, so that we can overcome
current limitations in handling C++ symbols, from Azat Khuzhin .
. Tweak 'perf trace' summary output, from Pekka Enberg.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (1):
perf record: Add an option to force per-cpu mmaps
Arnaldo Carvalho de Melo (4):
perf tools: Use perf_evlist__{first,last}, perf_evsel__next
perf evsel: Introduce perf_evsel__prev() method
perf symbols: Limit max callchain using max_stack on DWARF unwinding too
perf ui browser: Fix segfault caused by off by one handling END key
Azat Khuzhin (1):
perf probe: Add '--demangle'/'--no-demangle'
Davidlohr Bueso (1):
perf tools: Remove trivial extra semincolon
Don Zickus (1):
perf tools: Synthesize anon MMAP records again
Ingo Molnar (1):
perf top: Add missing newline if the 'uid' is invalid
Pekka Enberg (1):
perf trace: Tweak summary output
tools/perf/Documentation/perf-record.txt | 6 ++++++
tools/perf/builtin-probe.c | 2 ++
tools/perf/builtin-record.c | 2 ++
tools/perf/builtin-top.c | 4 ++--
tools/perf/builtin-trace.c | 10 +++++-----
tools/perf/tests/parse-events.c | 3 +--
tools/perf/ui/browser.c | 4 ++--
tools/perf/ui/browsers/hists.c | 11 +++++------
tools/perf/util/event.c | 6 ++++--
tools/perf/util/evlist.c | 6 ++++--
tools/perf/util/evsel.c | 4 ++--
tools/perf/util/evsel.h | 5 +++++
tools/perf/util/machine.c | 2 +-
tools/perf/util/target.h | 1 +
tools/perf/util/unwind.c | 9 +++++----
tools/perf/util/unwind.h | 5 +++--
16 files changed, 50 insertions(+), 30 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2013-11-14 20:25 Arnaldo Carvalho de Melo
@ 2013-11-15 6:38 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2013-11-15 6:38 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Azat Khuzhin, Bill Gray, David Ahern, Davidlohr Bueso,
Don Zickus, Frederic Weisbecker, Jiri Olsa, Joe Mario,
Mike Galbraith, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Richard Fowles, stable, Stephane Eranian,
Sukadev Bhattiprolu, v.karpov, Waiman Long,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
>
> Hi Ingo,
>
> Please consider pulling, done on top of tip/perf/urgent.
>
> - Arnaldo
>
> The following changes since commit e310718d0e83aeb9969264dc577c45db16d9104d:
>
> tools/perf/build: Fix feature-libunwind-debug-frame handling (2013-11-14 18:00:45 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to 539e6bb71e350541105e67e3d6c31392d9da25ef:
>
> perf record: Add an option to force per-cpu mmaps (2013-11-14 16:10:27 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . Synthesize anon MMAP records again, fix from Don Zickus.
>
> . Add an option in 'perf record' to force per-cpu mmaps, from Adrian Hunter.
>
> . Limit max callchain using max_stack on DWARF unwinding too.
>
> . Fix segfault in the UI browser caused by off by one handling END key.
>
> . Add '--demangle'/'--no-demangle' to perf probe, so that we can overcome
> current limitations in handling C++ symbols, from Azat Khuzhin .
>
> . Tweak 'perf trace' summary output, from Pekka Enberg.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (1):
> perf record: Add an option to force per-cpu mmaps
>
> Arnaldo Carvalho de Melo (4):
> perf tools: Use perf_evlist__{first,last}, perf_evsel__next
> perf evsel: Introduce perf_evsel__prev() method
> perf symbols: Limit max callchain using max_stack on DWARF unwinding too
> perf ui browser: Fix segfault caused by off by one handling END key
>
> Azat Khuzhin (1):
> perf probe: Add '--demangle'/'--no-demangle'
>
> Davidlohr Bueso (1):
> perf tools: Remove trivial extra semincolon
>
> Don Zickus (1):
> perf tools: Synthesize anon MMAP records again
>
> Ingo Molnar (1):
> perf top: Add missing newline if the 'uid' is invalid
>
> Pekka Enberg (1):
> perf trace: Tweak summary output
>
> tools/perf/Documentation/perf-record.txt | 6 ++++++
> tools/perf/builtin-probe.c | 2 ++
> tools/perf/builtin-record.c | 2 ++
> tools/perf/builtin-top.c | 4 ++--
> tools/perf/builtin-trace.c | 10 +++++-----
> tools/perf/tests/parse-events.c | 3 +--
> tools/perf/ui/browser.c | 4 ++--
> tools/perf/ui/browsers/hists.c | 11 +++++------
> tools/perf/util/event.c | 6 ++++--
> tools/perf/util/evlist.c | 6 ++++--
> tools/perf/util/evsel.c | 4 ++--
> tools/perf/util/evsel.h | 5 +++++
> tools/perf/util/machine.c | 2 +-
> tools/perf/util/target.h | 1 +
> tools/perf/util/unwind.c | 9 +++++----
> tools/perf/util/unwind.h | 5 +++--
> 16 files changed, 50 insertions(+), 30 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2013-11-11 20:22 Arnaldo Carvalho de Melo
0 siblings, 0 replies; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-11 20:22 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Bill Gray,
David Ahern, Don Zickus, Frederic Weisbecker, Jiri Olsa,
Joe Mario, Mike Galbraith, Namhyung Kim, Patrick Palka,
Paul Mackerras, Peter Zijlstra, Richard Fowles, Stephane Eranian,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit caea6cf52139116e43e615d87fcbf9823e197fdf:
Merge branch 'uprobes/core' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc into perf/core (2013-11-11 09:44:16 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 67c1e4a53b17894e6a24f95057cc374c4be051cb:
perf tests: Use lower sample_freq in sw clock event period test (2013-11-11 16:43:34 -0300)
----------------------------------------------------------------
perf/core improvements and fixes.
. Prevent condition that all sort keys are elided, fix from Namhyung Kim.
. Synthesize non-exec MMAP records when --data used, allowing the resolution of
data addresses to symbols (global variables, etc).
. Don't force a refresh during progress update in the TUI, greatly reducing
startup costs, fix from Patrick Palka.
. Fix sw clock event period test wrt not checking if using > max_sample_freq.
. Code cleanups by David Ahern and Adrian Hunter.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (1):
perf record: Use correct return type for write()
Arnaldo Carvalho de Melo (6):
perf evsel: Remove idx parm from constructor
perf record: Synthesize non-exec MMAP records when --data used
perf machine: Introduce synthesize_threads method out of open coded equivalent
perf machine: Simplify synthesize_threads method
perf tests: Check return of perf_evlist__open sw clock event period test
perf tests: Use lower sample_freq in sw clock event period test
David Ahern (1):
perf record: Move existing write_output into helper function
Namhyung Kim (1):
perf tools: Prevent condition that all sort keys are elided
Patrick Palka (1):
perf ui tui progress: Don't force a refresh during progress update
tools/perf/builtin-kvm.c | 14 ++-------
tools/perf/builtin-record.c | 21 ++++++-------
tools/perf/builtin-top.c | 10 ++-----
tools/perf/builtin-trace.c | 24 +++++----------
tools/perf/tests/code-reading.c | 2 +-
tools/perf/tests/evsel-tp-sched.c | 4 +--
tools/perf/tests/mmap-basic.c | 2 +-
tools/perf/tests/open-syscall-all-cpus.c | 2 +-
tools/perf/tests/open-syscall-tp-fields.c | 2 +-
tools/perf/tests/open-syscall.c | 2 +-
tools/perf/tests/sw-clock.c | 13 ++++++--
tools/perf/ui/tui/progress.c | 3 +-
tools/perf/util/event.c | 50 ++++++++++++++++++-------------
tools/perf/util/event.h | 4 +--
tools/perf/util/evlist.c | 9 +++---
tools/perf/util/evsel.c | 4 +--
tools/perf/util/evsel.h | 15 ++++++++--
tools/perf/util/header.c | 4 +--
tools/perf/util/machine.c | 12 ++++++++
tools/perf/util/machine.h | 12 ++++++++
tools/perf/util/parse-events.c | 6 ++--
tools/perf/util/sort.c | 13 ++++++++
22 files changed, 133 insertions(+), 95 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2013-09-02 20:56 Arnaldo Carvalho de Melo
2013-09-03 5:49 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-09-02 20:56 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 7bfb7e6bdd906f11ee9e751b3fec4f4fc728e818:
perf: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node() (2013-09-02 08:42:49 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 31cd3855c98119cae287b761d8d2e75018714c5d:
perf trace: Tell arg formatters the arg index (2013-09-02 16:40:40 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. 'perf trace' arg formatting improvements to allow masking arguments
in syscalls such as futex and open, where the some arguments are
ignored and thus should not be printed depending on other args.
. Beautify futex open, openat, open_by_handle_at, lseek and futex syscalls.
. Add dummy software event to use when wanting just to keep receiving
PERF_RECORD_{MMAP,COMM,etc}, add test for it, from Adrian Hunter.
. Fix symbol offset computation for some dsos in 'perf script', from David Ahern.
. Skip unsupported hardware events in 'perf list', from Namhyung Kim.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (3):
perf: Add a dummy software event to keep tracking
perf tools: Add support for PERF_COUNT_SW_DUMMY
perf tests: Add 'keep tracking' test
Arnaldo Carvalho de Melo (5):
perf trace: Allow syscall arg formatters to mask args
perf trace: Add beautifier for futex 'operation' parm
perf trace: Add beautifier for lseek's whence arg
perf trace: Add beautifier for open's flags arg
perf trace: Tell arg formatters the arg index
David Ahern (1):
perf tools: Fix symbol offset computation for some dsos
Namhyung Kim (1):
perf list: Skip unsupported events
include/uapi/linux/perf_event.h | 1 +
tools/perf/Makefile | 1 +
tools/perf/builtin-trace.c | 180 ++++++++++++++++++++++++++++++++++++---
tools/perf/tests/builtin-test.c | 4 +
tools/perf/tests/keep-tracking.c | 154 +++++++++++++++++++++++++++++++++
tools/perf/tests/tests.h | 1 +
tools/perf/util/evlist.c | 42 ++++++++-
tools/perf/util/evlist.h | 5 ++
tools/perf/util/evsel.c | 1 +
tools/perf/util/parse-events.c | 45 +++++++++-
tools/perf/util/parse-events.l | 1 +
tools/perf/util/python.c | 1 +
tools/perf/util/session.c | 1 +
tools/perf/util/symbol.c | 5 +-
14 files changed, 424 insertions(+), 18 deletions(-)
create mode 100644 tools/perf/tests/keep-tracking.c
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2013-09-02 20:56 Arnaldo Carvalho de Melo
@ 2013-09-03 5:49 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2013-09-03 5:49 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
David Ahern, Frederic Weisbecker, Jiri Olsa, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 7bfb7e6bdd906f11ee9e751b3fec4f4fc728e818:
>
> perf: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node() (2013-09-02 08:42:49 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to 31cd3855c98119cae287b761d8d2e75018714c5d:
>
> perf trace: Tell arg formatters the arg index (2013-09-02 16:40:40 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . 'perf trace' arg formatting improvements to allow masking arguments
> in syscalls such as futex and open, where the some arguments are
> ignored and thus should not be printed depending on other args.
>
> . Beautify futex open, openat, open_by_handle_at, lseek and futex syscalls.
>
> . Add dummy software event to use when wanting just to keep receiving
> PERF_RECORD_{MMAP,COMM,etc}, add test for it, from Adrian Hunter.
>
> . Fix symbol offset computation for some dsos in 'perf script', from David Ahern.
>
> . Skip unsupported hardware events in 'perf list', from Namhyung Kim.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (3):
> perf: Add a dummy software event to keep tracking
> perf tools: Add support for PERF_COUNT_SW_DUMMY
> perf tests: Add 'keep tracking' test
>
> Arnaldo Carvalho de Melo (5):
> perf trace: Allow syscall arg formatters to mask args
> perf trace: Add beautifier for futex 'operation' parm
> perf trace: Add beautifier for lseek's whence arg
> perf trace: Add beautifier for open's flags arg
> perf trace: Tell arg formatters the arg index
>
> David Ahern (1):
> perf tools: Fix symbol offset computation for some dsos
>
> Namhyung Kim (1):
> perf list: Skip unsupported events
>
> include/uapi/linux/perf_event.h | 1 +
> tools/perf/Makefile | 1 +
> tools/perf/builtin-trace.c | 180 ++++++++++++++++++++++++++++++++++++---
> tools/perf/tests/builtin-test.c | 4 +
> tools/perf/tests/keep-tracking.c | 154 +++++++++++++++++++++++++++++++++
> tools/perf/tests/tests.h | 1 +
> tools/perf/util/evlist.c | 42 ++++++++-
> tools/perf/util/evlist.h | 5 ++
> tools/perf/util/evsel.c | 1 +
> tools/perf/util/parse-events.c | 45 +++++++++-
> tools/perf/util/parse-events.l | 1 +
> tools/perf/util/python.c | 1 +
> tools/perf/util/session.c | 1 +
> tools/perf/util/symbol.c | 5 +-
> 14 files changed, 424 insertions(+), 18 deletions(-)
> create mode 100644 tools/perf/tests/keep-tracking.c
Pulled, thanks Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2013-02-14 21:44 Arnaldo Carvalho de Melo
2013-02-15 15:39 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-02-14 21:44 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
Borislav Petkov, Daniel Baluta, Dirk Behme, Frederic Weisbecker,
Jiri Olsa, Li Zefan, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Vinson Lee, Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit a3d4fd7a2d81604fedfa270d29c824b8d3380c2e:
Merge branch 'uprobes/core' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc into perf/core (2013-02-11 10:41:53 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 02e176af92f3e2e9ec3a48792036566af2dcd534:
perf/hwbp: Fix cleanup in case of kzalloc failure (2013-02-14 17:06:39 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. Fix cleanup in case of kzalloc failure, from Daniel Baluta.
. Limit unwind support to x86 archs, fix from Jiri Olsa.
. Initial GTK+ annotate browser, from Namhyung Kim.
. Fix build with bison 2.3 and older, from Vinson Lee.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Daniel Baluta (1):
perf/hwbp: Fix cleanup in case of kzalloc failure
Jiri Olsa (1):
perf tools: Limit unwind support to x86 archs
Namhyung Kim (7):
perf buildid-cache: Add --update option
perf annotate: Fix warning message on a missing vmlinux
perf ui/gtk: Implement basic GTK2 annotation browser
perf gtk/annotate: Support multiple event annotation
perf gtk/annotate: Show source lines with gray color
perf gtk/annotate: Fail early if it can't annotate
perf annotate: Make it to be able to skip unannotatable symbols
Vinson Lee (1):
perf tools: Fix build with bison 2.3 and older.
kernel/events/hw_breakpoint.c | 2 +-
tools/perf/Documentation/perf-annotate.txt | 7 +-
tools/perf/Documentation/perf-buildid-cache.txt | 4 +
tools/perf/Makefile | 10 +-
tools/perf/builtin-annotate.c | 27 ++-
tools/perf/builtin-buildid-cache.c | 50 +++++-
tools/perf/ui/gtk/annotate.c | 229 ++++++++++++++++++++++++
tools/perf/ui/gtk/gtk.h | 1 +
tools/perf/ui/setup.c | 2 +-
tools/perf/util/annotate.c | 2 +-
tools/perf/util/annotate.h | 24 +++
tools/perf/util/parse-events.y | 1 -
tools/perf/util/pmu.y | 1 -
13 files changed, 349 insertions(+), 11 deletions(-)
create mode 100644 tools/perf/ui/gtk/annotate.c
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2013-02-14 21:44 Arnaldo Carvalho de Melo
@ 2013-02-15 15:39 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2013-02-15 15:39 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen,
Borislav Petkov, Daniel Baluta, Dirk Behme, Frederic Weisbecker,
Jiri Olsa, Li Zefan, Namhyung Kim, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Vinson Lee, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit a3d4fd7a2d81604fedfa270d29c824b8d3380c2e:
>
> Merge branch 'uprobes/core' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc into perf/core (2013-02-11 10:41:53 +0100)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to 02e176af92f3e2e9ec3a48792036566af2dcd534:
>
> perf/hwbp: Fix cleanup in case of kzalloc failure (2013-02-14 17:06:39 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . Fix cleanup in case of kzalloc failure, from Daniel Baluta.
>
> . Limit unwind support to x86 archs, fix from Jiri Olsa.
>
> . Initial GTK+ annotate browser, from Namhyung Kim.
>
> . Fix build with bison 2.3 and older, from Vinson Lee.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Daniel Baluta (1):
> perf/hwbp: Fix cleanup in case of kzalloc failure
>
> Jiri Olsa (1):
> perf tools: Limit unwind support to x86 archs
>
> Namhyung Kim (7):
> perf buildid-cache: Add --update option
> perf annotate: Fix warning message on a missing vmlinux
> perf ui/gtk: Implement basic GTK2 annotation browser
> perf gtk/annotate: Support multiple event annotation
> perf gtk/annotate: Show source lines with gray color
> perf gtk/annotate: Fail early if it can't annotate
> perf annotate: Make it to be able to skip unannotatable symbols
>
> Vinson Lee (1):
> perf tools: Fix build with bison 2.3 and older.
>
> kernel/events/hw_breakpoint.c | 2 +-
> tools/perf/Documentation/perf-annotate.txt | 7 +-
> tools/perf/Documentation/perf-buildid-cache.txt | 4 +
> tools/perf/Makefile | 10 +-
> tools/perf/builtin-annotate.c | 27 ++-
> tools/perf/builtin-buildid-cache.c | 50 +++++-
> tools/perf/ui/gtk/annotate.c | 229 ++++++++++++++++++++++++
> tools/perf/ui/gtk/gtk.h | 1 +
> tools/perf/ui/setup.c | 2 +-
> tools/perf/util/annotate.c | 2 +-
> tools/perf/util/annotate.h | 24 +++
> tools/perf/util/parse-events.y | 1 -
> tools/perf/util/pmu.y | 1 -
> 13 files changed, 349 insertions(+), 11 deletions(-)
> create mode 100644 tools/perf/ui/gtk/annotate.c
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2011-12-20 19:18 Arnaldo Carvalho de Melo
2011-12-20 19:33 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-12-20 19:18 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andrew Vagin,
Arun Sharma, cjashfor, David Ahern, devel, Jiri Olsa,
Johannes Schindelin, Linus Torvalds, Namhyung Kim, Nelson Elhage,
Paul Mackerras, Peter Zijlstra, Robert Richter, arnaldo.melo
Hi Ingo,
Please consider pulling from:
git://github.com/acmel/linux.git perf/core
There are still patchkits I need to merge/review, thanks everybody, the
more, the better!
I'll continue processing them tomorrow,
Regards,
- Arnaldo
Andrew Vagin (1):
perf record: Add ability to record event period
Jiri Olsa (1):
perf test: Add more automated tests for event parsing
Namhyung Kim (6):
perf report: Document '--call-graph' for optional print_limit argument
perf symbols: Get rid of duplicated snprintf()
perf symbols: Fix error path on symbol__init()
perf tools: Fix a memory leak on perf_read_values_destroy
perf tools: Remove stale git headlines from top comment
perf events: Tidy up perf_event__preprocess_sample
Nelson Elhage (1):
perf evlist: Fix errno value reporting on failed mmap
Robert Richter (1):
perf evsel: Fix uninitialized memory access to struct perf_sample
tools/perf/Documentation/perf-report.txt | 5 +-
tools/perf/builtin-record.c | 1 +
tools/perf/builtin-report.c | 6 +-
tools/perf/builtin-test.c | 127 +++++++++++++++++++++++++++++-
tools/perf/perf.h | 1 +
tools/perf/util/config.c | 5 +-
tools/perf/util/event.c | 13 ++--
tools/perf/util/evlist.c | 4 +-
tools/perf/util/evsel.c | 5 +-
tools/perf/util/symbol.c | 11 +--
tools/perf/util/usage.c | 5 +-
tools/perf/util/values.c | 1 +
12 files changed, 160 insertions(+), 24 deletions(-)
--
1.7.8.rc0.35.gee6df
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2011-12-20 19:18 Arnaldo Carvalho de Melo
@ 2011-12-20 19:33 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2011-12-20 19:33 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Andrew Vagin, Arun Sharma, cjashfor, David Ahern,
devel, Jiri Olsa, Johannes Schindelin, Linus Torvalds,
Namhyung Kim, Nelson Elhage, Paul Mackerras, Peter Zijlstra,
Robert Richter, arnaldo.melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please consider pulling from:
>
> git://github.com/acmel/linux.git perf/core
>
> There are still patchkits I need to merge/review, thanks everybody, the
> more, the better!
>
> I'll continue processing them tomorrow,
>
> Regards,
>
> - Arnaldo
>
> Andrew Vagin (1):
> perf record: Add ability to record event period
>
> Jiri Olsa (1):
> perf test: Add more automated tests for event parsing
>
> Namhyung Kim (6):
> perf report: Document '--call-graph' for optional print_limit argument
> perf symbols: Get rid of duplicated snprintf()
> perf symbols: Fix error path on symbol__init()
> perf tools: Fix a memory leak on perf_read_values_destroy
> perf tools: Remove stale git headlines from top comment
> perf events: Tidy up perf_event__preprocess_sample
>
> Nelson Elhage (1):
> perf evlist: Fix errno value reporting on failed mmap
>
> Robert Richter (1):
> perf evsel: Fix uninitialized memory access to struct perf_sample
>
> tools/perf/Documentation/perf-report.txt | 5 +-
> tools/perf/builtin-record.c | 1 +
> tools/perf/builtin-report.c | 6 +-
> tools/perf/builtin-test.c | 127 +++++++++++++++++++++++++++++-
> tools/perf/perf.h | 1 +
> tools/perf/util/config.c | 5 +-
> tools/perf/util/event.c | 13 ++--
> tools/perf/util/evlist.c | 4 +-
> tools/perf/util/evsel.c | 5 +-
> tools/perf/util/symbol.c | 11 +--
> tools/perf/util/usage.c | 5 +-
> tools/perf/util/values.c | 1 +
> 12 files changed, 160 insertions(+), 24 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
* [GIT PULL 00/10] perf/core improvements and fixes
@ 2010-08-06 1:46 Arnaldo Carvalho de Melo
2010-08-06 7:00 ` Ingo Molnar
0 siblings, 1 reply; 62+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-08-06 1:46 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andrea Gelmini,
Arnaldo Carvalho de Melo, Frederic Weisbecker, Ingo Molnar,
Julia Lawall, Masami Hiramatsu, Mike Galbraith, Nick Piggin,
Paul Mackerras, Peter Zijlstra, Peter Zijlstra,
Srikar Dronamraju, Stephane Eranian, Thomas Gleixner,
Tom Zanussi
Hi Ingo,
Please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
Regards,
- Arnaldo
Andrea Gelmini (2):
perf probe: Remove duplicated #include
perf trace: Clean up #includes
Arnaldo Carvalho de Melo (7):
perf symbols: Store the symbol binding
perf ui: Add a map browser
perf ui: Shorten ui_browser->refresh_entries to refresh
perf hists: Handle verbose in hists__sort_list_width
perf hists: Fixup addr snprintf width on 32 bit arches
perf ui: Add search by name/addr to the map__browser
perf report: Speed up exit path
Julia Lawall (1):
perf timechart: Adjust confusing if indentation
tools/perf/builtin-report.c | 31 +++++-
tools/perf/builtin-timechart.c | 4 +-
tools/perf/builtin-trace.c | 19 +--
tools/perf/util/hist.c | 3 +
tools/perf/util/newt.c | 242 +++++++++++++++++++++++++++++++++++++--
tools/perf/util/probe-finder.c | 1 -
tools/perf/util/sort.c | 6 +-
tools/perf/util/symbol.c | 30 ++++--
tools/perf/util/symbol.h | 1 +
9 files changed, 297 insertions(+), 40 deletions(-)
^ permalink raw reply [flat|nested] 62+ messages in thread
* Re: [GIT PULL 00/10] perf/core improvements and fixes
2010-08-06 1:46 Arnaldo Carvalho de Melo
@ 2010-08-06 7:00 ` Ingo Molnar
0 siblings, 0 replies; 62+ messages in thread
From: Ingo Molnar @ 2010-08-06 7:00 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Andrea Gelmini, Arnaldo Carvalho de Melo,
Frederic Weisbecker, Julia Lawall, Masami Hiramatsu,
Mike Galbraith, Nick Piggin, Paul Mackerras, Peter Zijlstra,
Peter Zijlstra, Srikar Dronamraju, Stephane Eranian,
Thomas Gleixner, Tom Zanussi
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please pull from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
>
> Regards,
>
> - Arnaldo
>
> Andrea Gelmini (2):
> perf probe: Remove duplicated #include
> perf trace: Clean up #includes
>
> Arnaldo Carvalho de Melo (7):
> perf symbols: Store the symbol binding
> perf ui: Add a map browser
> perf ui: Shorten ui_browser->refresh_entries to refresh
> perf hists: Handle verbose in hists__sort_list_width
> perf hists: Fixup addr snprintf width on 32 bit arches
> perf ui: Add search by name/addr to the map__browser
> perf report: Speed up exit path
>
> Julia Lawall (1):
> perf timechart: Adjust confusing if indentation
>
> tools/perf/builtin-report.c | 31 +++++-
> tools/perf/builtin-timechart.c | 4 +-
> tools/perf/builtin-trace.c | 19 +--
> tools/perf/util/hist.c | 3 +
> tools/perf/util/newt.c | 242 +++++++++++++++++++++++++++++++++++++--
> tools/perf/util/probe-finder.c | 1 -
> tools/perf/util/sort.c | 6 +-
> tools/perf/util/symbol.c | 30 ++++--
> tools/perf/util/symbol.h | 1 +
> 9 files changed, 297 insertions(+), 40 deletions(-)
Pulled, thanks Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 62+ messages in thread
end of thread, other threads:[~2017-08-17 7:45 UTC | newest]
Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-05 20:09 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 01/10] perf hists: Consolidate __hists__add_*entry() Arnaldo Carvalho de Melo
2013-11-05 21:52 ` Rodrigo Campos
2013-11-06 8:16 ` Namhyung Kim
2013-11-06 8:28 ` Rodrigo Campos
2013-11-06 13:42 ` Arnaldo Carvalho de Melo
2013-11-07 6:44 ` Namhyung Kim
2013-11-05 20:09 ` [PATCH 02/10] perf kvm: Disable live command if timerfd is not supported Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 03/10] tools/perf/build: Fix detection of non-core features Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 04/10] perf list: Remove a level of indentation Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 05/10] perf list: Add usage Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 06/10] perf tools: Factor sysfs code into generic fs object Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 07/10] perf fs: Rename NAME_find_mountpoint() to NAME__mountpoint() Arnaldo Carvalho de Melo
2013-11-05 20:09 ` [PATCH 08/10] perf fs: Add procfs support Arnaldo Carvalho de Melo
2013-11-05 20:10 ` [PATCH 09/10] perf tools: Check maximum frequency rate for record/top Arnaldo Carvalho de Melo
2013-11-05 20:10 ` [PATCH 10/10] perf tools: Finish the removal of 'self' arguments Arnaldo Carvalho de Melo
2013-11-06 5:31 ` [GIT PULL 00/10] perf/core improvements and fixes Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2017-08-16 20:20 Arnaldo Carvalho de Melo
2017-08-17 7:45 ` Ingo Molnar
2017-05-03 13:58 Arnaldo Carvalho de Melo
2017-05-03 17:30 ` Ingo Molnar
2017-01-17 16:06 Arnaldo Carvalho de Melo
2017-01-18 9:09 ` Ingo Molnar
2016-12-07 16:53 Arnaldo Carvalho de Melo
2016-12-07 18:17 ` Ingo Molnar
2016-06-20 22:23 Arnaldo Carvalho de Melo
2016-06-21 2:18 ` Namhyung Kim
2016-06-21 3:11 ` Brendan Gregg
2016-06-21 10:08 ` Paolo Bonzini
2016-06-21 16:14 ` Arnaldo Carvalho de Melo
2016-05-25 21:34 Arnaldo Carvalho de Melo
2016-04-01 21:56 Arnaldo Carvalho de Melo
2016-04-06 6:47 ` Ingo Molnar
2016-02-16 20:34 Arnaldo Carvalho de Melo
2016-02-17 7:39 ` Ingo Molnar
2015-11-28 1:22 Arnaldo Carvalho de Melo
2015-11-28 9:50 ` Ingo Molnar
2015-11-29 13:16 ` Namhyung Kim
2015-08-28 18:06 Arnaldo Carvalho de Melo
2015-08-31 8:28 ` Ingo Molnar
2015-07-30 16:16 Arnaldo Carvalho de Melo
2015-07-31 8:04 ` Ingo Molnar
2015-07-31 13:30 ` Arnaldo Carvalho de Melo
2015-06-16 18:21 Arnaldo Carvalho de Melo
2015-01-29 20:23 Arnaldo Carvalho de Melo
2015-01-30 18:28 ` Ingo Molnar
2014-12-22 15:29 Arnaldo Carvalho de Melo
2014-09-26 20:19 Arnaldo Carvalho de Melo
2014-09-27 7:20 ` Ingo Molnar
2014-04-08 18:00 Jiri Olsa
[not found] ` <8738hnk3dg.fsf@tassilo.jf.intel.com>
[not found] ` <CAM9d7ciP4tLUmR-soEKH3nf6=XC5evKGfuQW1fUGA8Z42U3xCg@mail.gmail.com>
2014-04-09 5:31 ` Ingo Molnar
2013-11-14 20:25 Arnaldo Carvalho de Melo
2013-11-15 6:38 ` Ingo Molnar
2013-11-11 20:22 Arnaldo Carvalho de Melo
2013-09-02 20:56 Arnaldo Carvalho de Melo
2013-09-03 5:49 ` Ingo Molnar
2013-02-14 21:44 Arnaldo Carvalho de Melo
2013-02-15 15:39 ` Ingo Molnar
2011-12-20 19:18 Arnaldo Carvalho de Melo
2011-12-20 19:33 ` Ingo Molnar
2010-08-06 1:46 Arnaldo Carvalho de Melo
2010-08-06 7:00 ` Ingo Molnar
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).