运行时资源守卫
使用 Token、内存、进程数、CPU 自旋、磁盘 I/O、PSI 颠簸和空闲监控保护 Agent 任务与运行时宿主机。
资源守卫监控运行中的 Agent 任务,防止 Token 异常消耗、内存泄漏、CPU 死循环自旋、磁盘死循环写盘、系统内存换页颠簸和 fork bomb。它不负责调度并发槽位;并发限制属于 Daemon。
监控项
| 守卫 | 默认约束 | 行为 |
|---|---|---|
| Token 预算 | 单任务净 Token 2.5M、总 Token 30M、300 turns | 80% 告警;达到硬限制时终止任务。 |
| Token 消耗速率 | 5 分钟 300k Token | 检测短时间异常消耗。 |
| 内存 | 单任务 RSS 4 GiB、运行时总量 10 GiB | 80% 告警;超限达到 --memory-grace(默认 60s)后终止。 |
| 进程数 | 单任务 200 | 递归检查子进程,限制 fork bomb。 |
| CPU 自旋熔断 | 单任务 800%(8 核满载) | 持续死循环超标达到 --cpu-grace(默认 30s)后触发 CPU_LIMIT_EXCEEDED 熔断。指标回落自动清零。 |
| 磁盘累计写硬限 | 单任务 4 GiB | 0 宽限秒级熔断(DISK_IO_LIMIT_EXCEEDED),彻底杜绝宿主机磁盘打满。 |
| 磁盘持续写速率 | 单任务 50 MB/s | 检测短时写日志风暴,持续达到 --disk-io-grace(默认 30s)触发 DISK_IO_LIMIT_EXCEEDED 熔断。 |
| 宿主机剩余磁盘保底水位 | 宿主机可用空间 5 GiB | 当宿主机工作目录所在磁盘剩余可用空间低于 --min-host-free-disk-bytes 时,0 宽限立即触发 HOST_DISK_SPACE_LOW 熔断。 |
| PSI 颠簸熔断 | 内存 some avg10 > 25.0、I/O some avg10 > 50.0 | 检测严重换页颠簸或 I/O 阻塞,持续达到 --psi-grace(默认 30s)触发 MEMORY_THRASHING 或 IO_THRASHING。 |
| 空闲 | MOPHEUS_AGENT_IDLE_WATCHDOG | 没有输出且没有进行中工具调用时终止停滞任务。 |
采集与终止
Linux 上优先使用 cgroup v2 进行只读采样(cpu.stat、io.stat、memory.pressure、io.pressure),并在熔断时原子终止任务对应的整个 cgroup。被熔断的任务保留会话上下文(Session Checkpoint),支持无缝断点续传恢复。
当宿主机未配置 cgroup 委派或在非 Linux 环境下时,系统平滑降级:
- 内存与进程数:通过
/proc/[pid]/status(或宿主等效接口)周期采样,看门狗全平台有效; - CPU 与磁盘 I/O:Linux 非 cgroup 环境回退至 procfs 降级采样(
/proc/[pid]/stat计算 CPU 利用率,/proc/[pid]/io计算磁盘写速率与总量);在 macOS 或无指标环境采样值恒为 0,看门狗安全跳过评估,无误报; - PSI 颠簸:Linux cgroup v2 专属,降级或非 Linux 环境下指标恒为 0 并安全跳过。
诊断
告警和强制终止会同时写入本地诊断记录并上报控制面。管理员可使用以下命令查看任务的资源诊断:
mopheus runtime guard explain <task-id>配置与运维
runtime_guard 功能开关控制系统级可用性(disabled、selected、enabled)。守卫配置依次取自代码默认值、工作区或 Runtime 策略、Agent 专属覆盖和 MOPHEUS_GUARD_* 宿主机环境变量;宿主机环境变量优先级最高。单任务的实际内存上限同时受单任务与 Runtime 总量限制。
工作区管理员可用 mopheus runtime guard config {get|set|reset} 查看或修改策略,并用 show、stats、events、explain 查看活动资源与事后诊断。config get 以 3 列分组纵表排版呈现各维度阈值与生效来源。
配置宽限期时使用正交的独立参数:--memory-grace(原有 --grace 已弃用)、--cpu-grace、--disk-io-grace 和 --psi-grace。