docs: add gprof usage documentation
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com> g 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
This commit is contained in:
parent
d375a09c0a
commit
b8670e905a
1 changed files with 81 additions and 0 deletions
81
Documentation/applications/system/gprof/index.rst
Normal file
81
Documentation/applications/system/gprof/index.rst
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
=============================
|
||||||
|
``gprof`` GNU Profile tool
|
||||||
|
=============================
|
||||||
|
|
||||||
|
GNU Profile (gprof) is a performance analysis tool that helps developers
|
||||||
|
identify code bottlenecks and optimize their programs.
|
||||||
|
It provides detailed information about the execution time and call
|
||||||
|
frequency of functions within a program.
|
||||||
|
|
||||||
|
gprof can be used to:
|
||||||
|
|
||||||
|
1. Detect performance bottlenecks in your code
|
||||||
|
2. Identify which functions consume the most execution time
|
||||||
|
3. Analyze the call graph of your program
|
||||||
|
4. Help prioritize optimization efforts
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
Build
|
||||||
|
-----
|
||||||
|
|
||||||
|
Enable the following configuration in NuttX::
|
||||||
|
|
||||||
|
CONFIG_SYSTEM_GPROF
|
||||||
|
|
||||||
|
Using in NuttX
|
||||||
|
--------------
|
||||||
|
|
||||||
|
1. Start profiling::
|
||||||
|
|
||||||
|
nsh> gprof start
|
||||||
|
|
||||||
|
2. Stop profiling::
|
||||||
|
|
||||||
|
nsh> gprof stop
|
||||||
|
|
||||||
|
3. Dump profiling data::
|
||||||
|
|
||||||
|
nsh> gprof dump /tmp/gmon.out
|
||||||
|
|
||||||
|
Analyzing on Host
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1. Pull the profiling data to host::
|
||||||
|
|
||||||
|
adb pull /tmp/gmon.out ./gmon.out
|
||||||
|
|
||||||
|
2. Analyze the data using gprof tool::
|
||||||
|
|
||||||
|
The saved file format complies with the standard gprof format.
|
||||||
|
For detailed instructions on gprof command usage, please refer to the GNU gprof manual:
|
||||||
|
https://ftp.gnu.org/old-gnu/Manuals/gprof-2.9.1/html_mono/gprof.html
|
||||||
|
|
||||||
|
arm-none-eabi-gprof ./nuttx/nuttx gmon.out -b
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```
|
||||||
|
arm-none-eabi-gprof nuttx/nuttx gmon.out -b
|
||||||
|
Flat profile:
|
||||||
|
|
||||||
|
Each sample counts as 0.001 seconds.
|
||||||
|
% cumulative self self total
|
||||||
|
time seconds seconds calls s/call s/call name
|
||||||
|
66.41 3.55 3.55 43 0.08 0.08 sdelay
|
||||||
|
33.44 5.34 1.79 44 0.04 0.04 delay
|
||||||
|
0.07 5.34 0.00 up_idle
|
||||||
|
0.04 5.34 0.00 nx_start
|
||||||
|
0.02 5.34 0.00 fdtdump_main
|
||||||
|
0.02 5.34 0.00 nxsem_wait
|
||||||
|
0.00 5.34 0.00 1 0.00 5.34 hello_main
|
||||||
|
0.00 5.34 0.00 1 0.00 0.00 singal_handler
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
This output shows the performance profile of the program,
|
||||||
|
including execution time and call counts for each function.
|
||||||
|
The flat profile table provides a quick overview of where the program spends most of its time.
|
||||||
|
In this example, `sdelay` and `delay` functions consume the majority of execution time.
|
||||||
|
This information can be used to identify performance bottlenecks and optimize critical parts of the code.
|
||||||
Loading…
Add table
Reference in a new issue