| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
父目录包含非法子目录时继续处理合法Profiling数据 Co-authored-by: wuzhaonan<1263703239@qq.com> # message auto-generated for no-merge-commit merge: !496 merge fix/python-entry-skip-invalid-dirs into master [bugfix][msprof]跳过父目录中的非法Profiling子目录 Created-by: wuzhaonan Commit-by: wuzhaonan Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** - - 用户指定的父目录同时包含合法 Profiling 数据和非法、残缺或不可访问的子目录时,原流程会因单个异常目录而整体中断,导致合法数据无法继续处理。 - **修改内容:** 1. 保留用户输入根目录的严格合法性检查; 2. 在子目录遍历阶段跳过非法或不可访问目录,并输出 warning; 3. 统一适配 import、export、query 和 analyze 四个命令; 4. 只要存在合法 Profiling 数据就继续处理并返回原有处理结果; 5. 全部子目录均无效时,沿用 PROF_INVALID_PATH_ERROR,退出码为 2; 6. Profiling 数据解析错误和 Cluster 一致性错误仍按原有错误码向上抛出; 7. 补充相关回归及异常边界单元测试。 ---- ## 2. 功能验证 - [√ ] **功能自验** 1、修复前的输出 -  2、修复后的输出(非法目录只有警告) -  3、修复后的文件输出 -  - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!496 | 18 天前 | |
fix: 修正全 C DataTag 白名单并添加打屏日志 Co-authored-by: chenqm<chenzhipeng51@huawei.com> # message auto-generated for no-merge-commit merge: !506 merge fix/full-c-data-tag-fallback into master fix: 修正全 C DataTag 白名单并添加打屏日志 Created-by: chenqm Commit-by: chenqm Merged-by: ascend-robot Description: ## 1. 修改描述 - **修改原因:** 全 C 预检需要区分已知但无解析规则的文件与真正未知的 raw 数据,同时补齐已启用的 host 数据能力,并提供可定位的诊断信息。 - **修改内容:** - 忽略 stream_sq_info 等已知不会进入 FileDispatch 解析流程的文件;其他未映射且非空的 raw 文件报告 UNKNOWN_RAW_DATA,避免数据被静默丢弃。 - 补齐 RUNTIME_OP_INFO、CAPTURE_STREAM_INFO、MC2_COMM_INFO、STREAM_EXPAND、CCU_TASK、CCU_WAIT_SIGNAL、CCU_GROUP 等 host 数据 tag;未启用 C 入口的 STATIC_OP_MEM 继续回退。 - 全 C 预检回退时将 reason code、说明和详细参数记录到 collection 日志,并在控制台输出来源文件名、result 目录名和 reason code;同时输出全 C 流程的开始、完成和失败状态。 - 为全 C 预检新增独立的 check_dir_can_create_entry,检查目录创建条目所需的写权限和执行权限;公共 check_dir_writable 保持原有写权限语义,避免影响其他写文件流程。 - 补充完成标记写入的异常处理,并完善决策、权限和日志相关 UT。 - 增加 lpm_info 的 C 化解析、持久化处理及对应能力配置。 ## 2. 功能验证 - [x] 覆盖 raw 数据识别、tag 能力判断、目录权限检查及日志输出。 - [x] 提交 hooks 通过:Ruff、pylint、bandit、codespell、typos、Gitleaks 等;git diff --check 通过。 - [ ] 标准环境冒烟及真实数据 E2E:未执行。 基于 master 2756d5ec0,最终分支相对目标基线保留 1 个修复提交。 ## 3. 安全自检 - [x] 无新增或删除 CLI 参数。 - [x] 文件操作复用既有日志路径和目录校验机制。 - [x] 保留预检回退与 native 执行失败传播,并补充权限异常处理。 - [x] 日志记录必要诊断信息,不输出凭据。 本 PR 无 C++ 源码修改。 See merge request: Ascend/msprof!506 | 16 天前 | |
test | 13 天前 | |
fix: 修正全 C DataTag 白名单并添加打屏日志 Co-authored-by: chenqm<chenzhipeng51@huawei.com> # message auto-generated for no-merge-commit merge: !506 merge fix/full-c-data-tag-fallback into master fix: 修正全 C DataTag 白名单并添加打屏日志 Created-by: chenqm Commit-by: chenqm Merged-by: ascend-robot Description: ## 1. 修改描述 - **修改原因:** 全 C 预检需要区分已知但无解析规则的文件与真正未知的 raw 数据,同时补齐已启用的 host 数据能力,并提供可定位的诊断信息。 - **修改内容:** - 忽略 stream_sq_info 等已知不会进入 FileDispatch 解析流程的文件;其他未映射且非空的 raw 文件报告 UNKNOWN_RAW_DATA,避免数据被静默丢弃。 - 补齐 RUNTIME_OP_INFO、CAPTURE_STREAM_INFO、MC2_COMM_INFO、STREAM_EXPAND、CCU_TASK、CCU_WAIT_SIGNAL、CCU_GROUP 等 host 数据 tag;未启用 C 入口的 STATIC_OP_MEM 继续回退。 - 全 C 预检回退时将 reason code、说明和详细参数记录到 collection 日志,并在控制台输出来源文件名、result 目录名和 reason code;同时输出全 C 流程的开始、完成和失败状态。 - 为全 C 预检新增独立的 check_dir_can_create_entry,检查目录创建条目所需的写权限和执行权限;公共 check_dir_writable 保持原有写权限语义,避免影响其他写文件流程。 - 补充完成标记写入的异常处理,并完善决策、权限和日志相关 UT。 - 增加 lpm_info 的 C 化解析、持久化处理及对应能力配置。 ## 2. 功能验证 - [x] 覆盖 raw 数据识别、tag 能力判断、目录权限检查及日志输出。 - [x] 提交 hooks 通过:Ruff、pylint、bandit、codespell、typos、Gitleaks 等;git diff --check 通过。 - [ ] 标准环境冒烟及真实数据 E2E:未执行。 基于 master 2756d5ec0,最终分支相对目标基线保留 1 个修复提交。 ## 3. 安全自检 - [x] 无新增或删除 CLI 参数。 - [x] 文件操作复用既有日志路径和目录校验机制。 - [x] 保留预检回退与 native 执行失败传播,并补充权限异常处理。 - [x] 日志记录必要诊断信息,不输出凭据。 本 PR 无 C++ 源码修改。 See merge request: Ascend/msprof!506 | 16 天前 | |
Fixed typo in platform analysis Co-authored-by: kokljuevs<kokljuev.sergey@huawei.com> # message auto-generated for no-merge-commit merge: !207 merge master into master Fix typo and regex Created-by: kokljuevs Commit-by: kokljuevs Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** - **修改内容:** Fixed typo, fixed regexp ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) Checked locally ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!207 | 5 个月前 | |
[Feature]安全策略精简 Co-authored-by: yuliangbin<y1416490440@163.com> # message auto-generated for no-merge-commit merge: !275 merge fix_safe into master [Feature]安全策略精简 Created-by: yu_liangbin Commit-by: yuliangbin Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 易用性安全校验相关整改 - **修改内容:** 1.软链接校验改告警 analysis/common_func/file_manager.py analysis/csrc/infrastructure/utils/file.cpp 2.权限属主异常改告警 analysis/common_func/file_manager.py 3.路径长度放宽4096 analysis/common_func/ms_constant/number_constant.py analysis/interface/get_msprof_info.py analysis/csrc/infrastructure/utils/config.h analysis/csrc/infrastructure/utils/file.cpp 4.文件读取限制放宽 analysis/common_func/constant.py analysis/csrc/infrastructure/utils/file.cpp analysis/csrc/infrastructure/utils/file.h 5.Parser大小限制放宽 analysis/csrc/domain/services/parser/parser.cpp 6.UT适配 ---- ## 2. 功能验证 - [x] **功能自验** - [x] **本地自验用例截图** - [x] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!275 | 3 个月前 | |
bugfix:统一db问题修正 Co-authored-by: Seanesmhxocism<wangzixuan54@huawei.com> # message auto-generated for no-merge-commit merge: !487 merge linux into master bugfix:统一db问题修正 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** - 1、DPUTask表中包含globalTid,但是未遵循统一的globalTid的呈现逻辑。 - 2、静态图场景,无法区分device数据对应关系,globalTaskId重复 - **修改内容:** - 1、dpuTask表修改对应的globalTid计算规则为 高位pid 低位tid - 2、python侧 7 8 11 表pmuCalculator新增endTime - 3、c++侧pmuCalculator新增endtime字段 - 4、unifiedPmuProcessor增加读取endTime字段。 - 5、PmuTaskInfo表新增timestampNs字段 - 6、CommunicationTaskInfo表同样新增timestampNs字段 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!487 | 19 天前 | |
fix: 修正全 C DataTag 白名单并添加打屏日志 Co-authored-by: chenqm<chenzhipeng51@huawei.com> # message auto-generated for no-merge-commit merge: !506 merge fix/full-c-data-tag-fallback into master fix: 修正全 C DataTag 白名单并添加打屏日志 Created-by: chenqm Commit-by: chenqm Merged-by: ascend-robot Description: ## 1. 修改描述 - **修改原因:** 全 C 预检需要区分已知但无解析规则的文件与真正未知的 raw 数据,同时补齐已启用的 host 数据能力,并提供可定位的诊断信息。 - **修改内容:** - 忽略 stream_sq_info 等已知不会进入 FileDispatch 解析流程的文件;其他未映射且非空的 raw 文件报告 UNKNOWN_RAW_DATA,避免数据被静默丢弃。 - 补齐 RUNTIME_OP_INFO、CAPTURE_STREAM_INFO、MC2_COMM_INFO、STREAM_EXPAND、CCU_TASK、CCU_WAIT_SIGNAL、CCU_GROUP 等 host 数据 tag;未启用 C 入口的 STATIC_OP_MEM 继续回退。 - 全 C 预检回退时将 reason code、说明和详细参数记录到 collection 日志,并在控制台输出来源文件名、result 目录名和 reason code;同时输出全 C 流程的开始、完成和失败状态。 - 为全 C 预检新增独立的 check_dir_can_create_entry,检查目录创建条目所需的写权限和执行权限;公共 check_dir_writable 保持原有写权限语义,避免影响其他写文件流程。 - 补充完成标记写入的异常处理,并完善决策、权限和日志相关 UT。 - 增加 lpm_info 的 C 化解析、持久化处理及对应能力配置。 ## 2. 功能验证 - [x] 覆盖 raw 数据识别、tag 能力判断、目录权限检查及日志输出。 - [x] 提交 hooks 通过:Ruff、pylint、bandit、codespell、typos、Gitleaks 等;git diff --check 通过。 - [ ] 标准环境冒烟及真实数据 E2E:未执行。 基于 master 2756d5ec0,最终分支相对目标基线保留 1 个修复提交。 ## 3. 安全自检 - [x] 无新增或删除 CLI 参数。 - [x] 文件操作复用既有日志路径和目录校验机制。 - [x] 保留预检回退与 native 执行失败传播,并补充权限异常处理。 - [x] 日志记录必要诊断信息,不输出凭据。 本 PR 无 C++ 源码修改。 See merge request: Ascend/msprof!506 | 16 天前 | |
fix: 修正全 C DataTag 白名单并添加打屏日志 Co-authored-by: chenqm<chenzhipeng51@huawei.com> # message auto-generated for no-merge-commit merge: !506 merge fix/full-c-data-tag-fallback into master fix: 修正全 C DataTag 白名单并添加打屏日志 Created-by: chenqm Commit-by: chenqm Merged-by: ascend-robot Description: ## 1. 修改描述 - **修改原因:** 全 C 预检需要区分已知但无解析规则的文件与真正未知的 raw 数据,同时补齐已启用的 host 数据能力,并提供可定位的诊断信息。 - **修改内容:** - 忽略 stream_sq_info 等已知不会进入 FileDispatch 解析流程的文件;其他未映射且非空的 raw 文件报告 UNKNOWN_RAW_DATA,避免数据被静默丢弃。 - 补齐 RUNTIME_OP_INFO、CAPTURE_STREAM_INFO、MC2_COMM_INFO、STREAM_EXPAND、CCU_TASK、CCU_WAIT_SIGNAL、CCU_GROUP 等 host 数据 tag;未启用 C 入口的 STATIC_OP_MEM 继续回退。 - 全 C 预检回退时将 reason code、说明和详细参数记录到 collection 日志,并在控制台输出来源文件名、result 目录名和 reason code;同时输出全 C 流程的开始、完成和失败状态。 - 为全 C 预检新增独立的 check_dir_can_create_entry,检查目录创建条目所需的写权限和执行权限;公共 check_dir_writable 保持原有写权限语义,避免影响其他写文件流程。 - 补充完成标记写入的异常处理,并完善决策、权限和日志相关 UT。 - 增加 lpm_info 的 C 化解析、持久化处理及对应能力配置。 ## 2. 功能验证 - [x] 覆盖 raw 数据识别、tag 能力判断、目录权限检查及日志输出。 - [x] 提交 hooks 通过:Ruff、pylint、bandit、codespell、typos、Gitleaks 等;git diff --check 通过。 - [ ] 标准环境冒烟及真实数据 E2E:未执行。 基于 master 2756d5ec0,最终分支相对目标基线保留 1 个修复提交。 ## 3. 安全自检 - [x] 无新增或删除 CLI 参数。 - [x] 文件操作复用既有日志路径和目录校验机制。 - [x] 保留预检回退与 native 执行失败传播,并补充权限异常处理。 - [x] 日志记录必要诊断信息,不输出凭据。 本 PR 无 C++ 源码修改。 See merge request: Ascend/msprof!506 | 16 天前 | |
ccu c++ part Co-authored-by: xieanran<694099604@qq.com> # message auto-generated for no-merge-commit merge: !492 merge master into master ccu c++ part Created-by: SoraAzzz Commit-by: xieanran Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** CCU优化,新增c++加速模块 - **修改内容:** - [cpp_enable_scene.py](D:/codehub/msprof_toolkit/msprof/analysis/common_func/cpp_enable_scene.py) - DeviceParseScene.SCENE_CHIP_WHITELIST 暂时不增加 CHIP_V6_1_0。 - 让 v6.1 在满足 all-export、task-based、非 custom PMU 等原有条件时,可以进入 CCU C++ 解析。 - 现有 device 数据过滤还受 is_chip_v4() 控制,因此不会顺带开启 v6.1 的整套 device C++ parser。 Device C++ Parser [ccu_parser.h](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_parser.h) - 在 mission/channel 数据集中增加 hasCompletedFiles。 - completedFiles 表示本次成功解析、后续需要写 marker 的文件。 - hasCompletedFiles 表示输入中原本已经存在完成标记,用于检查 DB 与 marker 是否一致。 [ccu_parser.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_parser.cpp) - SourceKey.sourceId 从 uint64_t 改为规范化十进制字符串。 - 防止超长 source id 溢出后被合并到同一个 source。 - 前导零会被归一化,例如 0001 与 1 仍视为同一个 source。 - sliceOrder 改为十进制字符串。 - 按数字长度和字典序实现任意长度数字排序。 - 保持相同序号文件的稳定发现顺序。 - 文件扫描时记录是否存在 .complete。 - 同一 source 部分完成、部分未完成时仍然拒绝解析。 - 完成信息传给 persistence 做恢复一致性检查。 - ResolveMissionStreamIds 改为返回成功状态。 - runtime.db 或 HostTask 确实不存在时,继续使用默认 stream 65535。 - HostTask 表存在但查询失败时返回失败,不再伪装成无关联数据。 - 保持按 timestamp 排序、重复 task first-wins。 - mission 相对结束时间增加 uint64_t 加法溢出检查。 - 任意 slot 溢出时,删除当前 record 已展开的部分行并返回失败。 - 避免向后续阶段发布半条 mission 数据。 - mission/channel ProcessEntry 传播文件解析和 HostTask 查询失败。 [ccu_persistence.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_persistence.cpp) - 新增 mission/channel SQLite 整数范围校验。 - mission 校验四个时间字段。 - channel 校验 timestamp。 - 校验在任何表创建和数据写入之前完成,避免已写 mission 后才发现 channel 越界。 - 有待完成文件但解析结果为零行时,也会创建对应空表。 - 表创建成功后才写 .complete。 - 输入存在历史 .complete,但对应表不存在时返回失败。 - 覆盖“source A 已完成、source B 待处理”的混合场景。 - 防止只写 source B 后把不完整数据当成全量结果。 - 没有文件、没有记录时直接成功,不创建无意义的表。 - 保留直接构造 records 后调用 persistence 的兼容行为。 - 所有 mission/channel 一致性检查完成后,才开始实际落库。 - .complete 仍只在对应表写入成功后创建。 Host C++ Parser [ccu_add_info_parser.h](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/host/cann/ccu_add_info_parser.h) - 为 task、wait-signal、group 分别增加: - SourceParsed:本次发现并成功处理了源文件。 - SourceCompleted:源文件原本已经存在完成标记。 - 增加 HasInput(),统一判断是否有记录、待写 marker、零行源或历史完成源。 [ccu_add_info_parser.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/host/cann/ccu_add_info_parser.cpp) - 文件发现阶段返回每类数据是否存在历史 .complete。 - 即使 wait/group 的所有 channel slot 都被过滤、最终生成零行,也保留“该 source 已成功解析”的状态。 - task、wait、group 分别记录解析和完成状态,不依赖芯片型号。 - 任意一类解析失败后清空整个 CcuAddInfoData,避免 dumper 使用部分结果。 - HasInput() 将零行源和历史完成源也视为有效状态输入。 [ccu_add_info_db_dumper.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/persistence/host/ccu_add_info_db_dumper.cpp) - task/wait/group 的保存函数允许零行保存成功。 - 仍会创建对应空表,表示该类源已成功处理。 - group dataSize 增加 SQLite INT64 范围校验。 - 在创建或写入任何 host 表之前完成校验。 - 避免 task/wait 已写入后才发现 group 越界。 - 每类历史 .complete 都会检查对应表是否存在。 - 是否落表由“发现源文件或存在直接注入记录”决定,不再只看记录列表是否为空。 - task、wait、group 全部保存成功后才统一创建完成标记。 - marker 创建失败会传递失败状态。 [host_trace_worker.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/host_worker/host_trace_worker.cpp) - Run() 最终结果增加 ccuResult_。 - CCU add-info parser 或 dumper 失败后,HostTraceWorker 不再返回整体成功。 - 没有 CCU 文件属于正常空输入,parser/dumper 会返回成功,不影响其他 host 数据处理。 - 没有增加任何 host chip 分支。 Python 公共 CCU 辅助 [ccu_source_calculator.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/ccu_source_calculator.py) - 增加 mark_ccu_files_complete()。 - 调用原有 FileManager.add_complete_file。 - 调用后检查 marker 文件是否真实存在。 - marker 未成功落盘时返回失败。 - 增加 ccu_table_exists(),供 CCU parser 检查 marker 与数据库表的一致性。 - CcuOffsetCalculator.has_completed_files 检查本 source 是否存在历史 marker。 - CcuSourceCalculator.has_completed_files 聚合所有 device source 的完成状态。 - 没有修改公共 OffsetCalculator 父类。 Python Device Parser [ccu_mission_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/hardware/ccu_mission_parser.py) - 保存前检查历史 marker 对应的 OriginMission 是否存在。 - 有待完成文件时,即使 mission 结果为零行,也进入 model 创建空表。 - 在打开 model 前校验全部时间字段是否超过 SQLite INT64。 - model flush 成功后才创建 marker,并验证 marker 是否真实存在。 - 保存失败时保留 _pending_complete_files,不会误标完成。 - 增加 CCU 私有 HostTask 查询: - 不修改 HostTaskCollector 或公共 DB/model。 - 缺少 runtime.db 或 HostTask 表时返回空映射,使用 stream 65535。 - 表存在但字段损坏或 SQL 查询失败时抛出错误。 - 按 timestamp 排序并保持重复 task first-wins。 - 使用 Python 官方 sqlite3,没有引入第三方库。 [ccu_channel_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/hardware/ccu_channel_parser.py) - 保存前检查历史 marker 对应的 OriginChannel 是否存在。 - 零行但存在成功解析文件时创建空表。 - 打开 model 前校验 timestamp 的 SQLite INT64 范围。 - 数据提交成功后才写 marker,并验证 marker。 - 保存或 marker 失败时保留待完成文件,便于诊断和完整重导。 Python Host Parser [ccu_add_info_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/add_info/ccu_add_info_parser.py) - 建立 DataTag 到 task/wait/group 表名的映射。 - _processed_tags 记录成功处理过的源类型。 - 即使该类型过滤后为零行,也会创建对应空表。 - 保存前统一检查历史 marker 与三张表是否一致。 - group data_size 在任何 model 打开前校验 SQLite INT64 范围。 - task、wait、group 全部保存成功后才写 marker。 - marker 写入后进行真实文件检查。 - 任意保存或 marker 失败都会抛出错误,不清空待完成文件。 - Host 逻辑仍然完全不区分芯片。 ---- ## 2. 功能验证 - [x] **功能自验**   - [ ] **本地自验用例截图** - [x] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) 未通过用例为用例暂未适配导致 ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [x] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [x] **不允许私有的文件操作,需要使用公共模块的安全函数** - [x] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [x] **数组访问需要校验越界场景,对除法需要做除零校验** - [x] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [x] **需要充分进行接口输入和返回值异常情况的校验** - [x] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [x] **指针使用前需要判空** - [x] **数值计算校验溢出和反转** - [x] **不可存在内存泄漏(异常场景需要释放内存)** - [x] **类型转换不能出现数据截断** - [x] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [x] **拷贝内存时,目的缓冲区不小于源缓冲区** - [x] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!492 | 18 天前 | |
bugfix: 通信analyze按时间片并集计算wait/sync/transit Co-authored-by: Seanesmhxocism<wangzixuan54@huawei.com> # message auto-generated for no-merge-commit merge: !498 merge pyDev into master bugfix: 通信analyze按时间片并集计算wait/sync/transit Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** - 通信矩阵数据原本只参考一条流的算子内容,来区分同步(拷贝前的wait),传输(拷贝时间),等待(全部的wait)等时间段。但是在原本流程上,主从流划分存在问题:① host下发的算子ffts模式,全是主流,且不与streamId绑定。②aicpu展开方式下,只以某条流作为主流,但streamId本身也存在变动可能。③analyze模块中,找到isMaster后,就直接返回streamId,并不支持多stream 主流的场景。④由于只取了一条流做主流数据处理,导致原有逻辑并不能支持多流并行的数据处理。 - **修改内容:** - 1、将多流并行数据处理做并集处理,仿照overlap流程,一滴血规则,当前时间点若存在memcpy,则为拷贝,前面的为同步,所有的剩余wait算等待。做时间划分。 ---- ## 2. 功能验证 - [ ] **功能自验** 原:  现:  - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!498 | 16 天前 | |
[msprof-master]out分支同步到master分支 Co-authored-by: yu-liang-bin<y1416490440@163.com> | 8 个月前 | |
[msprof]适配新芯片上aicoreNum数量 Co-authored-by: panzhaohu<panzhaohu1@h-partners.com> # message auto-generated for no-merge-commit merge: !504 merge aicoreNum into master [msprof]适配新芯片上aicoreNum数量 Created-by: panzhaohu Commit-by: panzhaohu Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 新芯片上aic/aiv核数量是1:1,核数是70 - **修改内容:** 将ChipMaxCoreId中新芯片架构的aicoreId最大值修改为69(coreId从下标0开始计数) ---- ## 2. 功能验证 - [ ] **功能自验** ai_core_utilization.csv中aicoreNum是64,与info.json的ai_core_num值一致  info.json:  - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!504 | 17 天前 | |
hccl calculator 和 kfc calculator解析逻辑重构 Co-authored-by: Seanesmhxocism<wangzixuan54@huawei.com> # message auto-generated for no-merge-commit merge: !411 merge linux into master hccl calculator 和 kfc calculator解析逻辑重构 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- 业务整体是修改了hcclCalculator和kfcCalculator的主体流程,涉及业务内部的数据传递结构体。牵扯到上下游模块较多,相关重构必须统一完成。pr无法拆分。 ## 1. 修改描述 - **修改原因:** - msprof项目工程 主体流程全面C化,依赖kfc_calculator相关模块。同时识别到hccl相关业务逻辑已非常复杂,可读性差,维护性差。基于整体重构目标,优先对业务模块做结构删减,减少后续重构的业务理解难度,提高整体可维护性。 - **修改内容:** 1、对hccl_calculator和kfc_calculator涉及的三个主体文件(两份python,一份c++)做流程删减。将通信op大算子数据时间数据处理,通过connectionId和通信task小算子进行关联,并依托id标志位,计算静态图场景下的iterId,确保前后逻辑的相关编码逻辑和结果保持不变。 2、在建树方面,针对后续hccl相关代码演进,kfc流程依托多aicpu下发场景,提供kfc_connection_ids字段,收集node层级下的所有node的connectionId,定义为kfc_connection_ids。方便后续device侧的数据收集和处理。 3、针对kfc_calculator逻辑,简化原本的数据处理思路。将业务流程重新划分为hccl侧和mc2侧。抛弃deviceOpInfo数据处理,减少数据耦合。 对于hccl数据,通过mainStreamTask划分算子开始结束范围;通过kfcInfo描述aicpu展开的task内容;通过mc2Info 展开流信息锚定展开算子的流信息;通过host op数据,获取小算子和大算子的关联凭据。 对于mc2数据,仅通过mc2Info确认展开流信息;通过对应的aicpu算子的首尾时间,框选范围下的所有小算子。并生成deviceOp数据。 对于两类数据,均将时间范围的小算子划分为master 4、hcclAssembler和hccl_export_data,overlap模块导出流程基于已生成的op的开始结束时间,简化大算子生成逻辑。 5、对于通信矩阵相关逻辑,由于删除opName字段,增加opId找opName逻辑,确保逻辑前后一致。同时修改原本的master主流的查找规则,改为以is_master为准 6、对于统一db导出,变更opId计算规则,当前可直接通过connectionId和iterId进行锚定大小算子关系。 7、优化删减对应的hccl相关数据结构体及其冗余字段。 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!411 | 1 个月前 | |
ccu c++ part Co-authored-by: xieanran<694099604@qq.com> # message auto-generated for no-merge-commit merge: !492 merge master into master ccu c++ part Created-by: SoraAzzz Commit-by: xieanran Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** CCU优化,新增c++加速模块 - **修改内容:** - [cpp_enable_scene.py](D:/codehub/msprof_toolkit/msprof/analysis/common_func/cpp_enable_scene.py) - DeviceParseScene.SCENE_CHIP_WHITELIST 暂时不增加 CHIP_V6_1_0。 - 让 v6.1 在满足 all-export、task-based、非 custom PMU 等原有条件时,可以进入 CCU C++ 解析。 - 现有 device 数据过滤还受 is_chip_v4() 控制,因此不会顺带开启 v6.1 的整套 device C++ parser。 Device C++ Parser [ccu_parser.h](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_parser.h) - 在 mission/channel 数据集中增加 hasCompletedFiles。 - completedFiles 表示本次成功解析、后续需要写 marker 的文件。 - hasCompletedFiles 表示输入中原本已经存在完成标记,用于检查 DB 与 marker 是否一致。 [ccu_parser.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_parser.cpp) - SourceKey.sourceId 从 uint64_t 改为规范化十进制字符串。 - 防止超长 source id 溢出后被合并到同一个 source。 - 前导零会被归一化,例如 0001 与 1 仍视为同一个 source。 - sliceOrder 改为十进制字符串。 - 按数字长度和字典序实现任意长度数字排序。 - 保持相同序号文件的稳定发现顺序。 - 文件扫描时记录是否存在 .complete。 - 同一 source 部分完成、部分未完成时仍然拒绝解析。 - 完成信息传给 persistence 做恢复一致性检查。 - ResolveMissionStreamIds 改为返回成功状态。 - runtime.db 或 HostTask 确实不存在时,继续使用默认 stream 65535。 - HostTask 表存在但查询失败时返回失败,不再伪装成无关联数据。 - 保持按 timestamp 排序、重复 task first-wins。 - mission 相对结束时间增加 uint64_t 加法溢出检查。 - 任意 slot 溢出时,删除当前 record 已展开的部分行并返回失败。 - 避免向后续阶段发布半条 mission 数据。 - mission/channel ProcessEntry 传播文件解析和 HostTask 查询失败。 [ccu_persistence.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/ccu_persistence.cpp) - 新增 mission/channel SQLite 整数范围校验。 - mission 校验四个时间字段。 - channel 校验 timestamp。 - 校验在任何表创建和数据写入之前完成,避免已写 mission 后才发现 channel 越界。 - 有待完成文件但解析结果为零行时,也会创建对应空表。 - 表创建成功后才写 .complete。 - 输入存在历史 .complete,但对应表不存在时返回失败。 - 覆盖“source A 已完成、source B 待处理”的混合场景。 - 防止只写 source B 后把不完整数据当成全量结果。 - 没有文件、没有记录时直接成功,不创建无意义的表。 - 保留直接构造 records 后调用 persistence 的兼容行为。 - 所有 mission/channel 一致性检查完成后,才开始实际落库。 - .complete 仍只在对应表写入成功后创建。 Host C++ Parser [ccu_add_info_parser.h](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/host/cann/ccu_add_info_parser.h) - 为 task、wait-signal、group 分别增加: - SourceParsed:本次发现并成功处理了源文件。 - SourceCompleted:源文件原本已经存在完成标记。 - 增加 HasInput(),统一判断是否有记录、待写 marker、零行源或历史完成源。 [ccu_add_info_parser.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/parser/host/cann/ccu_add_info_parser.cpp) - 文件发现阶段返回每类数据是否存在历史 .complete。 - 即使 wait/group 的所有 channel slot 都被过滤、最终生成零行,也保留“该 source 已成功解析”的状态。 - task、wait、group 分别记录解析和完成状态,不依赖芯片型号。 - 任意一类解析失败后清空整个 CcuAddInfoData,避免 dumper 使用部分结果。 - HasInput() 将零行源和历史完成源也视为有效状态输入。 [ccu_add_info_db_dumper.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/persistence/host/ccu_add_info_db_dumper.cpp) - task/wait/group 的保存函数允许零行保存成功。 - 仍会创建对应空表,表示该类源已成功处理。 - group dataSize 增加 SQLite INT64 范围校验。 - 在创建或写入任何 host 表之前完成校验。 - 避免 task/wait 已写入后才发现 group 越界。 - 每类历史 .complete 都会检查对应表是否存在。 - 是否落表由“发现源文件或存在直接注入记录”决定,不再只看记录列表是否为空。 - task、wait、group 全部保存成功后才统一创建完成标记。 - marker 创建失败会传递失败状态。 [host_trace_worker.cpp](D:/codehub/msprof_toolkit/msprof/analysis/csrc/domain/services/host_worker/host_trace_worker.cpp) - Run() 最终结果增加 ccuResult_。 - CCU add-info parser 或 dumper 失败后,HostTraceWorker 不再返回整体成功。 - 没有 CCU 文件属于正常空输入,parser/dumper 会返回成功,不影响其他 host 数据处理。 - 没有增加任何 host chip 分支。 Python 公共 CCU 辅助 [ccu_source_calculator.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/ccu_source_calculator.py) - 增加 mark_ccu_files_complete()。 - 调用原有 FileManager.add_complete_file。 - 调用后检查 marker 文件是否真实存在。 - marker 未成功落盘时返回失败。 - 增加 ccu_table_exists(),供 CCU parser 检查 marker 与数据库表的一致性。 - CcuOffsetCalculator.has_completed_files 检查本 source 是否存在历史 marker。 - CcuSourceCalculator.has_completed_files 聚合所有 device source 的完成状态。 - 没有修改公共 OffsetCalculator 父类。 Python Device Parser [ccu_mission_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/hardware/ccu_mission_parser.py) - 保存前检查历史 marker 对应的 OriginMission 是否存在。 - 有待完成文件时,即使 mission 结果为零行,也进入 model 创建空表。 - 在打开 model 前校验全部时间字段是否超过 SQLite INT64。 - model flush 成功后才创建 marker,并验证 marker 是否真实存在。 - 保存失败时保留 _pending_complete_files,不会误标完成。 - 增加 CCU 私有 HostTask 查询: - 不修改 HostTaskCollector 或公共 DB/model。 - 缺少 runtime.db 或 HostTask 表时返回空映射,使用 stream 65535。 - 表存在但字段损坏或 SQL 查询失败时抛出错误。 - 按 timestamp 排序并保持重复 task first-wins。 - 使用 Python 官方 sqlite3,没有引入第三方库。 [ccu_channel_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/hardware/ccu_channel_parser.py) - 保存前检查历史 marker 对应的 OriginChannel 是否存在。 - 零行但存在成功解析文件时创建空表。 - 打开 model 前校验 timestamp 的 SQLite INT64 范围。 - 数据提交成功后才写 marker,并验证 marker。 - 保存或 marker 失败时保留待完成文件,便于诊断和完整重导。 Python Host Parser [ccu_add_info_parser.py](D:/codehub/msprof_toolkit/msprof/analysis/msparser/add_info/ccu_add_info_parser.py) - 建立 DataTag 到 task/wait/group 表名的映射。 - _processed_tags 记录成功处理过的源类型。 - 即使该类型过滤后为零行,也会创建对应空表。 - 保存前统一检查历史 marker 与三张表是否一致。 - group data_size 在任何 model 打开前校验 SQLite INT64 范围。 - task、wait、group 全部保存成功后才写 marker。 - marker 写入后进行真实文件检查。 - 任意保存或 marker 失败都会抛出错误,不清空待完成文件。 - Host 逻辑仍然完全不区分芯片。 ---- ## 2. 功能验证 - [x] **功能自验**   - [ ] **本地自验用例截图** - [x] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) 未通过用例为用例暂未适配导致 ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [x] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [x] **不允许私有的文件操作,需要使用公共模块的安全函数** - [x] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [x] **数组访问需要校验越界场景,对除法需要做除零校验** - [x] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [x] **需要充分进行接口输入和返回值异常情况的校验** - [x] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [x] **指针使用前需要判空** - [x] **数值计算校验溢出和反转** - [x] **不可存在内存泄漏(异常场景需要释放内存)** - [x] **类型转换不能出现数据截断** - [x] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [x] **拷贝内存时,目的缓冲区不小于源缓冲区** - [x] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!492 | 18 天前 | |
[msprof-master]out分支同步到master分支 Co-authored-by: yu-liang-bin<y1416490440@163.com> | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 天前 | ||
| 16 天前 | ||
| 13 天前 | ||
| 16 天前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 16 天前 | ||
| 8 个月前 | ||
| 17 天前 | ||
| 1 个月前 | ||
| 18 天前 | ||
| 8 个月前 |