1
0
Files
DiAL/docs/user/checkers/cpu.md
lanyuanxiaoyao 3390eb5e8d fix: 强化 CPU/memory checker 错误处理、timeout 遵守和快照校验
- Memory checker: reader 与 ctx.signal race,abort 返回 memory/timeout,reject 保持 memory/snapshot
- CPU checker: 第二次快照异常返回 cpu/snapshot,计算前校验空数组/核心数不一致/非有限值/负 delta
- CPU 计算: 零 delta 安全处理,observation 不含 NaN/Infinity
- 文档: CPU 互补描述修正,Memory timeout 约束说明
- 测试: +18 覆盖 timeout、异常和边界输入
2026-05-27 16:33:39 +08:00

2.9 KiB
Raw Blame History

CPU Checker

type: cpu 用于检查本机 CPU 使用率,基于两次系统快照计算总体和每核心的忙碌比例。

配置项

字段 说明 必填 默认值
cpu.sampleDuration CPU 采样窗口,支持时长格式 1s
cpu.includePerCore 是否在结果中输出每核心使用率数组 false

sampleDuration 必须小于 target 的 timeout

expect 校验项

字段 说明 必填 默认值
usagePercent 总体 CPU 使用率,范围 0-100,使用 ValueMatcher
idlePercent 总体 CPU 空闲率,与 usagePercent 互补,两者之和恒为 100idlePercent + usagePercent = 100
maxCoreUsagePercent 单核心最高使用率,使用 ValueMatcher
minCoreUsagePercent 单核心最低使用率,使用 ValueMatcher
durationMs 完整执行耗时校验,使用 ValueMatcher

所有百分比字段范围为 0-100,表示所有可见逻辑 CPU 的总体比例,不是"核心数 × 100"。

示例

- id: "local-cpu"
  name: "本机 CPU"
  type: cpu
  interval: "30s"
  timeout: "5s"
  cpu:
    sampleDuration: "1s"
  expect:
    usagePercent:
      lte: 85
    maxCoreUsagePercent:
      lte: 95

输出每核心使用率:

- id: "local-cpu-detail"
  name: "本机 CPU 详细"
  type: cpu
  cpu:
    sampleDuration: "2s"
    includePerCore: true
  expect:
    usagePercent:
      lte: 80

语义说明

CPU checker 采集的是 DiAL 进程运行环境通过系统 APIos.cpus())可见的 CPU 视图。在容器中,它可能不等于严格的 cgroup quota 使用率。

usagePercentidlePercent 互补,恒等于 100。sampleDuration 决定了两次快照之间的等待时间,窗口越长结果越稳定,但会增加 checker 执行耗时。

不支持的功能

  • CPU 温度、电源状态、频率
  • userPercent / systemPercent(用户态/系统态占比)
  • loadAverage(系统负载均值)
  • 进程级 CPU 使用率
  • Linux cgroup 精确 CPU 计算
  • logicalCoreCount 作为 expect 字段(仅在 observation 中输出)

更新触发条件

修改 CPU checker 配置、expect 字段、行为或语义时,必须更新本文档。