diff options
| author | Ingo Molnar <mingo@kernel.org> | 2020-01-10 18:49:34 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2020-01-10 18:49:34 +0100 |
| commit | 53f3feeb7bd2d78039b3dc9ab158bad2a5dbe012 (patch) | |
| tree | 408b49820aae9d28ff773546476f988f346e04e3 /tools/perf/lib/Documentation/tutorial | |
| parent | 1f676247f36a4bdea134de5e8bc5041db9678c4e (diff) | |
| parent | 6c4798d3f08b81c2c52936b10e0fa872590c96ae (diff) | |
Merge tag 'perf-core-for-mingo-5.6-20200106' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
perf record:
Alexey Budankov:
- Adapt affinity for machines with #CPUs > 1K to overcome current 1024 CPUs
mask size limitation of cpu_set_t type.
perf report/top TUI:
Arnaldo Carvalho de Melo:
- Make ENTER consistently present the pop up menu with and without call
chains, to eliminate confusion. The menu continues available at all times
use 'm' and '+' can be used to toggle just one call chain level, 'e' for all
the call chains for a top level histogram entry and 'E' to expand all call
chains in all top level entries. Extra info about these options was added to
the pop up menu entries. Pressing 'k' serves as special hotkey to go straight
to the main vmlinux entries, to avoid having to press enter and then select
"Zoom into the kernel DSO".
perf sched timehist:
David Ahern:
- Add support for filtering on CPU.
perf tests:
Arnaldo Carvalho de Melo:
- Show expected versus obtained values in bp_signal test.
libperf:
Jiri Olsa:
- Move to tools/lib/perf.
- Add man pages.
libapi:
Andrey Zhizhikin:
- Fix gcc9 stringop-truncation compilation error.
tools lib:
Vitaly Chikunov:
- Fix builds when glibc contains strlcpy(), which is the case for ALT Linux.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/lib/Documentation/tutorial')
| -rw-r--r-- | tools/perf/lib/Documentation/tutorial/tutorial.rst | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/tools/perf/lib/Documentation/tutorial/tutorial.rst b/tools/perf/lib/Documentation/tutorial/tutorial.rst deleted file mode 100644 index 7be7bc27b385..000000000000 --- a/tools/perf/lib/Documentation/tutorial/tutorial.rst +++ /dev/null @@ -1,123 +0,0 @@ -.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) - -libperf tutorial -================ - -Compile and install libperf from kernel sources -=============================================== -.. code-block:: bash - - git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git - cd linux/tools/perf/lib - make - sudo make install prefix=/usr - -Libperf object -============== -The libperf library provides several high level objects: - -struct perf_cpu_map - Provides a cpu list abstraction. - -struct perf_thread_map - Provides a thread list abstraction. - -struct perf_evsel - Provides an abstraction for single a perf event. - -struct perf_evlist - Gathers several struct perf_evsel object and performs functions on all of them. - -The exported API binds these objects together, -for full reference see the libperf.7 man page. - -Examples -======== -Examples aim to explain libperf functionality on simple use cases. -They are based in on a checked out linux kernel git tree: - -.. code-block:: bash - - $ cd tools/perf/lib/Documentation/tutorial/ - $ ls -d ex-* - ex-1-compile ex-2-evsel-stat ex-3-evlist-stat - -ex-1-compile example -==================== -This example shows the basic usage of *struct perf_cpu_map*, -how to create it and display its cpus: - -.. code-block:: bash - - $ cd ex-1-compile/ - $ make - gcc -o test test.c -lperf - $ ./test - 0 1 2 3 4 5 6 7 - - -The full code listing is here: - -.. code-block:: c - - 1 #include <perf/cpumap.h> - 2 - 3 int main(int argc, char **Argv) - 4 { - 5 struct perf_cpu_map *cpus; - 6 int cpu, tmp; - 7 - 8 cpus = perf_cpu_map__new(NULL); - 9 - 10 perf_cpu_map__for_each_cpu(cpu, tmp, cpus) - 11 fprintf(stdout, "%d ", cpu); - 12 - 13 fprintf(stdout, "\n"); - 14 - 15 perf_cpu_map__put(cpus); - 16 return 0; - 17 } - - -First you need to include the proper header to have *struct perf_cpumap* -declaration and functions: - -.. code-block:: c - - 1 #include <perf/cpumap.h> - - -The *struct perf_cpumap* object is created by *perf_cpu_map__new* call. -The *NULL* argument asks it to populate the object with the current online CPUs list: - -.. code-block:: c - - 8 cpus = perf_cpu_map__new(NULL); - -This is paired with a *perf_cpu_map__put*, that drops its reference at the end, possibly deleting it. - -.. code-block:: c - - 15 perf_cpu_map__put(cpus); - -The iteration through the *struct perf_cpumap* CPUs is done using the *perf_cpu_map__for_each_cpu* -macro which requires 3 arguments: - -- cpu - the cpu numer -- tmp - iteration helper variable -- cpus - the *struct perf_cpumap* object - -.. code-block:: c - - 10 perf_cpu_map__for_each_cpu(cpu, tmp, cpus) - 11 fprintf(stdout, "%d ", cpu); - -ex-2-evsel-stat example -======================= - -TBD - -ex-3-evlist-stat example -======================== - -TBD |
