hiperf火焰图工具
基础介绍
hiperf 火焰图工具主要功能收集和整合性能分析数据,将分析结果转换为可视化性能分析报告
环境搭建
a. 安装python-3.8.3
生成hiperf_report.html火焰图文件
python make_report.py -i perf.data -r hiperf_report.html
功能使用介绍
1、hiperf火焰图工具支持将指定函数拆分至目标so
规格说明(配置文件说明)
配置项说明:
filter_rules: 过滤规则,包含:
filter_str: 表示需要迁移函数包含的字段
new_lib_name: 新库名称
source_lib_name: 要拆分的源库名称
默认情况下配置文件为空(根据需求配置):
{
"filter_str": [],
"new_lib_name":"",
"source_lib_name":""
}
功能使用示例介绍
预制环境:
1、本地组成完整脚本工程
/developtools/hiperf
└── script # 主脚本目录
├── bin # 二进制文件目录
│ └── windows # Windows平台二进制
│ └── x86_64 # x86_64架构二进制
│ ├── hiperf_host.exe # 主程序可执行文件
│ ├── libhiperf_report.dll # 性能报告库
│ └── libsec_shared.dll # 安全共享库
│
├── report.html # 主报告模板
├── report-diff.html # 差异报告模板
├── config.json # 配置文件
├── package.sh # 打包脚本
├── make_report.py # 报告生成脚本
├── make_diff.py # 差异报告生成脚本
├── make_report_sample.py # 报告样本生成脚本
├── command_script.py # 命令脚本
├── record_control.py # 记录控制脚本
├── recv_binary_cache.py # 二进制缓存接收脚本
├── hiperf_utils.py # 工具函数
├── main.py # 主入口脚本
└── loadlib_test.py # 库加载测试脚本
使用步骤:
1、配置config.json,配置示例内容:
"filter_rules":[
{
"filter_str": ["Parcel::Flush"],
"new_lib_name":"demo1.so",
"source_lib_name":"demo"
},
{
"filter_str": ["StartWork"],
"new_lib_name": "demo2",
"source_lib_name": "demo3"
}
]
注:其中demo1、demo2可以自定义名字,demo和demo3如果不存在会有错误日志打印。需要测试正常流程需要输入存在的so名字。其中filter_str字段需要自定义,当前配置只作为示例。
2、将perf.data放工程目录下
3、执行命令:python make_report.py -i perf.data
注:在测试工程路径下执行
预期结果:
1、demo.so中含有Parcel::Flush字符的函数,迁移到demo1.so
2、demo3.so中含有StartWork字符的函数,迁移到demo2.so
2、hiperf火焰图增加近似名称线程及同名线程合并
规格说明(配置文件说明)
配置项说明:
merge_prefix_list: 待合并线程的前缀字符串
默认情况下配置文件为空(根据需求配置):
{
"merge_prefix_list": []
}
功能使用示例介绍
使用步骤:
1、配置config.json,配置示例内容:
"filter_rules":[
{
"merge_prefix_list": ["demo1"]
}
]
注:其中demo1为待合并线程组前缀字符串,当前配置只作为示例。
2、将perf.data放工程目录下
3、执行命令:python make_report.py -i perf.data
注:在测试工程路径下执行
预期结果:
1、按进程维度,所有线程名以demo1字符串为前缀的线程进行合并为一个新线程(demo1*),原线程数据不发生改变。
注:只涉及火焰图修改,不涉及饼图和表格页面的修改。