热点函数分析
命令功能
通过ptrace对Python程序及Python和C/C++的混合程序进行采样,分析调用栈信息,获取Top20的热点函数并绘制火焰图。

- 支持的Python版本为3.9.X。
- 仅支持openEuler操作系统。
- 仅支持PID模式采集分析。
命令格式
devkit py-perf hotspot [-h] [-l {0,1,2,3}] [-d <sec>] [-i <msec>] [-p {PID}] [-o <file>] [--native]
参数说明
参数 |
参数选项 |
说明 |
---|---|---|
-h/--help |
- |
获取帮助信息。 |
-l/--log-level |
0/1/2/3 |
设置日志级别,默认为1。
|
-d/--duration |
- |
设置采集时长,单位为秒,最小值为1秒,默认为一直采集,可使用Ctrl+\取消任务或Ctrl+C停止采集并进入分析。 |
-i/--interval |
- |
设置采集间隔,单位为毫秒,取值范围1至1000毫秒,默认为10毫秒。 |
-p/--pid |
PID |
指定采集的进程PID。 |
-o/--output |
- |
设置报告数据生成文件名;默认生成在当前所在目录,默认文件名格式为FlameGraph-YMD-HMS。 |
--native |
- |
设置是否采集Python和C的调用栈,使用此参数将采集Python和C的调用栈,否则仅采集Python调用栈。 |
使用示例
devkit py-perf hotspot -p 2082596 -d 5 -i 100 -o /home/demo/flamegraph --native

- 参数-p 2082596表示采集进程号为2082596的进程数据,参数-d 5表示采集时长为5秒,参数-i 100表示采样间隔为100毫秒,参数-o /home/demo/flamegraph表示在/home/demo/下生成名为flamegraph.html火焰图文件。
- 示例的返回信息中堆栈信息过多,为便于展示已省略大部分堆栈内容,请以实际使用为准。
返回信息如下:
Python Hotspot Top20 Summary Report Time:2024/08/13 15:07:16 ================================================================================ ───────────────────────────────────────────────────────────────────── Function Runtime(ms) Runtime(%) ───────────────────────────────────────────────────────────────────── pthread_condattr_setpshared 4722 82.04 pthread_condattr_setpshared clone blas_thread_server 447 7.77 blas_thread_server pthread_condattr_setpshared clone ... ... ... scipy_dgebal_64_ 9 0.16 scipy_dgebal_64_ scipy_dgeev_64_ void eig_wrapper<f2c_doublecomplex, double>(char, char, char**, long const*, long const*) [clone .constprop.0] generic_wrapped_legacy_loop ufunc_generic_fastcall _PyEval_EvalFrameDefault _PyEval_EvalFrameDefault dispatcher_vectorcall _PyEval_EvalFrameDefault _PyEval_EvalFrameDefault _PyEval_EvalFrameDefault _PyEval_EvalFrameDefault _PyEval_EvalFrameDefault eig (/usr/local/lib64/python3.9/site-packages/numpy/linalg/_linalg.py:1702) compute_eigenvalues (/home/jjl/workspace/pyhotstpot_demo/ai-demo/numpy_test_1.py:10) run (/usr/lib64/python3.9/concurrent/futures/thread.py:58) _worker (/usr/lib64/python3.9/concurrent/futures/thread.py:83) run (/usr/lib64/python3.9/threading.py:910) _bootstrap_inner (/usr/lib64/python3.9/threading.py:973) _bootstrap (/usr/lib64/python3.9/threading.py:930) PyCodec_StreamReader _PyGC_CollectNoFail _Py_hashtable_destroy pthread_condattr_setpshared clone dgemm_nn 9 0.16 dgemm_nn ─────────────────────────────────────────────────────────────────────The flamegraph html report: /home/demo/flamegraph.html
任务生成火焰图html文件可使用浏览器查看,因堆栈名称过长,鼠标悬停在对应堆栈块显示其信息,可单击对应堆栈块查看详情。
图1 火焰图


父主题: Python/C性能分析