# poc **Repository Path**: seeventh/poc ## Basic Information - **Project Name**: poc - **Description**: ppocppppoc for arm - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PMU Log Analyzer 用于解析多节点、多 `rank` 的 PMU 日志,并通过桌面 GUI 按模块、子项和 `rank` 进行可视化分析。 ## 目标 - 分析多节点 PMU 性能数据 - 找出不同节点、不同 `rank` 的性能波动 - 支持按模块下钻到具体统计项 ## 数据结构 日志目录结构默认类似: ```text xx/res/1/rank.000xxx/stderr xx/res/1/rank.000xxx/stdout ``` 当前主要分析 `stdout` 里的 PMU 数据。 ## 当前支持的 PMU 模块 - `cpu2uc` - `ring` - `hbm` - `td` 解析器会根据日志内容自动识别模块类型。 ## 解析脚本 脚本路径: ```text scripts/parse_pmu_logs.py ``` 基本用法: ```bash python3 scripts/parse_pmu_logs.py data -o out/pmu_parsed ``` 功能: - 递归扫描输入目录下所有 `stdout` - 自动识别 PMU 模块 - 提取统一元数据:`module`、`rank`、`res_id`、`zone`、`scope` 等 - 按模块分别导出结果 - 在终端单行显示解析进度 ## 输出文件 解析结果按模块分别导出到输出目录,例如: ```text out/pmu_parsed/cpu2uc_detail.csv out/pmu_parsed/cpu2uc_summary.csv out/pmu_parsed/cpu2uc_raw.json out/pmu_parsed/ring_detail.csv out/pmu_parsed/ring_summary.csv out/pmu_parsed/ring_raw.json out/pmu_parsed/hbm_detail.csv out/pmu_parsed/hbm_summary.csv out/pmu_parsed/hbm_raw.json out/pmu_parsed/td_detail.csv out/pmu_parsed/td_summary.csv out/pmu_parsed/td_raw.json ``` 说明: - `detail.csv` 每条明细记录一行,适合按 `rank`、`subuc`、`cluster` 做细粒度分析 - `summary.csv` 按 `module/node_group/res_id/rank` 聚合后的统计结果 - `raw.json` 保留原始解析结果,方便二次处理 ## `cluster` 和 `subuc` 的关系 - `subuc0/subuc1/...` 表示更细粒度的子单元统计 - `cluster` 表示对应模块在更高层的聚合结果 分析建议: - 先看 `cluster` 判断整体是否异常 - 再看 `subuc` 下钻到具体子区域 ## GUI 脚本路径: ```text scripts/pmu_gui.py ``` 启动方式: ```bash python3 scripts/pmu_gui.py ``` GUI 功能: - 选择 `Input Root` - 选择 `Output Dir` - 点击 `Parse` 解析日志 - 点击 `Load Parsed` 加载已有结果 - 选择 `Module` - 在当前 `Module` 下选择对应的 `Metric` - 在当前 `Module` 下选择对应的 `Scope` - 点击 `Refresh Plot` 主动刷新图像 图形界面行为: - `Parse`、`Load Parsed`、`Refresh Plot` 都是异步执行 - 底部有进度条,长时间操作不会卡死主界面 - 图像加载的是全部节点数据 - 节点很多时,只稀疏显示 `x` 轴标签,不丢数据 - 节点很多时自动隐藏 marker,避免曲线过密 - 图右侧会显示当前图像的: - 最好值对应的 `rank` - 最差值对应的 `rank` - 其中默认规则为: - 最小值 = 最好 - 最大值 = 最差 ## 配置保存 GUI 会自动保存上次使用的配置到: ```text out/pmu_gui_config.json ``` 保存内容: - `Input Root` - `Output Dir` - `Module` - `Metric` - `Scope` 下次启动 GUI 时会自动恢复。 ## 依赖 CLI 解析脚本只依赖 Python 3 标准库。 GUI 需要: - Python 的 `tkinter` - `matplotlib` 如果当前环境缺少这些依赖,GUI 会直接报错提示。 ## 当前样本数据 仓库当前自带的样本日志位于: - `data/cpu2uc/...` - `data/ring/...` - `data/hbm/...` - `data/td/...` 可直接用于验证解析器和 GUI 行为。 ## 常用命令 解析样本日志: ```bash python3 scripts/parse_pmu_logs.py data -o out/pmu_parsed ``` 启动 GUI: ```bash python3 scripts/pmu_gui.py ``` 静态检查: ```bash python3 -m py_compile scripts/parse_pmu_logs.py scripts/pmu_gui.py ``` ## 最近功能演进 最近几次关键提交: ```text 4376ff7 feat: persist PMU GUI state and async plot updates 3d2aa5e feat: show PMU plot best and worst ranks 6975810 feat: improve PMU GUI loading and plotting 2e0d579 fix: keep PMU GUI responsive while parsing 57ddd87 feat: add PMU desktop explorer f6d8dd7 feat: add PMU log parser ```