• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

images/18-Mar-2025-522496

pytest/18-Mar-2025-3924

src/18-Mar-2025-5541

CMakeLists.txtD18-Mar-2025232 117

README.rstD18-Mar-20251.7 KiB7347

prj.confD18-Mar-2025121 76

sample.yamlD18-Mar-2025394 1917

README.rst

1.. zephyr:code-sample:: profiling-perf
2   :name: Perf tool
3
4    Send perf samples to the host with console support
5
6This application can be used to understand how to use the :ref:`profiling-perf`
7tool.
8
9Requirements
10************
11
12The Perf tool is currently implemented only for RISC-V and x86_64 architectures.
13
14Usage example
15*************
16
17* Build and run the sample with:
18
19  .. zephyr-app-commands::
20     :zephyr-app: samples/subsys/profiling/perf
21     :board: qemu_riscv64
22     :goals: run
23     :compact:
24
25* After the sample has started, enter the shell command:
26
27  .. code-block:: console
28
29     uart:~$ perf record <duration> <frequency>
30
31  This command will start a timer for *duration* milliseconds at *frequency* Hz.
32
33* Wait for the completion message ``perf done!``, or ``perf buf override!`` if
34  the perf buffer size is smaller than required.
35
36* Print the samples captured by perf in the terminal with the shell command:
37
38  .. code-block:: console
39
40     uart:~$ perf printbuf
41
42  The output should be similar to:
43
44  .. code-block:: console
45
46     Perf buf length 2046
47     0000000000000004
48     00000000001056b2
49     0000000000108192
50     000000000010052f
51     0000000000000000
52       ....
53     000000000010052f
54     0000000000000000
55
56* Copy the output into a file, for example :file:`perf_buf`.
57
58* Generate :file:`graph.svg` with
59  :zephyr_file:`scripts/profiling/stackcollapse.py` and `FlameGraph`_:
60
61  .. _FlameGraph: https://github.com/brendangregg/FlameGraph/
62
63  .. code-block:: shell
64
65     python scripts/perf/stackcollapse.py perf_buf build/zephyr/zephyr.elf | <flamegraph_dir_path>/flamegraph.pl > graph.svg
66
67Graph example
68=============
69
70.. image:: images/graph_example.svg
71   :align: center
72   :alt: graph example
73