# PR #7138 完整报告

- 仓库：`PaddlePaddle/FastDeploy`
- 标题：[CI] Replace ipc=host with shm-size and sysctl configuration
- 合并时间：2026-04-02 10:33
- 原文链接：http://prhub.com.cn/PaddlePaddle/FastDeploy/pull/7138

---

# 执行摘要
本 PR 将 FastDeploy 的 CI 测试 Docker 配置从依赖主机 IPC（--ipc=host）改为容器级共享内存（--shm-size=64g）和 sysctl IPC 消息队列配置，旨在解决多 GPU 测试中共享内存不足和跨任务干扰问题，提升测试隔离性和稳定性，影响范围限于 CI 环境，风险较低但需注意配置一致性。

# 功能与动机
**为什么做？**根据 PR body，移除 `--ipc=host` 是因为它“暴露了共享内存相关问题（例如 IPC/SHM 分配失败）”，且默认 Docker 的 `/dev/shm`（64MB）对于“多进程 / 多 GPU 测试不足”。目标是采用“更安全、更隔离的配置而不依赖主机 IPC”，以避免跨任务干扰并确保模型服务测试的稳定性。

# 实现拆解
改动涉及 5 个 GitHub Actions 工作流文件，均调整 Docker 运行命令：

| 文件路径 | 关键变更 | 说明 |
|----------|----------|------|
| `.github/workflows/_base_test.yml` | 移除 `--ipc=host`，添加 `--shm-size=64g` 和两个 `--sysctl` 参数 | 基础测试工作流，设置共享内存和 IPC 消息队列大小 |
| `.github/workflows/_gpu_4cards_case_test.yml` | 同上 | 多 GPU 测试工作流，确保高性能测试有足够资源 |
| `.github/workflows/_logprob_test_linux.yml` | 同上，但添加了额外空行 | 日志概率测试工作流，需注意格式一致性 |
| `.github/workflows/_pre_ce_test.yml` | 仅添加 `--shm-size=64G`（大写 G） | 预 CE 测试工作流，未添加 sysctl 配置 |
| `.github/workflows/_stable_test.yml` | 仅添加 `--shm-size=64G`（大写 G） | 稳定测试工作流，同样未添加 sysctl 配置 |

关键逻辑：用容器级配置替代主机依赖，`shm-size` 扩展共享内存以避免默认 64MB 不足，`sysctl` 配置 IPC 消息队列以支持更大通信（仅三个文件应用）。

# 评论区精华
Review 讨论较少：
- **ZhangYulongg**批准了 PR，但未提供具体评论，表明变更被认可。
- 作者在 Issue 评论中指示：
 > /skip-ci ci_iluvatar /skip-ci ci_hpu /skip-ci build_xpu /skip-ci coverage
 这可能因为改动与这些 CI 任务不相关，或为避免不必要测试，但未详细说明原因，留下轻微不确定性。

# 风险与影响
**风险分析：**

1. **共享内存限制**：从主机无限共享内存改为固定 64g，若未来测试需求超过此值（如更大模型或更多 GPU），可能导致新分配失败。
2. **配置不一致**：仅三个文件添加了 sysctl 配置，其余两个未添加，可能在某些测试场景中引发 IPC 消息队列限制问题。
3. **移除 ipc=host 影响**：虽然提升隔离性，但可能影响依赖主机 IPC 的特定测试（如跨容器通信），需监控测试结果。

**影响分析：**

- **对 CI 系统**：提升测试隔离性，减少跨任务干扰；确保多 GPU 测试有足够共享内存，避免因资源不足导致的失败；可能改善 CI 稳定性和可靠性。
- **对用户和产品**：无直接影响，属于基础设施优化。
- **对团队**：简化测试环境配置，降低因主机 IPC 依赖引发的调试复杂度。

# 关联脉络
从近期历史 PR 看，本 PR 与以下相关：
- **PR #7132（优化单元测试日志清理和隔离）**：同为 CI 优化，关注测试隔离性，可对比学习如何通过配置提升 CI 可靠性。
- **PR #7085（优化单 GPU 并行测试）**：涉及 CI 效率优化，本 PR 的共享内存配置可能影响其并行测试性能，需确保资源充足。

整体上，FastDeploy 近期 CI 优化趋势明显（如 PR #7132、#7085），本 PR 延续了这一方向，通过容器级资源管理替代主机依赖，反映团队对测试环境稳定性和可重复性的重视。