Prhub

#21401 [CI] Add PID namespace and ps auxf diagnostics to killall.py

原始 PR 作者 hnyls2002 合并时间 2026-03-26 14:57 文件变更 1 提交数 9 评论 3 代码增减 +283 / -138

执行摘要

增强 killall.py 脚本的诊断能力,添加 PID 命名空间检查和进程列表输出以解决 CI 中 GPU 内存清理失败问题。

PR body中提到:'Helps diagnose the recurring CI issue where GPU memory stays dirty but the reported PID cannot be killed (ProcessLookupError), which happens when runner containers share GPUs via --gpus all with soft CUDA_VISIBLE_DEVICES isolation'。动机是解决由于容器共享GPU导致进程清理失败的CI问题,提供更详细的诊断信息。

建议涉及CI管理或容器环境调试的工程师精读此PR,关注其PID命名空间检查、进程匹配和日志结构的设计决策,这些对类似共享GPU容器的调试有借鉴价值。

讨论亮点

review由gemini-code-assist[bot]进行,提出两个改进建议:

  • 在_check_pid_namespace中,建议捕获更广泛的OSError而非仅PermissionError,以处理I/O错误等其他OS级问题。
  • 在_log_ps_diagnostic中,建议添加check=True并记录stderr,以更稳健地处理ps命令失败情况。
    讨论聚焦于代码健壮性,建议已被考虑但未在提供材料中明确采纳状态。

实现拆解

实现集中于python/sglang/cli/killall.py文件:

  1. 新增函数:_check_pid_namespace(检查PID命名空间)、_log_ps_diagnostic(输出过滤后的ps auxf结果)、_find_sglang_pids_by_name(通过/proc扫描匹配SGLang进程)。
  2. 修改函数:_kill_pids集成诊断逻辑,添加重试和日志输出。
  3. 新增辅助函数:_log和_flush_box用于格式化日志输出,引入_SGLANG_PROCESS_PATTERNS正则表达式匹配进程命令。
  4. 从commits历史看,包括重构、改善错误处理和添加nvidia-smi版本日志。
文件 模块 状态 重要度
python/sglang/cli/killall.py cli modified 5.0

关键符号

_check_pid_namespace _log_ps_diagnostic _kill_pids _find_sglang_pids_by_name _log _flush_box

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

_check_pid_namespace 的错误处理健壮性 正确性

gemini-code-assist[bot] 建议捕获 OSError 而非仅 PermissionError,以处理更广泛的 OS 级错误如 I/O 问题。

结论:建议被提出但未在材料中明确是否采纳,PR commits 显示有改善错误处理。 · suggested

_log_ps_diagnostic 的 ps 命令错误处理 正确性

gemini-code-assist[bot] 建议添加 check=True 并记录 stderr,以避免误导日志并提升调试能力。

结论:类似地未明确采纳状态,但 PR 整体增强了诊断输出。 · suggested

风险与影响

技术风险包括:

  • Linux-specific依赖:新功能依赖于/proc文件系统,在非Linux系统上可能失败或产生未定义行为。
  • 错误处理不完善:review中指出的OSError捕获和ps命令错误处理不足可能导致脚本崩溃或输出误导性日志。
  • 性能开销:新增的进程扫描和日志输出可能在大量进程时引入轻微性能开销。
  • 兼容性:假设容器环境共享GPU,可能在其他CI配置中不适用。

影响范围主要限于CI环境:

  • 对系统:提升GPU内存清理失败的诊断能力,减少CI因脏内存导致的失败时间,增强CI稳定性。
  • 对用户:终端用户透明,但开发者和运维团队能更快定位和解决CI问题。
  • 对团队:提供更好的调试工具,促进CI流程的维护效率。
Linux-specific 依赖 错误处理不完整 日志噪声

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论