From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>,
Steven Rostedt <rostedt@goodmis.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Ian Rogers <irogers@google.com>,
Stephane Eranian <eranian@google.com>,
Song Liu <songliubraving@fb.com>,
Alexey Budankov <alexey.budankov@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>,
lkml <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Michael Petlan <mpetlan@redhat.com>,
Jin Yao <yao.jin@linux.intel.com>
Subject: Re: [PATCHv3 00/10] libperf: Add sampling interface (leftover)
Date: Fri, 18 Oct 2019 15:29:31 -0300 [thread overview]
Message-ID: <20191018182931.GG1797@kernel.org> (raw)
In-Reply-To: <20191017105918.20873-1-jolsa@kernel.org>
Em Thu, Oct 17, 2019 at 12:59:08PM +0200, Jiri Olsa escreveu:
> hi,
> sending changes for exporting basic sampling interface
> in libperf. It's now possible to use following code in
> applications via libperf:
Thanks, applied.
- Arnaldo
> --- (example is without error checks for simplicity)
>
> struct perf_event_attr attr = {
> .type = PERF_TYPE_TRACEPOINT,
> .sample_period = 1,
> .wakeup_watermark = 1,
> .disabled = 1,
> };
> /* ... setup attr */
>
> cpus = perf_cpu_map__new(NULL);
>
> evlist = perf_evlist__new();
> evsel = perf_evsel__new(&attr);
> perf_evlist__add(evlist, evsel);
>
> perf_evlist__set_maps(evlist, cpus, NULL);
>
> err = perf_evlist__open(evlist);
> err = perf_evlist__mmap(evlist, 4);
>
> err = perf_evlist__enable(evlist);
>
> /* ... monitored area, plus all the other cpus */
>
> err = perf_evlist__disable(evlist);
>
> perf_evlist__for_each_mmap(evlist, map) {
> if (perf_mmap__read_init(map) < 0)
> continue;
>
> while ((event = perf_mmap__read_event(map)) != NULL) {
> perf_mmap__consume(map);
> }
>
> perf_mmap__read_done(map);
> }
>
> perf_evlist__delete(evlist);
> perf_cpu_map__put(cpus);
>
> --- (end)
>
> Nothing is carved in stone so far, the interface is exported
> as is available in perf now and we can change it as we want.
>
> New tests are added in test-evlist.c to do thread and cpu based
> sampling.
>
> All the functionality should not change, however there's considerable
> mmap code rewrite.
>
> Now we have perf_evlist__mmap_ops called by both perf and libperf
> mmaps functions with specific 'struct perf_evlist_mmap_ops'
> callbacks:
>
> - get - to get mmap object, both libperf and perf use different
> objects, because perf needs to carry more data for aio,
> compression and auxtrace
> - mmap - to actually mmap the object, it's simple mmap for libperf,
> but more work for perf wrt aio, compression and auxtrace
> - idx - callback to get current IDs, used only in perf for auxtrace
> setup
>
>
> It would be great if guys could run your usual workloads to see if all
> is fine.. so far so good in my tests ;-)
>
>
> It's also available in here:
> git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
> perf/lib
>
> v3 changes:
> - changed mmap0 and mmap_ovw0 to mmap_first and mmap_ovw_first
> - rebased to latest perf/core
> - portion of patches already taken
>
> v2 changes:
> - rebased to latest perf/core
> - portion of patches already taken
> - explained mmap refcnt management in following patch changelog:
> libperf: Centralize map refcnt setting
>
> thanks,
> jirka
>
>
> Cc: Kan Liang <kan.liang@linux.intel.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Ian Rogers <irogers@google.com>
> Cc: Stephane Eranian <eranian@google.com>
> Cc: Song Liu <songliubraving@fb.com>
> Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
> Cc: Andi Kleen <ak@linux.intel.com>
> ---
> Jiri Olsa (10):
> libperf: Add perf_evlist__for_each_mmap function
> libperf: Move mmap allocation to perf_evlist__mmap_ops::get
> libperf: Move mask setup to perf_evlist__mmap_ops function
> libperf: Link static tests with libapi.a
> libperf: Add _GNU_SOURCE define to compilation
> libperf: Add tests_mmap_thread test
> libperf: Add tests_mmap_cpus test
> libperf: Keep count of failed tests
> libperf: Do not export perf_evsel__init/perf_evlist__init
> libperf: Add pr_err macro
>
> tools/perf/lib/Makefile | 2 ++
> tools/perf/lib/evlist.c | 71 ++++++++++++++++++++++++++++++++++++++---------------
> tools/perf/lib/include/internal/evlist.h | 3 +++
> tools/perf/lib/include/internal/evsel.h | 1 +
> tools/perf/lib/include/internal/mmap.h | 5 ++--
> tools/perf/lib/include/internal/tests.h | 20 ++++++++++++---
> tools/perf/lib/include/perf/core.h | 1 +
> tools/perf/lib/include/perf/evlist.h | 10 +++++++-
> tools/perf/lib/include/perf/evsel.h | 2 --
> tools/perf/lib/internal.h | 3 +++
> tools/perf/lib/libperf.map | 3 +--
> tools/perf/lib/mmap.c | 6 +++--
> tools/perf/lib/tests/Makefile | 8 +++---
> tools/perf/lib/tests/test-cpumap.c | 2 +-
> tools/perf/lib/tests/test-evlist.c | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> tools/perf/lib/tests/test-evsel.c | 2 +-
> tools/perf/lib/tests/test-threadmap.c | 2 +-
> tools/perf/util/evlist.c | 29 +++++++++-------------
> 18 files changed, 333 insertions(+), 55 deletions(-)
--
- Arnaldo
prev parent reply other threads:[~2019-10-18 18:29 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-17 10:59 [PATCHv3 00/10] libperf: Add sampling interface (leftover) Jiri Olsa
2019-10-17 10:59 ` [PATCH 01/10] libperf: Add perf_evlist__for_each_mmap function Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] libperf: Introduce perf_evlist__for_each_mmap() tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 02/10] libperf: Move mmap allocation to perf_evlist__mmap_ops::get Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] " tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 03/10] libperf: Move mask setup to perf_evlist__mmap_ops function Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] libperf: Move mask setup to perf_evlist__mmap_ops() tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 04/10] libperf: Link static tests with libapi.a Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] " tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 05/10] libperf: Add _GNU_SOURCE define to compilation Jiri Olsa
2019-10-18 18:07 ` Arnaldo Carvalho de Melo
2019-10-19 17:37 ` Jiri Olsa
2019-10-17 10:59 ` [PATCH 06/10] libperf: Add tests_mmap_thread test Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] " tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 07/10] libperf: Add tests_mmap_cpus test Jiri Olsa
2019-10-18 18:14 ` Arnaldo Carvalho de Melo
2019-10-18 18:16 ` Arnaldo Carvalho de Melo
2019-10-19 17:42 ` Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] " tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 08/10] libperf: Keep count of failed tests Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] " tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 09/10] libperf: Do not export perf_evsel__init/perf_evlist__init Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] libperf: Do not export perf_evsel__init()/perf_evlist__init() tip-bot2 for Jiri Olsa
2019-10-17 10:59 ` [PATCH 10/10] libperf: Add pr_err macro Jiri Olsa
2019-10-21 23:18 ` [tip: perf/core] libperf: Add pr_err() macro tip-bot2 for Jiri Olsa
2019-10-18 18:29 ` Arnaldo Carvalho de Melo [this message]
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=20191018182931.GG1797@kernel.org \
--to=arnaldo.melo@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=alexey.budankov@linux.intel.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
--cc=songliubraving@fb.com \
--cc=yao.jin@linux.intel.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.