From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: ufo19890607 <ufo19890607@gmail.com>
Cc: peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
dsahern@gmail.com, namhyung@kernel.org, milian.wolff@kdab.com,
arnaldo.melo@gmail.com, yuzhoujian@didichuxing.com,
adrian.hunter@intel.com, wangnan0@huawei.com,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
acme@redhat.com
Subject: Re: [PATCH] perf record: Add support to collect callchains from kernel or user space only.
Date: Thu, 6 Jun 2019 11:29:22 -0300 [thread overview]
Message-ID: <20190606142922.GB21245@kernel.org> (raw)
In-Reply-To: <20190606142644.GA21245@kernel.org>
Em Thu, Jun 06, 2019 at 11:26:44AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Thu, May 30, 2019 at 02:29:22PM +0100, ufo19890607 escreveu:
> > From: yuzhoujian <yuzhoujian@didichuxing.com>
> >
> > One can just record callchains in the kernel or user space with
> > this new options. We can use it together with "--all-kernel" options.
> > This two options is used just like print_stack(sys) or print_ustack(usr)
> > for systemtap.
> >
> > Show below is the usage of this new option combined with "--all-kernel"
> > options.
> > 1. Configure all used events to run in kernel space and just
> > collect kernel callchains.
> > $ perf record -a -g --all-kernel --kernel-callchains
> > 2. Configure all used events to run in kernel space and just
> > collect user callchains.
> > $ perf record -a -g --all-kernel --user-callchains
> >
> > Signed-off-by: yuzhoujian <yuzhoujian@didichuxing.com>
> > ---
> > tools/perf/Documentation/perf-record.txt | 6 ++++++
> > tools/perf/builtin-record.c | 4 ++++
> > tools/perf/perf.h | 2 ++
> > tools/perf/util/evsel.c | 4 ++++
> > 4 files changed, 16 insertions(+)
> >
> > diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
> > index de269430720a..b647eb3db0c6 100644
> > --- a/tools/perf/Documentation/perf-record.txt
> > +++ b/tools/perf/Documentation/perf-record.txt
> > @@ -490,6 +490,12 @@ Configure all used events to run in kernel space.
> > --all-user::
> > Configure all used events to run in user space.
> >
> > +--kernel-callchains::
> > +Collect callchains from kernel space.
>
> Ok, changing this to:
>
> Collect callchains only from kernel space. I.e. this option sets
> perf_event_attr.exclude_callchain_user to 1,
> perf_event_attr.exclude_callchain_kernel to 0.
>
> > +
> > +--user-callchains::
> > +Collect callchains from user space.
>
> And this one to:
> Collect callchains only from user space. I.e. this option sets
>
> perf_event_attr.exclude_callchain_kernel to 1,
> perf_event_attr.exclude_callchain_user to 0.
Yeah, each of this options just sets the exclude bit for the undesired
callchains, not setting 0 for the desired, so I'm fixing up the doc I
suggested accordingly, my comment below remains valid tho:
>
> So that the user don't try using:
>
> pref record --user-callchains --kernel-callchains
>
> expecting to get both user and kernel callchains and instead gets
> nothing.
>
> Ok?
>
> - Arnaldo
>
> > +
> > --timestamp-filename
> > Append timestamp to output file name.
> >
> > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> > index e2c3a585a61e..dca55997934e 100644
> > --- a/tools/perf/builtin-record.c
> > +++ b/tools/perf/builtin-record.c
> > @@ -2191,6 +2191,10 @@ static struct option __record_options[] = {
> > OPT_BOOLEAN_FLAG(0, "all-user", &record.opts.all_user,
> > "Configure all used events to run in user space.",
> > PARSE_OPT_EXCLUSIVE),
> > + OPT_BOOLEAN(0, "kernel-callchains", &record.opts.kernel_callchains,
> > + "collect kernel callchains"),
> > + OPT_BOOLEAN(0, "user-callchains", &record.opts.user_callchains,
> > + "collect user callchains"),
> > OPT_STRING(0, "clang-path", &llvm_param.clang_path, "clang path",
> > "clang binary to use for compiling BPF scriptlets"),
> > OPT_STRING(0, "clang-opt", &llvm_param.clang_opt, "clang options",
> > diff --git a/tools/perf/perf.h b/tools/perf/perf.h
> > index d59dee61b64d..711e009381ec 100644
> > --- a/tools/perf/perf.h
> > +++ b/tools/perf/perf.h
> > @@ -61,6 +61,8 @@ struct record_opts {
> > bool record_switch_events;
> > bool all_kernel;
> > bool all_user;
> > + bool kernel_callchains;
> > + bool user_callchains;
> > bool tail_synthesize;
> > bool overwrite;
> > bool ignore_missing_thread;
> > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> > index a6f572a40deb..a606b2833e27 100644
> > --- a/tools/perf/util/evsel.c
> > +++ b/tools/perf/util/evsel.c
> > @@ -680,6 +680,10 @@ static void __perf_evsel__config_callchain(struct perf_evsel *evsel,
> >
> > attr->sample_max_stack = param->max_stack;
> >
> > + if (opts->kernel_callchains)
> > + attr->exclude_callchain_user = 1;
> > + if (opts->user_callchains)
> > + attr->exclude_callchain_kernel = 1;
> > if (param->record_mode == CALLCHAIN_LBR) {
> > if (!opts->branch_stack) {
> > if (attr->exclude_user) {
> > --
> > 2.14.1
>
> --
>
> - Arnaldo
--
- Arnaldo
next prev parent reply other threads:[~2019-06-06 14:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-30 13:29 [PATCH] perf record: Add support to collect callchains from kernel or user space only ufo19890607
2019-06-06 6:05 ` 禹舟键
2019-06-06 7:25 ` Jiri Olsa
2019-06-06 14:26 ` Arnaldo Carvalho de Melo
2019-06-06 14:29 ` Arnaldo Carvalho de Melo [this message]
2019-06-06 14:46 ` Jiri Olsa
2019-06-06 18:15 ` Arnaldo Carvalho de Melo
2019-06-10 7:45 ` 禹舟键
2019-06-17 19:18 ` [tip:perf/core] " tip-bot for yuzhoujian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190606142922.GB21245@kernel.org \
--to=arnaldo.melo@gmail.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=milian.wolff@kdab.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=ufo19890607@gmail.com \
--cc=wangnan0@huawei.com \
--cc=yuzhoujian@didichuxing.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.