周期与配额怎么配合
用周期与配额组合描述 CPU 上限:周期默认十万微秒,配额设为五万表示每个周期使用一半的核时间。它是更直观的核数上限参数的底层表达,适合需要精确控制周期行为的场景。
基本信息
| 语法 | --cpu-period=<微秒> 与 --cpu-quota=<微秒> |
|---|---|
| 默认周期 | 100000 微秒 |
| 换算关系 | 配额除以周期等于可用核数 |
| 直观替代 | 直接指定核数的参数 |
| 核对 | docker inspect 的 CpuQuota 与 CpuPeriod |
典型使用场景
- 需要精确控制 CPU 周期行为时使用
- 理解其他 CPU 上限参数的底层含义
- 排障时核对实际生效的配额值
- 压测时构造精确的算力上限
- 对比不同写法是否等价
设置与核对
设置与核对
docker run -d --cpu-period=100000 --cpu-quota=50000 --name half app/api:1.4.2 # 半个核
docker inspect -f '{{.HostConfig.CpuQuota}}/{{.HostConfig.CpuPeriod}}' half # 核对生效值
docker run -d --cpus=0.5 --name half2 app/api:1.4.2 # 等价写法参数与换算
| 参数 | 含义 | 示例 |
|---|---|---|
| 周期 | 调度周期长度 | 100000 微秒 |
| 配额 | 每周期可用时间 | 50000 微秒 |
| 换算 | 配额除以周期 | 等于 0.5 个核 |
| 等价写法 | 直接指定核数 | 0.5 与上面等价 |
一般场景直接用表达核数的参数更直观;只有需要精确控制周期行为时才用周期与配额组合。
配额与周期写反会让限额数量级错得离谱,换算关系上线前先心算一遍。
核对生效值时两个字段要一起看,只看一个无法判断实际允许的算力。
两个参数要成对出现,只设置其中一个不会有预期效果。
多核机器上配额小于周期时容器无法占满整核,表现为性能被硬性压制。
与权重类参数混用时两者共同生效,排查时几个参数都要核对。
同一容器上同时用两种方式限制 CPU 时,后写入的配置会覆盖前面的写法,排查前先确认最终生效值,而不是照抄启动命令。
周期与配额的实现细节在不同内核版本上有差异,跨内核迁移时以实际压测结果为准,不要只用纸面换算下结论。