MindStudio-Service-Profiler(msserviceprofiler)是MindStudio推理服务化性能数据采集工具,采集关键过程的开始和结束时间点,识别关键函数或迭代等信息,记录关键事件,支持多样的信息采集,对性能问题快速定界。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
docs: 资料风格统一 Co-authored-by: cai-weiwei1989<734267852@qq.com> # message auto-generated for no-merge-commit merge: !300 merge master into master docs: 资料风格统一 Created-by: cai-weiwei1989 Commit-by: cai-weiwei1989 Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** - **修改内容:** 同步PR:https://gitcode.com/Ascend/msserviceprofiler/pull/294 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ### 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ### 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ### 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!300 | 4 个月前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
适配新统一构建镜像 Co-authored-by: mengguangxin<mgx0018@163.com> # message auto-generated for no-merge-commit merge: !365 merge dev_0602 into master 适配新统一构建镜像 Created-by: mengguangxin Commit-by: mengguangxin Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** 适配新的统一构建镜像,做新老镜像兼容修改。 - **修改内容:** 因桩库编译和UT都需要:编译出来就是纯空实现/返回成功,对生产 .so 无实际影响——跑生产时走真库链接,桩只是编译时提供 target,不再依赖环境变量,UT直接依赖这个,所以改为默认就执行,不再判断环境变量。增加一些include路径。 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** NA - [ ] **本地自验用例截图**(请确保不体现个人信息) NA - [ ] **冒烟是否通过** 通过 ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** 是 - [ ] **是否具备UT测试用例看护** NA ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!365 | 2 个月前 | |
【msserviceprofiler_master】使用相对库名导致不可信搜索路径 问题修复。 Co-authored-by: hewenbo<hewenbo16@h-partners.com> # message auto-generated for no-merge-commit merge: !399 merge master into master 【msserviceprofiler_master】使用相对库名导致不可信搜索路径 问题修复。 Created-by: hewenbo Commit-by: hewenbo Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:【msserviceprofiler_master】使用相对库名导致不可信搜索路径 问题修复。 - **修改内容:【msserviceprofiler_master】使用相对库名导致不可信搜索路径 问题修复。 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!399 | 1 个月前 | |
【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !451 merge tracing into master 【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** 前两笔 PR 已分别提供 OpenTelemetry Hook Tracing 基础能力,以及 vLLM/vLLM-Ascend 业务埋点和 Jaeger 链路展示能力。 本 PR 作为 Tracing 系列第三部分,补充 Hook Span 到 Perfetto/Chrome Trace JSON 的可选导出能力,使开发者在启用 vLLM 原生 Tracing 后,可以选择仅将链路导出到 Jaeger,或者同时生成可通过 Perfetto UI 分析的本地 JSON 文件。 本 PR 同时完善 vLLM Hook Tracing 使用资料,明确 Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Profiling 共存和异常定位流程。 前置 PR: - [Tracing 1/3:新增 OpenTelemetry Hook Tracing 基础能力](https://gitcode.com/Ascend/msserviceprofiler/pull/446/) - [Tracing 2/3:接入vLLM Hook Tracing埋点并支持Jaeger链路展示](https://gitcode.com/Ascend/msserviceprofiler/pull/447/) - **修改内容:** 1. 扩展 python -m ms_service_profiler.trace 命令: - 新增可选参数 --perfetto-output <path.json>。 - 未指定 --perfetto-output 时,继续使用原有 OTLPForwarderService,不改变 MindIE Motor 原有 Trace 转发行为。 - 指定 --perfetto-output 时,启动独立的 PerfettoForwarderService。 - vLLM 原生 Tracing 仍是前置条件,Perfetto Forwarder 本身不创建 Span。 2. 新增 PerfettoTraceExporter: - 将标准化 Hook Span 数据转换为 Perfetto 兼容的 Chrome Trace JSON。 - 使用 Complete Event(ph=X)记录 Span 名称、开始时间、持续时间、PID、TID和属性。 - 保留 trace_id、span_id、parent_span_id、Span Kind、Span Status、Service Name和 Resource Attributes。 - 使用 Flow Event(ph=s/f)展示 Request Span与调度、模型执行 Span 之间的 Link 关系。 - 支持先收到目标 Span、后收到源 Span时的延迟 Link 关联。 - 增量写入过程中持续保持 JSON 文件格式有效。 - 仅接受带有 Hook Span Magic Header 的标准化数据,不转换原有 Profiling 数据或旧版 Binary OTLP 数据。 - Span位置和待关联 Link 设置最大缓存数量,避免无界内存增长。 3. 新增独立的 PerfettoForwarderService: - 使用独立 Linux Abstract Unix Socket MSP_PERFETTO_SOCKET。 - 与原有 MindIE OTLP Forwarder 解耦,不修改原有跨进程协议。 - 使用有界接收队列,避免无界数据积压。 - 支持 SIGINT、SIGTERM 和 KeyboardInterrupt 安全退出。 - 服务退出前停止 Socket、排空队列并关闭 JSON 文件。 4. 增加 Perfetto 输出路径安全校验: - 输出路径必须以 .json 结尾。 - 校验路径字符合法性。 - 拒绝符号链接、目录和其他非普通文件。 - 已存在文件必须属于当前用户。 - 使用 O_NOFOLLOW 防止打开过程中跟随符号链接。 - 父目录权限设置为 0750,输出文件权限设置为 0640。 5. 保持 Jaeger 与 Perfetto 两个出口相互隔离: - Jaeger 继续由 vLLM 全局 OpenTelemetry Provider及原生 OTLP Exporter负责。 - Perfetto 通过附加 Span Processor接收 ms_service_profiler.hook.* Scope的 Hook Span。 - Perfetto Forwarder未启动或写入失败时,Jaeger和推理主链路不受影响。 - 本实现不支持 Perfetto-only,vLLM必须通过 --otlp-traces-endpoint 开启原生 Tracing。 6. 新增和更新使用资料: - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml,注册 vLLM Hook Tracing使用指南。 - 资料覆盖功能边界、数据流、埋点配置、Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Jaeger分析方法、验收层级、Profiling共存和常见异常。 7. 补充 UT,覆盖: - Hook Span到 Chrome Trace Complete Event的转换。 - Request Link到 Perfetto Flow Event的转换。 - Link源 Span延迟到达场景。 - 非Hook数据包拒绝场景。 - 非法输出路径拒绝场景。 - 独立 Perfetto Socket使用。 - Forwarder数据接收、导出、队列排空和资源关闭。 - CLI未指定参数时保持原有 OTLP Forwarder。 - CLI指定 --perfetto-output 时启动 Perfetto Forwarder。 - [ ] **涉及代码双合**(贴上另一个PR链接):不涉及,本次仅修改 msserviceprofiler 仓库。 --- ## 2. 功能验证 - [x] **功能自验** - 本 PR新增/修改功能专项 UT:9 passed。 - 完整 Tracing相关回归:58 passed。 - 本 PR涉及文件 pre-commit全部通过。 - scripts/check_mkdocs.sh资料导航检查通过。 - PR变更量:707 insertions + 30 deletions = 737,低于1000行限制。 - 已在真实 vLLM-Ascend/NPU环境启动 vLLM原生 Tracing并发送真实推理请求。 - Jaeger能够查询 vLLM原生 Span和 msserviceprofiler Hook Span。 - Perfetto JSON能够生成有效 Complete Event。 - Perfetto JSON已匹配以下 Hook Span: - vllm.scheduler.schedule - vllm.model.execute - vllm_ascend.model_runner.execute - vllm.output.process - Jaeger与Perfetto双写过程中未发现影响 vLLM启动或推理请求的异常。 -  -  - [ ] **本地自验用例截图**(请确保不体现个人信息) - 请补充 Jaeger Trace查询结果截图。 - 请补充 Perfetto/Chrome Trace JSON校验结果或 Perfetto UI截图。 - 请补充真实推理请求成功截图。 - [x] **冒烟是否通过** - 已在真实 vLLM-Ascend/NPU环境启动 vLLM服务。 - 已发送真实推理请求并确认请求成功。 - 已验证 Jaeger-only场景。 - 已验证 Jaeger与Perfetto双写场景。 - 已验证 Perfetto JSON非空且包含预期 Hook Span。 - 未发现 Tracing功能影响原有 Profiling或推理主链路。 --- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - 当前 PR共737行变更,未超过1000行,但超过200行,合入前需完成三人以上会议检视并补充检视记录。 - [x] **是否具备UT测试用例看护** - 新增9条专项 UT。 - 覆盖正常转换、Link关联、输入校验、旧数据拒绝、资源关闭和CLI兼容场景。 - 完整 Tracing相关回归执行结果为 58 passed。 --- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - 校验输出路径类型、后缀、合法字符、文件类型、文件属主和符号链接。 - Perfetto Exporter仅接受带有指定 Magic Header的 Hook Span数据包。 - JSON解析或字段转换失败时记录告警并丢弃异常数据,不影响服务主流程。 - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - 已处理空数据包、空属性、空Resource Attributes、空Links、空Socket数据和重复关闭场景。 - [x] **是否进行返回值校验** - 校验路径合法性、Exporter转换结果、Socket读取数据及服务初始化结果。 - Exporter失败时返回 False,Forwarder继续运行并记录告警。 - [x] **是否正确考虑文件权限配置** - 父目录使用 0750 权限创建。 - 输出文件使用 0640 权限创建。 - 使用 O_NOFOLLOW 防止跟随符号链接。 - 拒绝非普通文件、非当前用户所有文件及符号链接。 - [x] **是否充分考虑接口的异常场景** - 已覆盖非法路径、非法数据包、JSON解析失败、Socket异常、Exporter异常、服务信号退出、队列排空和重复关闭等场景。 - Perfetto异常采用旁路降级,不影响Jaeger和推理主链路。 - [x] **是否正确记录错误日志** - 路径、数据转换和导出异常记录 warning/error。 - 服务启动、退出及信号处理记录 info。 - 日志不记录完整请求内容、Trace Headers或敏感模型输入。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - 本 PR不新增正则表达式。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** - 本 PR不涉及除法运算。 - Span持续时间使用非负值保护。 - Span位置和待关联 Link缓存设置最大数量。 - Socket接收队列设置明确容量上限。 --- ## 5. 变更知会 - **资料修改:** - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 docs/zh/msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 docs/zh/vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml资料导航。 - 已通过资料导航和本地链接检查。 - **变更通知(消息知会 + 邮件知会):** - 合入前知会 msserviceprofiler、vLLM-Ascend及推理服务可观测性相关开发和维护人员。 - 新增用户可感知参数 --perfetto-output,需在版本说明中知会。 - 未指定该参数时保持原有 Trace Forwarder行为,不影响现有用户。 --- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [x] **是否存在冒烟可以拦截却未拦截的情况:否** - CLI兼容、Perfetto导出、真实 vLLM请求、Jaeger展示和双写场景均已有UT或真实环境验证。 - [x] **是否需要添加冒烟:是** - 建议在具备 vLLM-Ascend、NPU和Jaeger环境的流水线中增加真实链路冒烟。 - 冒烟至少验证: - 未指定 --perfetto-output 时原有 OTLP Forwarder正常。 - 指定 --perfetto-output 时能够生成合法 JSON。 - 真实推理请求成功。 - Jaeger可查询 Hook Span。 - Perfetto JSON包含预期 Hook Span。 - Perfetto异常不影响Jaeger和推理请求。 See merge request: Ascend/msserviceprofiler!451 | 4 天前 | |
[Metrics] 支持用户单目录多 YAML 及外部 Handler Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !439 merge metric_yaml into master [Metrics] 支持用户单目录多 YAML 及外部 Handler Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: ## 1. 修改描述 - **修改原因:** 当前用户自定义指标仅支持通过 MS_SERVICE_METRIC_CONFIG_PATH 指定单个 YAML;自定义 Handler 还需要修改、安装 Python 包或调整 PYTHONPATH,不利于用户按模块组织和维护自定义指标。 同时,vLLM Metrics 插件初始化异常会向上传播,依赖缺失等 Metrics 故障可能导致 vllm serve 启动失败,不符合 Metrics 可选观测能力的 fail-open 原则。 - **修改内容:** 1. 扩展 MS_SERVICE_METRIC_CONFIG_PATH,兼容原有单 YAML,并支持指定单目录下多个 .yaml/.yml 文件。 2. YAML 按文件名稳定排序加载,忽略子目录和非 YAML 文件,复用原有配置合并及语义去重逻辑。 3. 支持用户在配置根目录提供多个外部 Handler,保持原有 module.path:function_name 写法,无需修改 PYTHONPATH 或安装额外 Handler 包。 4. 新增受控外部 Handler 加载器,仅加载 YAML 明确引用的文件,不修改全局 sys.path。 5. 校验 Handler 模块路径、目标文件和真实路径,防止非法路径、目录穿越及符号链接逃逸。 6. 外部 Handler 模块使用真实文件路径哈希进行进程内缓存;Handler 文件变更后需重启 vLLM 服务。 7. 配置或 Handler 构造失败时保留原配置及 Hook,避免提交部分状态。 8. vLLM Metrics 插件入口增加 fail-open 保护:Metrics 初始化失败时记录错误、清理半初始化状态并禁用 Metrics,不再阻断 vLLM 启动。 9. 更新 README 和整体重构设计文档,补充使用方法、文件放置要求、安全边界及责任边界。 10. 外部 YAML 和外部 Handler 的正确性、依赖及维护由用户自行负责。 - [ ] **涉及代码双合**(不涉及,本次修改仅位于 msserviceprofiler) ---- ## 2. 功能验证 - [x] **功能自验** - 相关 UT:112 passed, 1 skipped。 - 跳过项为 Windows 环境无权限创建符号链接,不影响 Linux CI 对应能力。 - 真实 vLLM-Ascend 服务验证通过。 - 同一用户配置目录成功加载 2 个 YAML。 - 成功加载并执行两个不同位置的外部 Handler: - execute_handler.py - handlers/prepare_handler.py - 实际采集结果: - vllm_profiling_user:external_execute_model:duration_count = 100 - vllm_profiling_user:external_prepare_inputs_total = 80 - vLLM 请求正常,指标可通过 /metrics 获取。 - Ruff、Ruff format、Pylint、Bandit、codespell、typos 等检查通过。 - [x] **本地自验用例截图**  - [x] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于1000行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** 已覆盖: - 单 YAML 兼容。 - 单目录多 YAML 排序和加载。 - 多 YAML 语义去重。 - 同目录及子目录外部 Handler。 - 多个外部 Handler。 - 非法模块名和目录穿越。 - 符号链接逃逸。 - Handler 文件、函数缺失及加载异常。 - 加载失败后的重试。 - 配置及 Handler 构造失败回滚。 - vLLM Metrics 插件初始化 fail-open。 - 半初始化 Manager 清理。 ---- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** 已校验配置路径、模块名、目标文件、真实路径、函数存在性和可调用性。 - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** 已处理空配置路径、空 Handler 根目录、无效模块加载描述及部分初始化对象。 - [x] **是否进行返回值校验** 已校验模块加载 spec、loader、目标函数和指标初始化结果。 - [x] **是否正确考虑文件权限配置** 不修改用户文件权限;外部 YAML 和 Handler 目录权限由用户负责。 - [x] **是否充分考虑接口的异常场景** 已覆盖配置解析、目录扫描、文件缺失、模块执行、Handler 构造、共享内存及插件初始化异常。 - [x] **是否正确记录错误日志** 配置、Handler 和插件初始化失败均记录明确错误及异常堆栈。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** 不涉及新增正则表达式。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** 不涉及相关数值运算。 ---- ## 5. 变更知会 - **资料修改:** 已更新: - ms_service_metric/README.md - docs/design/ms_service_metric_Refactor_Design.md - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [x] **是否存在冒烟可以拦截却未拦截的情况** 否。 - [ ] **是否需要添加冒烟:** See merge request: Ascend/msserviceprofiler!439 | 18 天前 | |
【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !451 merge tracing into master 【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** 前两笔 PR 已分别提供 OpenTelemetry Hook Tracing 基础能力,以及 vLLM/vLLM-Ascend 业务埋点和 Jaeger 链路展示能力。 本 PR 作为 Tracing 系列第三部分,补充 Hook Span 到 Perfetto/Chrome Trace JSON 的可选导出能力,使开发者在启用 vLLM 原生 Tracing 后,可以选择仅将链路导出到 Jaeger,或者同时生成可通过 Perfetto UI 分析的本地 JSON 文件。 本 PR 同时完善 vLLM Hook Tracing 使用资料,明确 Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Profiling 共存和异常定位流程。 前置 PR: - [Tracing 1/3:新增 OpenTelemetry Hook Tracing 基础能力](https://gitcode.com/Ascend/msserviceprofiler/pull/446/) - [Tracing 2/3:接入vLLM Hook Tracing埋点并支持Jaeger链路展示](https://gitcode.com/Ascend/msserviceprofiler/pull/447/) - **修改内容:** 1. 扩展 python -m ms_service_profiler.trace 命令: - 新增可选参数 --perfetto-output <path.json>。 - 未指定 --perfetto-output 时,继续使用原有 OTLPForwarderService,不改变 MindIE Motor 原有 Trace 转发行为。 - 指定 --perfetto-output 时,启动独立的 PerfettoForwarderService。 - vLLM 原生 Tracing 仍是前置条件,Perfetto Forwarder 本身不创建 Span。 2. 新增 PerfettoTraceExporter: - 将标准化 Hook Span 数据转换为 Perfetto 兼容的 Chrome Trace JSON。 - 使用 Complete Event(ph=X)记录 Span 名称、开始时间、持续时间、PID、TID和属性。 - 保留 trace_id、span_id、parent_span_id、Span Kind、Span Status、Service Name和 Resource Attributes。 - 使用 Flow Event(ph=s/f)展示 Request Span与调度、模型执行 Span 之间的 Link 关系。 - 支持先收到目标 Span、后收到源 Span时的延迟 Link 关联。 - 增量写入过程中持续保持 JSON 文件格式有效。 - 仅接受带有 Hook Span Magic Header 的标准化数据,不转换原有 Profiling 数据或旧版 Binary OTLP 数据。 - Span位置和待关联 Link 设置最大缓存数量,避免无界内存增长。 3. 新增独立的 PerfettoForwarderService: - 使用独立 Linux Abstract Unix Socket MSP_PERFETTO_SOCKET。 - 与原有 MindIE OTLP Forwarder 解耦,不修改原有跨进程协议。 - 使用有界接收队列,避免无界数据积压。 - 支持 SIGINT、SIGTERM 和 KeyboardInterrupt 安全退出。 - 服务退出前停止 Socket、排空队列并关闭 JSON 文件。 4. 增加 Perfetto 输出路径安全校验: - 输出路径必须以 .json 结尾。 - 校验路径字符合法性。 - 拒绝符号链接、目录和其他非普通文件。 - 已存在文件必须属于当前用户。 - 使用 O_NOFOLLOW 防止打开过程中跟随符号链接。 - 父目录权限设置为 0750,输出文件权限设置为 0640。 5. 保持 Jaeger 与 Perfetto 两个出口相互隔离: - Jaeger 继续由 vLLM 全局 OpenTelemetry Provider及原生 OTLP Exporter负责。 - Perfetto 通过附加 Span Processor接收 ms_service_profiler.hook.* Scope的 Hook Span。 - Perfetto Forwarder未启动或写入失败时,Jaeger和推理主链路不受影响。 - 本实现不支持 Perfetto-only,vLLM必须通过 --otlp-traces-endpoint 开启原生 Tracing。 6. 新增和更新使用资料: - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml,注册 vLLM Hook Tracing使用指南。 - 资料覆盖功能边界、数据流、埋点配置、Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Jaeger分析方法、验收层级、Profiling共存和常见异常。 7. 补充 UT,覆盖: - Hook Span到 Chrome Trace Complete Event的转换。 - Request Link到 Perfetto Flow Event的转换。 - Link源 Span延迟到达场景。 - 非Hook数据包拒绝场景。 - 非法输出路径拒绝场景。 - 独立 Perfetto Socket使用。 - Forwarder数据接收、导出、队列排空和资源关闭。 - CLI未指定参数时保持原有 OTLP Forwarder。 - CLI指定 --perfetto-output 时启动 Perfetto Forwarder。 - [ ] **涉及代码双合**(贴上另一个PR链接):不涉及,本次仅修改 msserviceprofiler 仓库。 --- ## 2. 功能验证 - [x] **功能自验** - 本 PR新增/修改功能专项 UT:9 passed。 - 完整 Tracing相关回归:58 passed。 - 本 PR涉及文件 pre-commit全部通过。 - scripts/check_mkdocs.sh资料导航检查通过。 - PR变更量:707 insertions + 30 deletions = 737,低于1000行限制。 - 已在真实 vLLM-Ascend/NPU环境启动 vLLM原生 Tracing并发送真实推理请求。 - Jaeger能够查询 vLLM原生 Span和 msserviceprofiler Hook Span。 - Perfetto JSON能够生成有效 Complete Event。 - Perfetto JSON已匹配以下 Hook Span: - vllm.scheduler.schedule - vllm.model.execute - vllm_ascend.model_runner.execute - vllm.output.process - Jaeger与Perfetto双写过程中未发现影响 vLLM启动或推理请求的异常。 -  -  - [ ] **本地自验用例截图**(请确保不体现个人信息) - 请补充 Jaeger Trace查询结果截图。 - 请补充 Perfetto/Chrome Trace JSON校验结果或 Perfetto UI截图。 - 请补充真实推理请求成功截图。 - [x] **冒烟是否通过** - 已在真实 vLLM-Ascend/NPU环境启动 vLLM服务。 - 已发送真实推理请求并确认请求成功。 - 已验证 Jaeger-only场景。 - 已验证 Jaeger与Perfetto双写场景。 - 已验证 Perfetto JSON非空且包含预期 Hook Span。 - 未发现 Tracing功能影响原有 Profiling或推理主链路。 --- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - 当前 PR共737行变更,未超过1000行,但超过200行,合入前需完成三人以上会议检视并补充检视记录。 - [x] **是否具备UT测试用例看护** - 新增9条专项 UT。 - 覆盖正常转换、Link关联、输入校验、旧数据拒绝、资源关闭和CLI兼容场景。 - 完整 Tracing相关回归执行结果为 58 passed。 --- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - 校验输出路径类型、后缀、合法字符、文件类型、文件属主和符号链接。 - Perfetto Exporter仅接受带有指定 Magic Header的 Hook Span数据包。 - JSON解析或字段转换失败时记录告警并丢弃异常数据,不影响服务主流程。 - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - 已处理空数据包、空属性、空Resource Attributes、空Links、空Socket数据和重复关闭场景。 - [x] **是否进行返回值校验** - 校验路径合法性、Exporter转换结果、Socket读取数据及服务初始化结果。 - Exporter失败时返回 False,Forwarder继续运行并记录告警。 - [x] **是否正确考虑文件权限配置** - 父目录使用 0750 权限创建。 - 输出文件使用 0640 权限创建。 - 使用 O_NOFOLLOW 防止跟随符号链接。 - 拒绝非普通文件、非当前用户所有文件及符号链接。 - [x] **是否充分考虑接口的异常场景** - 已覆盖非法路径、非法数据包、JSON解析失败、Socket异常、Exporter异常、服务信号退出、队列排空和重复关闭等场景。 - Perfetto异常采用旁路降级,不影响Jaeger和推理主链路。 - [x] **是否正确记录错误日志** - 路径、数据转换和导出异常记录 warning/error。 - 服务启动、退出及信号处理记录 info。 - 日志不记录完整请求内容、Trace Headers或敏感模型输入。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - 本 PR不新增正则表达式。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** - 本 PR不涉及除法运算。 - Span持续时间使用非负值保护。 - Span位置和待关联 Link缓存设置最大数量。 - Socket接收队列设置明确容量上限。 --- ## 5. 变更知会 - **资料修改:** - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 docs/zh/msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 docs/zh/vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml资料导航。 - 已通过资料导航和本地链接检查。 - **变更通知(消息知会 + 邮件知会):** - 合入前知会 msserviceprofiler、vLLM-Ascend及推理服务可观测性相关开发和维护人员。 - 新增用户可感知参数 --perfetto-output,需在版本说明中知会。 - 未指定该参数时保持原有 Trace Forwarder行为,不影响现有用户。 --- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [x] **是否存在冒烟可以拦截却未拦截的情况:否** - CLI兼容、Perfetto导出、真实 vLLM请求、Jaeger展示和双写场景均已有UT或真实环境验证。 - [x] **是否需要添加冒烟:是** - 建议在具备 vLLM-Ascend、NPU和Jaeger环境的流水线中增加真实链路冒烟。 - 冒烟至少验证: - 未指定 --perfetto-output 时原有 OTLP Forwarder正常。 - 指定 --perfetto-output 时能够生成合法 JSON。 - 真实推理请求成功。 - Jaeger可查询 Hook Span。 - Perfetto JSON包含预期 Hook Span。 - Perfetto异常不影响Jaeger和推理请求。 See merge request: Ascend/msserviceprofiler!451 | 4 天前 | |
修复资料issue&新增重复粒子skip功能 Co-authored-by: tt0cool<xujintao8@h-partners.com> # message auto-generated for no-merge-commit merge: !359 merge master into master 修复资料issue&新增重复粒子skip功能 Created-by: tt0cool Commit-by: tt0cool Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:资料issue&出现重复粒子重复测试浪费时间 - **修改内容:修改资料以及新增重复粒子skip功能 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!359 | 3 个月前 | |
【安全】【advisor】删除npu-smi命令执行失败直接抛出的异常日志信息,防止泄露敏感信息 Co-authored-by: ChenHuiwen<chenhuiwen7@huawei.com> # message auto-generated for no-merge-commit merge: !208 merge bug-fix into master 【安全】【advisor】删除npu-smi命令执行失败直接抛出的异常日志信息,防止泄露敏感信息 Created-by: ChenHuiwen Commit-by: ChenHuiwen Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 【安全】【advisor】删除npu-smi命令执行失败直接抛出的异常日志信息,防止泄露敏感信息 - **修改内容:** 【安全】【advisor】删除npu-smi命令执行失败直接抛出的异常日志信息,防止泄露敏感信息 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [x] **功能自验** - [x] **本地自验用例截图**(请确保不体现个人信息) - [x] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** ---- ### 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - [x] **是否进行返回值校验** - [x] **是否正确考虑文件权限配置** - [x] **是否充分考虑接口的异常场景** - [x] **是否正确记录错误日志** - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [x] **若涉及运算,是否存在整数溢出、除零等风险** ---- ### 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ### 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [x] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!208 | 5 个月前 | |
feat(pre-commit): 集成 Gitleaks 本地离线密钥扫描功能 Co-authored-by: yuliangbin<y1416490440@163.com> # message auto-generated for no-merge-commit merge: !409 merge fix_commit into master feat(pre-commit): 集成 Gitleaks 本地离线密钥扫描功能 Created-by: yu_liangbin Commit-by: yuliangbin Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 1.密钥泄露是常见的安全风险,开发者可能在代码中硬编码 AK/SK、Token 等敏感信息 2.通过 pre-commit hook 在提交前拦截,从源头防止凭证进入 Git 历史 3.使用本地离线二进制扫描,无需网络连接,不依赖外部服务 - **修改内容:** 1..pre-commit-config.yaml:新增 gitleaks-offline-scan local hook,使用本地 gitleaks 二进制执行 protect 命令,在 pre-commit 阶段对暂存文件进行密钥扫描 2.pre-commit/.gitleaks.toml:新增 Gitleaks 配置文件,继承官方内置全套检测规则(useDefault = true),并提供自定义规则、全局白名单、行内屏蔽等扩展配置示例 ---- ## 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/msserviceprofiler!409 | 1 个月前 | |
【msserviceprofiler_master】服务化安装导致包权限变动问题修复 Co-authored-by: hewenbo<hewenbo16@h-partners.com> # message auto-generated for no-merge-commit merge: !396 merge master into master 【msserviceprofiler_master】服务化安装导致包权限变动问题修复 Created-by: hewenbo Commit-by: hewenbo Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:【msserviceprofiler_master】服务化安装导致包权限变动问题修复 - **修改内容:【msserviceprofiler_master】服务化安装导致包权限变动问题修复 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!396 | 1 个月前 | |
【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !451 merge tracing into master 【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** 前两笔 PR 已分别提供 OpenTelemetry Hook Tracing 基础能力,以及 vLLM/vLLM-Ascend 业务埋点和 Jaeger 链路展示能力。 本 PR 作为 Tracing 系列第三部分,补充 Hook Span 到 Perfetto/Chrome Trace JSON 的可选导出能力,使开发者在启用 vLLM 原生 Tracing 后,可以选择仅将链路导出到 Jaeger,或者同时生成可通过 Perfetto UI 分析的本地 JSON 文件。 本 PR 同时完善 vLLM Hook Tracing 使用资料,明确 Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Profiling 共存和异常定位流程。 前置 PR: - [Tracing 1/3:新增 OpenTelemetry Hook Tracing 基础能力](https://gitcode.com/Ascend/msserviceprofiler/pull/446/) - [Tracing 2/3:接入vLLM Hook Tracing埋点并支持Jaeger链路展示](https://gitcode.com/Ascend/msserviceprofiler/pull/447/) - **修改内容:** 1. 扩展 python -m ms_service_profiler.trace 命令: - 新增可选参数 --perfetto-output <path.json>。 - 未指定 --perfetto-output 时,继续使用原有 OTLPForwarderService,不改变 MindIE Motor 原有 Trace 转发行为。 - 指定 --perfetto-output 时,启动独立的 PerfettoForwarderService。 - vLLM 原生 Tracing 仍是前置条件,Perfetto Forwarder 本身不创建 Span。 2. 新增 PerfettoTraceExporter: - 将标准化 Hook Span 数据转换为 Perfetto 兼容的 Chrome Trace JSON。 - 使用 Complete Event(ph=X)记录 Span 名称、开始时间、持续时间、PID、TID和属性。 - 保留 trace_id、span_id、parent_span_id、Span Kind、Span Status、Service Name和 Resource Attributes。 - 使用 Flow Event(ph=s/f)展示 Request Span与调度、模型执行 Span 之间的 Link 关系。 - 支持先收到目标 Span、后收到源 Span时的延迟 Link 关联。 - 增量写入过程中持续保持 JSON 文件格式有效。 - 仅接受带有 Hook Span Magic Header 的标准化数据,不转换原有 Profiling 数据或旧版 Binary OTLP 数据。 - Span位置和待关联 Link 设置最大缓存数量,避免无界内存增长。 3. 新增独立的 PerfettoForwarderService: - 使用独立 Linux Abstract Unix Socket MSP_PERFETTO_SOCKET。 - 与原有 MindIE OTLP Forwarder 解耦,不修改原有跨进程协议。 - 使用有界接收队列,避免无界数据积压。 - 支持 SIGINT、SIGTERM 和 KeyboardInterrupt 安全退出。 - 服务退出前停止 Socket、排空队列并关闭 JSON 文件。 4. 增加 Perfetto 输出路径安全校验: - 输出路径必须以 .json 结尾。 - 校验路径字符合法性。 - 拒绝符号链接、目录和其他非普通文件。 - 已存在文件必须属于当前用户。 - 使用 O_NOFOLLOW 防止打开过程中跟随符号链接。 - 父目录权限设置为 0750,输出文件权限设置为 0640。 5. 保持 Jaeger 与 Perfetto 两个出口相互隔离: - Jaeger 继续由 vLLM 全局 OpenTelemetry Provider及原生 OTLP Exporter负责。 - Perfetto 通过附加 Span Processor接收 ms_service_profiler.hook.* Scope的 Hook Span。 - Perfetto Forwarder未启动或写入失败时,Jaeger和推理主链路不受影响。 - 本实现不支持 Perfetto-only,vLLM必须通过 --otlp-traces-endpoint 开启原生 Tracing。 6. 新增和更新使用资料: - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml,注册 vLLM Hook Tracing使用指南。 - 资料覆盖功能边界、数据流、埋点配置、Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Jaeger分析方法、验收层级、Profiling共存和常见异常。 7. 补充 UT,覆盖: - Hook Span到 Chrome Trace Complete Event的转换。 - Request Link到 Perfetto Flow Event的转换。 - Link源 Span延迟到达场景。 - 非Hook数据包拒绝场景。 - 非法输出路径拒绝场景。 - 独立 Perfetto Socket使用。 - Forwarder数据接收、导出、队列排空和资源关闭。 - CLI未指定参数时保持原有 OTLP Forwarder。 - CLI指定 --perfetto-output 时启动 Perfetto Forwarder。 - [ ] **涉及代码双合**(贴上另一个PR链接):不涉及,本次仅修改 msserviceprofiler 仓库。 --- ## 2. 功能验证 - [x] **功能自验** - 本 PR新增/修改功能专项 UT:9 passed。 - 完整 Tracing相关回归:58 passed。 - 本 PR涉及文件 pre-commit全部通过。 - scripts/check_mkdocs.sh资料导航检查通过。 - PR变更量:707 insertions + 30 deletions = 737,低于1000行限制。 - 已在真实 vLLM-Ascend/NPU环境启动 vLLM原生 Tracing并发送真实推理请求。 - Jaeger能够查询 vLLM原生 Span和 msserviceprofiler Hook Span。 - Perfetto JSON能够生成有效 Complete Event。 - Perfetto JSON已匹配以下 Hook Span: - vllm.scheduler.schedule - vllm.model.execute - vllm_ascend.model_runner.execute - vllm.output.process - Jaeger与Perfetto双写过程中未发现影响 vLLM启动或推理请求的异常。 -  -  - [ ] **本地自验用例截图**(请确保不体现个人信息) - 请补充 Jaeger Trace查询结果截图。 - 请补充 Perfetto/Chrome Trace JSON校验结果或 Perfetto UI截图。 - 请补充真实推理请求成功截图。 - [x] **冒烟是否通过** - 已在真实 vLLM-Ascend/NPU环境启动 vLLM服务。 - 已发送真实推理请求并确认请求成功。 - 已验证 Jaeger-only场景。 - 已验证 Jaeger与Perfetto双写场景。 - 已验证 Perfetto JSON非空且包含预期 Hook Span。 - 未发现 Tracing功能影响原有 Profiling或推理主链路。 --- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - 当前 PR共737行变更,未超过1000行,但超过200行,合入前需完成三人以上会议检视并补充检视记录。 - [x] **是否具备UT测试用例看护** - 新增9条专项 UT。 - 覆盖正常转换、Link关联、输入校验、旧数据拒绝、资源关闭和CLI兼容场景。 - 完整 Tracing相关回归执行结果为 58 passed。 --- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - 校验输出路径类型、后缀、合法字符、文件类型、文件属主和符号链接。 - Perfetto Exporter仅接受带有指定 Magic Header的 Hook Span数据包。 - JSON解析或字段转换失败时记录告警并丢弃异常数据,不影响服务主流程。 - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - 已处理空数据包、空属性、空Resource Attributes、空Links、空Socket数据和重复关闭场景。 - [x] **是否进行返回值校验** - 校验路径合法性、Exporter转换结果、Socket读取数据及服务初始化结果。 - Exporter失败时返回 False,Forwarder继续运行并记录告警。 - [x] **是否正确考虑文件权限配置** - 父目录使用 0750 权限创建。 - 输出文件使用 0640 权限创建。 - 使用 O_NOFOLLOW 防止跟随符号链接。 - 拒绝非普通文件、非当前用户所有文件及符号链接。 - [x] **是否充分考虑接口的异常场景** - 已覆盖非法路径、非法数据包、JSON解析失败、Socket异常、Exporter异常、服务信号退出、队列排空和重复关闭等场景。 - Perfetto异常采用旁路降级,不影响Jaeger和推理主链路。 - [x] **是否正确记录错误日志** - 路径、数据转换和导出异常记录 warning/error。 - 服务启动、退出及信号处理记录 info。 - 日志不记录完整请求内容、Trace Headers或敏感模型输入。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - 本 PR不新增正则表达式。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** - 本 PR不涉及除法运算。 - Span持续时间使用非负值保护。 - Span位置和待关联 Link缓存设置最大数量。 - Socket接收队列设置明确容量上限。 --- ## 5. 变更知会 - **资料修改:** - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 docs/zh/msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 docs/zh/vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml资料导航。 - 已通过资料导航和本地链接检查。 - **变更通知(消息知会 + 邮件知会):** - 合入前知会 msserviceprofiler、vLLM-Ascend及推理服务可观测性相关开发和维护人员。 - 新增用户可感知参数 --perfetto-output,需在版本说明中知会。 - 未指定该参数时保持原有 Trace Forwarder行为,不影响现有用户。 --- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [x] **是否存在冒烟可以拦截却未拦截的情况:否** - CLI兼容、Perfetto导出、真实 vLLM请求、Jaeger展示和双写场景均已有UT或真实环境验证。 - [x] **是否需要添加冒烟:是** - 建议在具备 vLLM-Ascend、NPU和Jaeger环境的流水线中增加真实链路冒烟。 - 冒烟至少验证: - 未指定 --perfetto-output 时原有 OTLP Forwarder正常。 - 指定 --perfetto-output 时能够生成合法 JSON。 - 真实推理请求成功。 - Jaeger可查询 Hook Span。 - Perfetto JSON包含预期 Hook Span。 - Perfetto异常不影响Jaeger和推理请求。 See merge request: Ascend/msserviceprofiler!451 | 4 天前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
【资料】【readthedocs】将文档同步至readthedocs平台 Co-authored-by: ChenHuiwen<chenhuiwen7@huawei.com> # message auto-generated for no-merge-commit merge: !220 merge read-dox into master 【资料】【readthedocs】将文档同步至readthedocs平台 Created-by: ChenHuiwen Commit-by: ChenHuiwen Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** **【资料】【readthedocs】将文档同步至readthedocs平台** - **修改内容:** 1. 增加readthedocs配置文件 2. 修改不规范的readme文档 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [ ] **功能自验** https://msserviceprofiler.readthedocs.io/zh-cn/latest/ - [x] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ### 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - [x] **是否进行返回值校验** - [x] **是否正确考虑文件权限配置** - [x] **是否充分考虑接口的异常场景** - [x] **是否正确记录错误日志** - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [x] **若涉及运算,是否存在整数溢出、除零等风险** ---- ### 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ### 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [x] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!220 | 5 个月前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
docs: 资料风格统一 Co-authored-by: cai-weiwei1989<734267852@qq.com> # message auto-generated for no-merge-commit merge: !300 merge master into master docs: 资料风格统一 Created-by: cai-weiwei1989 Commit-by: cai-weiwei1989 Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** - **修改内容:** 同步PR:https://gitcode.com/Ascend/msserviceprofiler/pull/294 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ### 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ### 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ### 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!300 | 4 个月前 | |
init master Co-authored-by: msserviceprofilerDeveloper<msserviceprofilerDeveloper> # message auto-generated for no-merge-commit merge: !13 merge out into master init master Created-by: jiangruitao Commit-by: jiangruitao;eveyin1;tt0cool;ascend-robot;xzm123;AvadaKedavrua;minghang_c;ChenHuiwen;jiangruitao 00800418;msserviceprofilerDeveloper Merged-by: ascend-robot Description: init master See merge request: Ascend/msserviceprofiler!13 | 7 个月前 | |
[doc]:TTFHW需要在资料中增加约束性语言指导AI稳定执行 Co-authored-by: mengguangxin<mgx0018@163.com> # message auto-generated for no-merge-commit merge: !428 merge dev_0730 into master [doc]:TTFHW需要在资料中增加约束性语言指导AI稳定执行 Created-by: mengguangxin Commit-by: mengguangxin Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 产品线要求各产品的TTFHW能力要上线 - **修改方案:** 环境安装和编译过程为了让AI也能稳定执行,需要增加一些约束性语言指导AI - **修改内容:** 增加一些约束性语言用于指导AI稳定执行 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [ ] **功能自验截图**(请确保不体现个人信息) NA - [ ] **冒烟是否通过** NA ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** Y - [ ] **是否具备UT测试用例看护** NA - [ ] **是否需要在sig会议中进行代码检视** NA - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** 需要资料人员luyq11评审 ---- See merge request: Ascend/msserviceprofiler!428 | 30 天前 | |
【master】【docs】:大模型检查低错修改;doctools检查问题清零 Co-authored-by: zzm30<zhengzhimin1@h-partners.com> # message auto-generated for no-merge-commit merge: !401 merge master into master 【master】【docs】:大模型检查低错修改;doctools检查问题清零 Created-by: zzm30 Commit-by: zzm30 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 1. 大模型检查低错修改; 2. doctools检查问题清零。 See merge request: Ascend/msserviceprofiler!401 | 1 个月前 | |
【msserviceprofiler】服务化调优支持--help和--version选项 Co-authored-by: hewenbo<hewenbo16@h-partners.com> # message auto-generated for no-merge-commit merge: !441 merge master into master 【msserviceprofiler】服务化调优支持--help和--version选项 Created-by: hewenbo Commit-by: hewenbo Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:【msserviceprofiler】服务化调优支持--help和--version选项 - **修改内容:【msserviceprofiler】服务化调优支持--help和--version选项 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验** - [x] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - [x] **是否进行返回值校验** - [x] **是否正确考虑文件权限配置** - [x] **是否充分考虑接口的异常场景** - [x] **是否正确记录错误日志** - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [x] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!441 | 12 天前 | |
基于 devcontainer 的 MindStudio 统一开发环境方案 Co-authored-by: Zhang-Yu001<1923299134@qq.com> # message auto-generated for no-merge-commit merge: !429 merge master into master 基于 devcontainer 的 MindStudio 统一开发环境方案 Created-by: 2404_88560538 Commit-by: Zhang-Yu001 Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。 - **修改内容:** 新增 6 个文件: - .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子 - .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步 - .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理 - .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace - .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量 - .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/) 修改 5 个文件: - .gitignore — .vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/、output/、.ruff_cache/、.devcontainer/.host-gitconfig - .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"] - CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库 - build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [x] **功能自验**    - [x] **本地自验用例截图**(请确保不体现个人信息)  - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [ ] **若涉及对外接口,是否已校验外部数据** - [ ] **MR 标题和描述是否按格式填写** - [ ] **是否进行空指针校验** - [ ] **是否进行返回值校验** - [ ] **是否正确考虑文件权限配置** - [ ] **是否充分考虑接口的异常场景** - [ ] **是否正确记录错误日志** - [ ] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [ ] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** 是 - docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节 - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!429 | 25 天前 | |
【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !451 merge tracing into master 【msserviceprofiler】【需求】【Tracing 3/3】支持vLLM Hook Tracing导出Perfetto及Jaeger双写 Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** 前两笔 PR 已分别提供 OpenTelemetry Hook Tracing 基础能力,以及 vLLM/vLLM-Ascend 业务埋点和 Jaeger 链路展示能力。 本 PR 作为 Tracing 系列第三部分,补充 Hook Span 到 Perfetto/Chrome Trace JSON 的可选导出能力,使开发者在启用 vLLM 原生 Tracing 后,可以选择仅将链路导出到 Jaeger,或者同时生成可通过 Perfetto UI 分析的本地 JSON 文件。 本 PR 同时完善 vLLM Hook Tracing 使用资料,明确 Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Profiling 共存和异常定位流程。 前置 PR: - [Tracing 1/3:新增 OpenTelemetry Hook Tracing 基础能力](https://gitcode.com/Ascend/msserviceprofiler/pull/446/) - [Tracing 2/3:接入vLLM Hook Tracing埋点并支持Jaeger链路展示](https://gitcode.com/Ascend/msserviceprofiler/pull/447/) - **修改内容:** 1. 扩展 python -m ms_service_profiler.trace 命令: - 新增可选参数 --perfetto-output <path.json>。 - 未指定 --perfetto-output 时,继续使用原有 OTLPForwarderService,不改变 MindIE Motor 原有 Trace 转发行为。 - 指定 --perfetto-output 时,启动独立的 PerfettoForwarderService。 - vLLM 原生 Tracing 仍是前置条件,Perfetto Forwarder 本身不创建 Span。 2. 新增 PerfettoTraceExporter: - 将标准化 Hook Span 数据转换为 Perfetto 兼容的 Chrome Trace JSON。 - 使用 Complete Event(ph=X)记录 Span 名称、开始时间、持续时间、PID、TID和属性。 - 保留 trace_id、span_id、parent_span_id、Span Kind、Span Status、Service Name和 Resource Attributes。 - 使用 Flow Event(ph=s/f)展示 Request Span与调度、模型执行 Span 之间的 Link 关系。 - 支持先收到目标 Span、后收到源 Span时的延迟 Link 关联。 - 增量写入过程中持续保持 JSON 文件格式有效。 - 仅接受带有 Hook Span Magic Header 的标准化数据,不转换原有 Profiling 数据或旧版 Binary OTLP 数据。 - Span位置和待关联 Link 设置最大缓存数量,避免无界内存增长。 3. 新增独立的 PerfettoForwarderService: - 使用独立 Linux Abstract Unix Socket MSP_PERFETTO_SOCKET。 - 与原有 MindIE OTLP Forwarder 解耦,不修改原有跨进程协议。 - 使用有界接收队列,避免无界数据积压。 - 支持 SIGINT、SIGTERM 和 KeyboardInterrupt 安全退出。 - 服务退出前停止 Socket、排空队列并关闭 JSON 文件。 4. 增加 Perfetto 输出路径安全校验: - 输出路径必须以 .json 结尾。 - 校验路径字符合法性。 - 拒绝符号链接、目录和其他非普通文件。 - 已存在文件必须属于当前用户。 - 使用 O_NOFOLLOW 防止打开过程中跟随符号链接。 - 父目录权限设置为 0750,输出文件权限设置为 0640。 5. 保持 Jaeger 与 Perfetto 两个出口相互隔离: - Jaeger 继续由 vLLM 全局 OpenTelemetry Provider及原生 OTLP Exporter负责。 - Perfetto 通过附加 Span Processor接收 ms_service_profiler.hook.* Scope的 Hook Span。 - Perfetto Forwarder未启动或写入失败时,Jaeger和推理主链路不受影响。 - 本实现不支持 Perfetto-only,vLLM必须通过 --otlp-traces-endpoint 开启原生 Tracing。 6. 新增和更新使用资料: - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml,注册 vLLM Hook Tracing使用指南。 - 资料覆盖功能边界、数据流、埋点配置、Jaeger-only、Jaeger与Perfetto双写、容器网络、真实推理负载、Jaeger分析方法、验收层级、Profiling共存和常见异常。 7. 补充 UT,覆盖: - Hook Span到 Chrome Trace Complete Event的转换。 - Request Link到 Perfetto Flow Event的转换。 - Link源 Span延迟到达场景。 - 非Hook数据包拒绝场景。 - 非法输出路径拒绝场景。 - 独立 Perfetto Socket使用。 - Forwarder数据接收、导出、队列排空和资源关闭。 - CLI未指定参数时保持原有 OTLP Forwarder。 - CLI指定 --perfetto-output 时启动 Perfetto Forwarder。 - [ ] **涉及代码双合**(贴上另一个PR链接):不涉及,本次仅修改 msserviceprofiler 仓库。 --- ## 2. 功能验证 - [x] **功能自验** - 本 PR新增/修改功能专项 UT:9 passed。 - 完整 Tracing相关回归:58 passed。 - 本 PR涉及文件 pre-commit全部通过。 - scripts/check_mkdocs.sh资料导航检查通过。 - PR变更量:707 insertions + 30 deletions = 737,低于1000行限制。 - 已在真实 vLLM-Ascend/NPU环境启动 vLLM原生 Tracing并发送真实推理请求。 - Jaeger能够查询 vLLM原生 Span和 msserviceprofiler Hook Span。 - Perfetto JSON能够生成有效 Complete Event。 - Perfetto JSON已匹配以下 Hook Span: - vllm.scheduler.schedule - vllm.model.execute - vllm_ascend.model_runner.execute - vllm.output.process - Jaeger与Perfetto双写过程中未发现影响 vLLM启动或推理请求的异常。 -  -  - [ ] **本地自验用例截图**(请确保不体现个人信息) - 请补充 Jaeger Trace查询结果截图。 - 请补充 Perfetto/Chrome Trace JSON校验结果或 Perfetto UI截图。 - 请补充真实推理请求成功截图。 - [x] **冒烟是否通过** - 已在真实 vLLM-Ascend/NPU环境启动 vLLM服务。 - 已发送真实推理请求并确认请求成功。 - 已验证 Jaeger-only场景。 - 已验证 Jaeger与Perfetto双写场景。 - 已验证 Perfetto JSON非空且包含预期 Hook Span。 - 未发现 Tracing功能影响原有 Profiling或推理主链路。 --- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - 当前 PR共737行变更,未超过1000行,但超过200行,合入前需完成三人以上会议检视并补充检视记录。 - [x] **是否具备UT测试用例看护** - 新增9条专项 UT。 - 覆盖正常转换、Link关联、输入校验、旧数据拒绝、资源关闭和CLI兼容场景。 - 完整 Tracing相关回归执行结果为 58 passed。 --- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - 校验输出路径类型、后缀、合法字符、文件类型、文件属主和符号链接。 - Perfetto Exporter仅接受带有指定 Magic Header的 Hook Span数据包。 - JSON解析或字段转换失败时记录告警并丢弃异常数据,不影响服务主流程。 - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - 已处理空数据包、空属性、空Resource Attributes、空Links、空Socket数据和重复关闭场景。 - [x] **是否进行返回值校验** - 校验路径合法性、Exporter转换结果、Socket读取数据及服务初始化结果。 - Exporter失败时返回 False,Forwarder继续运行并记录告警。 - [x] **是否正确考虑文件权限配置** - 父目录使用 0750 权限创建。 - 输出文件使用 0640 权限创建。 - 使用 O_NOFOLLOW 防止跟随符号链接。 - 拒绝非普通文件、非当前用户所有文件及符号链接。 - [x] **是否充分考虑接口的异常场景** - 已覆盖非法路径、非法数据包、JSON解析失败、Socket异常、Exporter异常、服务信号退出、队列排空和重复关闭等场景。 - Perfetto异常采用旁路降级,不影响Jaeger和推理主链路。 - [x] **是否正确记录错误日志** - 路径、数据转换和导出异常记录 warning/error。 - 服务启动、退出及信号处理记录 info。 - 日志不记录完整请求内容、Trace Headers或敏感模型输入。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - 本 PR不新增正则表达式。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** - 本 PR不涉及除法运算。 - Span持续时间使用非负值保护。 - Span位置和待关联 Link缓存设置最大数量。 - Socket接收队列设置明确容量上限。 --- ## 5. 变更知会 - **资料修改:** - 新增 docs/zh/vLLM_hook_tracing_instruct.md。 - 更新 docs/zh/msserviceprofiler_trace_data_monitoring_instruct.md。 - 更新 docs/zh/vLLM_service_oriented_performance_collection_tool.md。 - 更新 mkdocs.yml资料导航。 - 已通过资料导航和本地链接检查。 - **变更通知(消息知会 + 邮件知会):** - 合入前知会 msserviceprofiler、vLLM-Ascend及推理服务可观测性相关开发和维护人员。 - 新增用户可感知参数 --perfetto-output,需在版本说明中知会。 - 未指定该参数时保持原有 Trace Forwarder行为,不影响现有用户。 --- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [x] **是否存在冒烟可以拦截却未拦截的情况:否** - CLI兼容、Perfetto导出、真实 vLLM请求、Jaeger展示和双写场景均已有UT或真实环境验证。 - [x] **是否需要添加冒烟:是** - 建议在具备 vLLM-Ascend、NPU和Jaeger环境的流水线中增加真实链路冒烟。 - 冒烟至少验证: - 未指定 --perfetto-output 时原有 OTLP Forwarder正常。 - 指定 --perfetto-output 时能够生成合法 JSON。 - 真实推理请求成功。 - Jaeger可查询 Hook Span。 - Perfetto JSON包含预期 Hook Span。 - Perfetto异常不影响Jaeger和推理请求。 See merge request: Ascend/msserviceprofiler!451 | 4 天前 | |
【msserviceprofiler_master】适配vllm安装依赖版本 Co-authored-by: hewenbo<hewenbo16@h-partners.com> # message auto-generated for no-merge-commit merge: !450 merge master into master 【msserviceprofiler_master】适配vllm安装依赖版本 Created-by: hewenbo Commit-by: hewenbo Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:【msserviceprofiler_master】适配vllm安装依赖版本 - **修改内容:【msserviceprofiler_master】适配vllm安装依赖版本 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - [x] **是否进行返回值校验** - [x] **是否正确考虑文件权限配置** - [x] **是否充分考虑接口的异常场景** - [x] **是否正确记录错误日志** - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [x] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [x] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!450 | 5 天前 | |
【msserviceprofiler_master】适配vllm安装依赖版本 Co-authored-by: hewenbo<hewenbo16@h-partners.com> # message auto-generated for no-merge-commit merge: !450 merge master into master 【msserviceprofiler_master】适配vllm安装依赖版本 Created-by: hewenbo Commit-by: hewenbo Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:【msserviceprofiler_master】适配vllm安装依赖版本 - **修改内容:【msserviceprofiler_master】适配vllm安装依赖版本 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备UT测试用例看护** ---- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** - [x] **MR 标题和描述是否按格式填写** - [x] **是否进行空指针校验** - [x] **是否进行返回值校验** - [x] **是否正确考虑文件权限配置** - [x] **是否充分考虑接口的异常场景** - [x] **是否正确记录错误日志** - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** - [x] **若涉及运算,是否存在整数溢出、除零等风险** ---- ## 5. 变更知会 - **资料修改:** - **变更通知(消息知会 + 邮件知会):** ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [ ] 需求特性 - [ ] 安全排查 - [x] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** - [ ] **是否需要添加冒烟:** ---- See merge request: Ascend/msserviceprofiler!450 | 5 天前 | |
【ms-service-metric】【ST】监控大盘冒烟框架首次搭建 Co-authored-by: Mad97_<chepishuai1@h-partners.com> # message auto-generated for no-merge-commit merge: !373 merge metric_st into master 【ms-service-metric】【ST】监控大盘冒烟框架首次搭建 Created-by: Mad97_ Commit-by: Mad97_ Merged-by: ascend-robot Description: # PR 合入模板 ## 1. 修改描述 - **修改原因:** ms-service-metric 当前缺少 vLLM 场景级 ST 冒烟能力,无法快速验证 vllm-ascend 不同版本下 hook 加载、metric 开关、推理请求和 /metrics 暴露链路是否正常;同时后续 EPLB/DPLB/异常场景需要可扩展的场景框架承载。 - **修改内容:** - 新增 Metric ST 统一入口 run_metric_st.py,默认执行 basic 场景。 - 新增 test/st/python/metric 场景框架: - metric_runner.py:统一处理安装 ms-service-metric、启动 vLLM、执行 ms_service_metric restart、发送请求、抓取 /metrics、保存 artifacts。 - metric_scenarios.py:按 basic/eplb/dplb/exception 注册场景,隔离启动参数、preflight 和指标契约。 - metric_assertions.py:提供通用 Prometheus 文本解析和指标断言能力。 - metric_smoke_utils.py:提供模型、NPU、端口、Prometheus 目录、metric 安装等前置检查。 - 新增 pytest 用例 test_metric_vllm_basic.py,支持通过 --metric-scenario 选择场景。 - 新增 EPLB 启动适配: - 设置 DYNAMIC_EPLB=true - 自动按设备数设置 --tensor-parallel-size - 开启 --enable-expert-parallel - 通过 --additional-config 注入 eplb_config - 启动日志需确认 Dynamic EPLB is True - 新增 artifacts 输出: - preflight.log - metric_install.json - service.log - request.log - metrics.raw - assertion_report.json - 增加 test/ut/python/test_metric_st_framework.py,覆盖 metric parser、断言规则、场景参数生成等基础逻辑。 - 增加 test/st/python/metric/README.md,说明基础和专项场景执行方式。 - [ ] **涉及代码双合**(贴上另一个PR链接): 暂无。 ---- ## 2. 功能验证 - [ ] **功能自验**  - [ ] **本地自验用例截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ## 3. 代码检视 - **要求:** - 合入代码大于 200 行,需三人以上会议检视。 - 检视密度≥2个/100行。 - 检视缺陷密度达不到要求的需给出说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** 待组织检视。本次变更超过 200 行,建议按要求进行三人以上会议检视。 - [x] **是否具备UT测试用例看护** 新增 test/ut/python/test_metric_st_framework.py,覆盖 metric 文本解析、断言规则、场景注册和参数生成等框架逻辑。 ---- ## 4. 安全自检 **典型安全编码问题** - [x] **若涉及对外接口,是否已校验外部数据** CLI 参数增加 choices、请求次数校验、场景名校验;模型路径、NPU、端口、metric source 均有前置检查。 - [x] **MR 标题和描述是否按格式填写** 已按模板填写。 - [x] **是否进行空指针校验** Python 代码中对可选参数、缺失配置文件、缺失模块、缺失命令等情况进行了分支处理。 - [x] **是否进行返回值校验** 对 git/pip/vllm help/ms_service_metric restart/curl 等命令返回值进行了检查。 - [x] **是否正确考虑文件权限配置** Prometheus multiproc 目录创建后会进行写入探测;artifacts 写入固定在 workspace 下。 - [x] **是否充分考虑接口的异常场景** 覆盖模型不存在、NPU 不可用、NPU 占用过高、端口冲突、metric 安装失败、vLLM 启动失败、指标缺失等异常。 - [x] **是否正确记录错误日志** 失败时保留 preflight、service、request、metrics 和 assertion report。 - [x] **若涉及正则表达式,是否对正则表达式做 ReDos 校验** Prometheus sample 解析正则仅面向单行文本,不包含高风险嵌套回溯结构。 - [x] **若涉及运算,是否存在整数溢出、除零等风险** 仅涉及端口、设备数、请求次数等简单整数处理;请求次数已校验 >= 1。 ---- ## 5. 变更知会 - **资料修改:** 新增 test/st/python/metric/README.md,说明 Metric ST 执行方式和场景选择方式。 - **变更通知(消息知会 + 邮件知会):** 待 PR 提交后按团队流程知会。 ---- ## 6. 冒烟修改 - **PR 来源:** - [ ] 问题单 - [x] 需求特性 - [ ] 安全排查 - [ ] 其他 - [ ] **是否存在冒烟可以拦截却未拦截的情况** 当前 PR 目标是补齐 ms-service-metric 的基础 ST 框架,历史上缺少对应冒烟拦截能力。 - [x] **是否需要添加冒烟:** 是。本 PR 新增 Metric ST 基础框架和 basic/eplb/dplb/exception 场景入口;本次先合入框架和基础校验,后续 PR 继续扩展 EPLB/DPLB/异常场景的字段覆盖。 See merge request: Ascend/msserviceprofiler!373 | 2 个月前 |
MindStudio Service Profiler
✨ 最新消息
🔹 [2026.03.24] 支持 Prometheus 在线监测。
🔹 [2025.12.30] 支持Torch Profiler数据采集与解析。
🔹 [2025.11.30] 对接 OpenTelemetry 生态,支持全链路 Trace 追踪。
🔹 [2025.11.24] 支持 vLLM 框架的无侵入自动插桩采集。
🔹 [2025.11.07] 发布自动寻优插件化模式。
ℹ️ 简介
MindStudio Service Profiler 是一款专为大模型推理服务设计的全栈性能分析与调优工具。它通过无侵入式采集、高性能数据持久化及多维关联分析,帮助用户深入洞察推理框架(如 MindIE, vLLM, SGLang)在昇腾硬件上的运行表现,精准定位性能瓶颈。
⚙️ 功能介绍
面向不同使用场景,本工具提供以下功能,详细用法请参见对应参考文档:
| 功能名称 | 功能描述 | 详细介绍 |
|---|---|---|
| 【性能调优】服务化性能调优 | 理解服务化调优数据格式、可视化分析方式及典型调优流程 | 点击查看 |
| 【性能采集】vLLM 服务化性能采集 | 针对 vLLM 框架场景的专项服务化性能采集 | 点击查看 |
| 【性能采集】SGLang 服务化性能采集 | 针对 SGLang 框架场景的专项服务化性能采集 | 点击查看 |
| 【数据监测】MindIE Trace 数据链路监测 | 将服务端请求链路打通到 Jaeger 等 OTLP 生态 | 点击查看 |
| 【在线监测】vLLM Prometheus 在线监测 | 在 vLLM-Ascend 上结合 Prometheus 做在线监控 | 点击查看 |
| 【比对分析】性能数据比对 | 对不同版本/配置的性能结果做对比分析 | 点击查看 |
| 【比对分析】多维度解析 | 从多维度对采集的性能数据做深入分析 | 点击查看 |
| 【比对分析】拆解分析 | 对服务化性能数据做细粒度拆解分析 | 点击查看 |
| 【寻优建议】服务化自动寻优 | 在已有采集数据基础上进行参数自动寻优 | 点击查看 |
| 【寻优建议】服务化自动寻优插件模式 | 以插件化模式进行参数自动寻优 | 点击查看 |
| 【寻优建议】服务化专家建议 | 基于采集数据获取性能调优专家建议 | 点击查看 |
🚀 快速入门
msServiceProfiler服务化调优工具的快速入门,包括必要的操作步骤、参数说明等,具体请参见《快速入门》。
🛠️ 工具安装
安装msServiceProfiler工具,详情请参见《msServiceProfiler 安装指南》。
🌌 智能检索
为提升文档查阅效率,我们提供多种高效检索方式:
🔹 AI 问答(DeepWiki):自然语言问答,快速把握项目架构与模块关系。
🔹 AI 问答(ZRead):中文问答体验更优,精准定位功能用法与细节。
🔹 精确搜索(ReadTheDocs):关键词全文检索,直达接口、参数与报错等信息。
🛠️ 贡献指南
欢迎参与项目贡献,请参见《贡献指南》。
⚖️ 相关说明
🤝 建议与交流
欢迎大家为社区做贡献。如果有任何疑问或建议,请提交 Issues,我们会尽快回复。感谢您的支持。
| 即时互动(微信群) | 官方资讯(公众号) | 深度支持(助手/论坛) |
|---|---|---|
![]() 扫码加入技术交流群 |
![]() 扫码关注官方公众号 |
扫码入群并关注公众号,直达 MindStudio 用户与开发者最快捷的交流平台: 快速提问: 与社区小伙伴即时探讨技术问题 掌握动态: 第一时间获取版本发布与功能更新通知 经验共享: 与广大开发者交流最佳实践与实战心得 更多支持渠道:👉 昇腾助手: |
🙏 致谢
本工具由华为公司的下列部门联合贡献:
🔹 昇腾计算MindStudio开发部
🔹 昇腾计算生态使能部
🔹 华为云昇腾云服务
感谢来自社区的每一个PR,欢迎贡献!
项目介绍
MindStudio-Service-Profiler(msserviceprofiler)是MindStudio推理服务化性能数据采集工具,采集关键过程的开始和结束时间点,识别关键函数或迭代等信息,记录关键事件,支持多样的信息采集,对性能问题快速定界。
定制我的领域
