鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

热点分析火焰图

命令功能

采集某些时刻CPU、CYCLES、LOCK、CACHE_MISSES、ALLOC事件的栈信息,统计当前JVM中的热点方法,以火焰图与反向火焰图的形式查询和呈现。

不支持在容器宿主机采集容器内进程,若需采集容器内进程信息,请在容器中使用命令行工具。

命令格式

1
devkit java-perf hotspot [-p {pid}] [-d <DURATION> ] [-e {CPU,ALLOC,CYCLES,CACHE_MISSES,LOCK}] [-i <INTERVAL> | --interval=INTERVAL]

参数说明

表1 参数说明

参数

参数选项

说明

-h/--help

-

可选参数,获取帮助信息。

-d/--duration

-

可选参数,设置采集时长,单位为秒,默认为20秒,取值范围1至300秒,可Ctrl+C停止任务采集并开始分析。

-i/--interval

-

可选参数,设置采样间隔,单位为毫秒,默认为10毫秒,取值范围1至1000毫秒。

-o/--output

-

可选参数,设置报告输出目录,默认为工具安装目录下的data目录。

-p/--pid

-

可选参数,指定采集热点方法的Java进程PID。

-e/--event

CPU/ALLOC/CYCLES/CACHE_MISSES/LOCK

可选参数,指定采样事件类型,默认为CPU。

  • CPU:采集CPU事件类型的数据。
  • CYCLES:采集Java堆中的内存分配情况。
  • LOCK:采集CPU的时钟周期。
  • CACHE_MISSES:采集缓存未命中的次数。
  • ALLOC:采集锁的争用情况。

使用示例

1
devkit java-perf hotspot -p 17329 -e CPU -d 60 -i 10 -o /opt
  • -p:指定采集的进程号。
  • -e CPU:指定采集CPU事件类型的数据。
  • -d 60:采集时长为60秒。
  • -i 10:采样间隔为10毫秒。
  • -o /opt:指定报告输出目录为/opt。

返回信息如下:

1
2
JAVA HOTSPOT ANALYSIS(Press Ctrl+C to exit and generate the summary report)
The flame graph is generated in /opt/FlameGraph_CPU(31819)_20240612_104433.html.

任务生成火焰图html文件可使用浏览器查看,支持检索能力和反向火焰图。

图1 火焰图html
图2 反向火焰图
  • 反向火焰图是以栈顶为起点,逐步回溯至栈底,将调用方法一致的调用栈进行聚合。
  • 单击按钮可使火焰图上下翻转,单击按钮可使火焰图恢复至初始状态,单击按钮使火焰图按函数占比排序(默认为函数占比排序),单击按钮使火焰图按函数名称排序。