目录 / 文档-技术白皮书 / 07-EFT.WP.Core.Threads v1.0
I. 范围与目标
- 定义 R_cpu、R_mem、R_io 的预算模型、隔离域与配额执行方式,确保在多租与多图并发下的可预见性与故障围堵。
- 给出公设 P76-*、最小方程 S76-*、运维流程 Mx-5,并与 I70-5、I70-1、I70-2、I70-6、I70-7、I70-8 一致。
- 在 crit(G) 与高优先级路径上提供确定性资源通道,限制级联退化与优先级反转。
II. 名词与变量
- 预算与负载:R_cpu(vCPU 数或 shares)、R_mem(bytes)、R_io(MB/s 或 IOPS)。
- 占用与利用:u_cpu、u_mem、u_io,rho_cpu = ∑ u_cpu / capacity_cpu,rho_io = lambda_io / mu_io。
- 隔离域:iso_dom(cgroup/namespace/cpuset)、affinity(CPU/NUMA 亲和)、quota(硬配额)、burst(短时超发)。
- 线程/图:thr、pid_thr、gid、prio、K_thr、w(v)、c(e)、crit(G)。
- 安全余量:headroom ∈ (0,1),reserve_mem,reserve_io。
III. 公设 P76(资源与隔离)
- P76-1(配额即契约):每个 gid 必声明 {R_cpu,R_mem,R_io} 与 headroom;未声明者禁止进入运行队列。
- P76-2(硬界优先):quota 为硬上限,burst 仅在资源富余且 rho_* < 1 - headroom 时临时启用。
- P76-3(稳定性门槛):任一域需满足 rho_cpu < 1 - headroom 且 rho_io < 1 - headroom,否则触发降级与限流。
- P76-4(记账一致):所有计量以 tau_mono 采样,结算周期与 SLA_window 对齐;审计以 ts 落盘。
- P76-5(隔离分层):先域(tenant)后图(gid)再线程(thr)的三级隔离;跨层升级只减不增。
- P76-6(亲和保序):对 crit(G) 上节点,affinity 固定;禁止被低 prio 线程抢占关键核。
- P76-7(内存前置):R_mem 以工作集 WSS 为基准,R_mem >= WSS * safety_factor;违反即提前拒绝或分片。
- P76-8(反向压力):当 q_len 超阈或 u_* 逼近上限,先收紧 burst,再降 K_thr,再触发 rate_limiter。
IV. 最小方程 S76(容量与上界)
- S76-1(CPU 头寸):rho_cpu = ( ∑_i u_cpu_i ) / capacity_cpu <= 1 - headroom。
- S76-2(IO 稳态):rho_io = lambda_io / mu_io <= 1 - headroom。
- S76-3(内存无抖):∑_i WSS_i + cache_working <= R_mem_total - reserve_mem。
- S76-4(共享核上的节点时长下界):T_node(v) >= cycles(v) / ( share(v) * freq_eff ),其中 share(v) = R_cpu(v) / ∑_co_scheduled R_cpu。
- S76-5(图级完工时间与资源):T_make(G) >= ∑_{v ∈ crit(G)} T_node(v) + ∑_{e ∈ crit(G)} c(e)。
- S76-6(NUMA 跨域惩罚近似):lat_remote approx lat_local + delta_numa,delta_numa 随 QPI/UPI 拓扑给定。
V. 资源域模型与参数化
- CPU
- R_cpu 以 shares 或 vCPU 数标注;prio 决定在同域内的分配序。
- 建议 headroom_cpu ∈ [0.1, 0.3];控制面与 crit(G) 采用固定核或高 share。
- 合并短任务:批量化 w(v) 过小的节点以降低上下文切换开销。
- 内存
- 申报 WSS:WSS = P95(working_set_samples);安全系数常取 safety_factor ∈ [1.2,1.5]。
- 高水位与 OOM 策略:R_mem_high < R_mem_max;越界先触发节流与降级,再逐步回收缓存,最后中止最边缘线程。
- IO
- 将 R_io 分为吞吐与 IOPS 两维:R_io = {MBps, IOPS};优先以 IOPS 限制小块抖动。
- 写放大控制:顺序化 flush、合并小写、启用批 ACK;对日志路径单独设域。
VI. 隔离域与拓扑
- 逻辑分层
- iso_dom(tenant) → iso_dom(gid) → iso_dom(thr);分别绑定 cgroup, cpuset, io.max。
- 每层都有独立 quota 与 burst;跨层累计严格不超过上层。
- 亲和与 NUMA
- affinity 固定在同一 NUMA 节点上;R_mem 对应节点预留;跨节点访问仅作为回退。
- 对延时敏感链路设定 affinity = dedicated_cores,并禁用频繁迁移。
VII. 调度与入阈(与 I70-2)
- 入队条件
admit(gid) 当且仅当 rho_cpu_pred < 1 - headroom_cpu 且 rho_io_pred < 1 - headroom_io 且 R_mem_free >= R_mem_req。 - 队列整形
按 prio 与 share 执行加权公平;K_thr 上限由 R_cpu 与 rho_* 联合裁决。 - 关键路径优先
crit(G) 上节点提升权重 w_crit_boost,确保 S76-5 的下界可逼近。
VIII. 配额执行算法与策略
- CPU shares + 上限:以 shares 分配切片,开启 quota_period 与 quota_limit 限制突发。
- IO 令牌:对 R_io 使用令牌桶;bucket_rate = MBps,bucket_burst = burst_window * MBps。
- 内存水位:三阈值策略 low/high/max;超 high 启动回收器与 limit_acquire;超 max 触发最小影响面终止。
- 退化顺序
先撤销 burst,再降 K_thr,再丢弃低 prio 非关键任务,最后熔断入口(配合第7章限流)。
IX. 可观测性与告警(与 I70-7/I70-8)
- 指标
- Threads.cpu.rho, Threads.io.rho, Threads.mem.wss, Threads.mem.oom_events
- Threads.quota.throttle_ms, Threads.burst.active, Threads.numa.remote_ratio
- 门限
- rho_cpu > 1 - headroom 持续 SLA_window/10 触发告警与自愈。
- remote_ratio > 5% 于 crit(G) 触发亲和重排。
- 合同断言
- {"type":"capacity_headroom","rho_cpu_le":1-headroom}
- {"type":"wss_fit","WSS_le":R_mem/safety_factor}
- {"type":"isolation","no_cross_tenant_contention":true}
X. 接口绑定(与 I70-5/I70-1/I70-2/I70-6)
- set_quota(scope:str, R:dict) -> None
形如 {"cpu":2,"mem":"8Gi","io":{"MBps":50,"IOPS":2000}};成功即创建/更新 iso_dom(scope)。 - reserve(scope:str, R:dict) -> Ticket / release(ticket) -> None
运行期临时预留,受 burst 与 headroom 约束。 - set_affinity(thr, affinity:list[int]) 与 set_priority(thr, prio:int)
关键核与关键线程绑定;对 gid 内部设优先级天花板避免反转。 - rate_limiter 联动
当 throttle_ms 上升,自动降低发送侧 QPS 以稳定 rho_*。
XI. NUMA 最佳实践
- 将 w(v) 与其数据源共址;pin(thr) -> numa_node(data)。
- 大页用于只读模型或长寿命缓存;避免频繁映射/拆分。
- 当 lat_remote 增大导致 P99 超限,优先迁移线程而非迁移数据路径。
XII. 故障围堵与恢复
- 软围堵
超配额先节流与降级,保留 crit(G) 资源,暂停新入队。 - 硬围堵
到达 max 阈值时强制终止最小影响集合(低 prio、无 hb 依赖的边缘线程),并生成 eid_killset。 - 恢复
逐步恢复 burst 与 K_thr,在 SLA_window 内验证 rho_* 回落与 P99 恢复。
XIII. 运行流程 Mx-5(上线步骤)
- 评估 WSS、lambda_io、cycles,设定 {R_cpu,R_mem,R_io} 与 headroom,并划定 iso_dom。
- 为 crit(G) 设定 affinity 与 prio;对其通道启用专用核或高 shares。
- 绑定接口:set_quota → reserve(可选)→ set_affinity;安装 IO 令牌桶与内存水位策略。
- 配置告警与合同断言;运行合规模拟,验证 S76-* 与 P76-*。
- 预热与观测 rho_*、P99、remote_ratio;若越阈,依序执行撤销 burst → 降 K_thr → 限流。
- 出厂验收:assert_thread_contract 通过;SLO 达标;留存审计与回放脚本。
XIV. 交付件与验收标准
- 资源基线表(域/图/线程三级)与 iso_dom 拓扑。
- 配额与策略配置(CPU shares、IO 令牌、内存水位、headroom、burst)。
- 亲和与优先级清单、crit(G) 专用核映射。
- 可观测性仪表与告警阈值、合同断言报告。
- 故障围堵与恢复预案、eid_killset 样例与回放记录。
版权与许可(CC BY 4.0)
版权声明:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(“屠广林”先生)享有。
许可方式:本作品采用 Creative Commons 署名 4.0 国际许可协议(CC BY 4.0)进行许可;在注明作者与来源的前提下,允许为商业或非商业目的进行复制、转载、节选、改编与再分发。
署名格式(建议):作者:“屠广林”;作品:《能量丝理论》;来源:energyfilament.org;许可证:CC BY 4.0。
首次发布: 2025-11-11|当前版本:v5.1
协议链接:https://creativecommons.org/licenses/by/4.0/