Skip to content

GPU 服务器供电与功耗治理:从电源冗余到 Power Capping ​

说明:本篇为综述/无第一手实验数据,采用公开硬件规格与运维实践路线。

实验目标 ​

万卡集群的功耗是"机房设计的输入"(01 章液冷篇提过功率密度),但运行期的功耗治理是另一回事:为什么同一批机器功耗波动很大?整机柜 220V 限流时谁先掉电?训练任务如何不踩功耗墙又能跑满? 本篇目标:拆解 GPU 服务器的供电与功耗治理——电源拓扑与冗余(N+1/2N)、整机功耗构成与实测方法、Power Capping(功耗上限)的设置与代价、以及"集群级功耗预算"如何与调度联动。读完能对"这台机器该设多高的功耗上限"给出量化答案。

代码逐段拆解 ​

第一段:整机功耗观测 ​

bash
# 节点级:整机功耗(电源模块读数,Linux 下通过 ipmi/powermeter)
# 1) 通过 ipmitool 读电源模块(PSU)功率
ipmitool sdr type 'Power Supply'      # 看电源健康与负载
# 2) 通过 powermeter(带外)读整机实时功耗(示例,型号相关)
ipmitool sensor list | grep -i power

# GPU 级:每张卡的实时功耗与功耗墙
nvidia-smi --query-gpu=index,power.draw,power.limit,power.max_limit \
           --format=csv

要点:

  1. 两级功耗读数:节点级(PSU/整机)用 IPMI 带外读,GPU 级用 nvidia-smi 读——治理时要能区分"整机功耗"与"GPU 功耗",因为 CPU/内存/风扇也占 15%-30%。
  2. power.limit 是当前功耗墙,power.max_limit 是硬件允许上限:GPU 出厂功耗墙可以下调(Power Capping),但一般不能超过 max_limit(除非刷自定义 vbios,有保修风险)。
  3. power.draw 是动态值:训练负载下 GPU 功耗接近功耗墙,空闲时掉到 10%-20%——集群功耗波动大的根源是"负载节奏"而不是硬件故障。

第二段:Power Capping 设置(nvidia-smi) ​

bash
# 把 GPU 功耗墙从默认 350W 压到 300W(示例:H100 类)
sudo nvidia-smi -pl 300 -i 0,1,2,3

# 持久化:写入 nvidia-persistenced 配置或 systemd 开机执行
# /etc/systemd/system/gpu-power-cap.service
# [Service] ExecStart=/usr/bin/nvidia-smi -pl 300 -i 0,1,2,3

要点:

  • -pl 是"软上限":GPU 自行调度降频以满足功耗墙,训练吞吐通常只掉几个百分点(峰值功耗段被削平),但整机柜限流场景下收益巨大——把"随机超限掉电"变成"稳定在预算内"。
  • Power Capping 的代价是尾部性能:压功耗墙 = 压 boost 频率,短突发计算(如小 batch 推理峰值)受影响比长稳训练大;推理服务压功耗墙要实测 P99 延迟变化。
  • 持久化是必须的:-pl 重启即失,需 systemd/持久化守护;且与驱动升级联动——升级驱动后功耗墙可能回到默认,验收清单里要有"功耗墙复核"。

原理讲解 ​

供电拓扑与冗余 ​

GPU 服务器通常 2-4 个电源模块(PSU),供电拓扑决定"掉一个电源会怎样":

冗余级别含义场景
N+1在线 N 个 + 1 个备用容量数据中心主流:掉一个 PSU 不影响运行
2N双路独立供电(A/B 路)关键业务:一路市电/一路 UPS
无冗余满载运行,掉一个就限功率低成本/边缘

关键认知:冗余是"容量冗余"不是"永远在线"——N+1 时掉一个 PSU,机器靠降载(GPU 降频)继续跑而不关机;2N 时单路断电机器无感。机柜层面还有"总进线限流":整柜 220V×63A ≈ 14kW,机柜内所有机器的功耗和不能超——这是 Power Capping 的真正驱动力。

整机功耗构成与治理空间 ​

典型 8×GPU 服务器(估算口径):

部件功耗占比治理手段
GPU ×870%-80%Power Capping、驱动节能
CPU8%-12%频率/核心调度
内存/存储3%-5%少
风扇/散热5%-10%液冷替代风冷、风扇策略

治理优先级:GPU 功耗墙(最大头、可控)> 散热方式 > CPU 节能。GPU 功耗墙 300W vs 350W 每卡省 50W,8 卡机省 400W,一个 1000 卡的集群每机柜(约 16 台)就能空出近 1 个机柜的供电余量——前提是吞吐损失可接受。

集群级功耗预算与调度联动 ​

机柜进线预算(如 14kW)
  → 每台机器功耗上限 = 预算 / 机柜台数 × 冗余系数
  → 映射到 GPU 功耗墙(nvidia-smi -pl)
  → 调度器感知:SLURM/K8s 按功耗墙登记节点功耗,防止"满载节点叠加导致机柜跳闸"

理想闭环:功耗墙设好后,调度器把"节点当前功耗"作为资源维度——新任务调度到功耗余量足够的节点,而不是只看 GPU 数。这需要监控侧(02 章 DCGM 功耗指标)提供实时功耗,调度侧按功耗余量过滤候选节点。

实验结果 ​

(估算口径,非实测;以 H100 类 8 卡机为例)

功耗墙设置单卡峰值训练吞吐影响机柜余量(1000 卡集群)
默认 350W~350W0%基准
320W~320W~1%-3%约省 1 个机柜
300W~300W~3%-8%约省 2 个机柜

工程启示 ​

  1. 先量后治:整机功耗(IPMI)+ GPU 功耗(smi)两级测量先跑两周,摸清负载节奏再设墙——不要拍脑袋压功耗。
  2. 功耗墙是"机柜限流下的保险"而非"省电手段":省电收益一般(GPU 空闲时本身会降功耗),真正价值是防止机柜跳闸与降低峰值电费。
  3. 推理压墙必测 P99:功耗墙削的是 boost 峰值,推理的尾部延迟最敏感;压墙前后对比 P99,掉超 10% 就不值得。
  4. 与监控/调度联动:功耗墙是"静态设置",实时功耗是"动态资源"——调度器感知功耗余量才能把机柜预算用满而不跳闸(02 章 DCGM 篇的功耗指标在此衔接)。

下一篇预告:单机能耗治理讲完,回到集群整体效率——"GPU 集群利用率治理:碎片、排队与调度效率"。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com