# cha **Repository Path**: bernard5/cha ## Basic Information - **Project Name**: cha - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-10 - **Last Updated**: 2025-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README\_Common Hotspot Analyzer #### 工具名称 公共热点算子分析识别工具 (Common Hotspot Analyzer) #### 介绍 公共热点算子分析识别工具是一个用于性能剖析和优化的软件解决方案,旨在帮助开发者通过自顶向下方法和自底向上方法相结合的方式,从复杂的应用负载中识别出高开销阶段,并构建到语义环节所对应的函数集合映射关系。该工具能够通过静态离线分析提供热点区域的半自动化分割,从而为定位应用上的软件热点提供指导。 #### 功能特性 * **perf 数据采集**:利用 Linux perf record 工具进行性能数据采样。 * **解析 perf.data**:读取并处理由 perf-record 收集的数据文件,提取调用堆栈信息。 * **输出函数名**:基于收集到的调用堆栈信息构建调用图,并将同一函数下的基本块聚类,输出相应的函数名称。 * **解析语义分类json**:根据预定义的“语义-函数”映射关系(以 JSON 格式存储),对调用图中的节点进行语义标注。 * **输出比重和调用图比较结果**:计算热点子图在整体调用图中的比重,提供跨工作负载的热点子图对比分析。 #### 安装指南 确保您的环境满足以下要求: * 操作系统:Linux * Python 3.8 或更高版本 * 安装依赖库 安装步骤: 1. 下载或克隆项目源码。 2. 构建dist: ```shell python -m build ``` 1. 安装构建包 ```shell pip install ./dist/cha-1.0.0.whl ``` #### 使用说明 1. **perf 数据采集** * 运行命令来启动数据采集: ```shell perf record -e '{cycles,instructions}:S' -a -g -F 999 -- sleep ``` * 其中 `` 是您希望采集数据的时间长度(秒)。 * `-F` 的参数可根据实际需求进行调整。 2. **解析 perf record** * 执行脚本解析 perf-record 数据: ```shell perf script -i perf.data -I --header > perf.script ``` 3. **输出函数名** * 解析perf script并输出所有涉及的函数名称: ```shell cha parse --input perf.script --filter filter.json --output function_names.txt ``` * 其中 `perf.script` 是上一步生成的解析数据文件,`function_names.txt` 是输出的函数名称列表。 * 此过程结束后,可以基于`function_names.txt`文件构建语义标注的json文件。 * `filter.json`是过滤条件,可根据command cpu pid进行过滤,可按照实际需求进行调整。 4. **语义分类并输出比重和调用图比较结果** * 构建调用图 * 应用预先定义的“语义-函数”映射规则,对调用图进行语义标注 * 分析热点子图的比重排序表 * 可提供热点子图的可视化输出 ```shell cha annotate --input parsed.script --semanticsmapping semanticsmapping.json --output annotated_semantics.csv ```