简介:这份白皮书由腾讯联合英特尔、中国电信等伙伴完成,聚焦数据中心算力与电力灵活性协同这一前沿议题,面向数据中心运维、能源管理及电力需求响应领域的研究者与工程人员,探讨如何在不影响业务运行的前提下,通过智能管控计算负载实现电力负荷的灵活调节。资源包共1个PDF文件,约2.22MB,内容涵盖执行概要、背景、灵活性策略设计与测试结果、对下一步研究的启示及未来展望等完整章节。目前已有251人学习。读者可从中获取空载服务器功耗状态切换、利用硬件资源消耗不均衡性、平移伸缩实时性不敏感任务、跨数据中心转移任务等具体策略的实测数据与秒级功率控制结论,并了解业务—算力—电力三者联动的自动化系统构想与标准化测试方法,为数据中心参与需求侧响应及电力市场提供可行性依据与技术参考。
1. 算力即电力:为什么服务器能当电网的“充电宝”
一台服务器空载时功耗 215W,其中 CPU 吃掉 53%、内存吃掉 21%——这个数字本身不稀奇,稀奇的是它意味着什么:只要让 CPU 从满血降到某个功率上限,整机功耗就能在秒级掉下来,而业务代码一行都不用改。数据中心过去一直被当成“刚性负荷”,供电按铭牌功率配、负荷不可调,电网调度看它就像看一块铁板。但算力天然具备可观、可测、可即时调节三个属性,电力是由算力程序驱动电子元件消耗出来的,调算力就是调电力,不需要加任何硬件。这份关于算力-电力灵活性协同的研究,核心就在回答一个问题:在不影响业务的前提下,服务器集群的功率到底能被压多深、压多快、压多久。搞懂它,你就理解了“算力跟随电力”这件事的底层可行性边界在哪里。
2. 三种调节策略:功率到底从哪个部件里挤出来
2.1 空载服务器功耗状态切换:响应最快但深度有限
数据中心里总有一部分服务器处于空载备用状态,它们不跑任何业务,却实打实耗着电。研究测得的单机空载功耗是 215W,CPU 占 53%、内存占 21%、其余部件占 26%。这部分电在业务视角下是纯冗余,所以拿它开刀最安全——不涉及任何业务逻辑,只改电源状态。
研究对比了三种切换方式,结论差异很大:
| 方式 | 功率降低 | 降低比例 | 响应速度 |
|---|---|---|---|
| Freeze(冻结进程) | 9W | 4% | <1s |
| PowerCap(CPU 功率上限) | 57W | 27% | <1s |
| 软关机 | 215W | 100% | ~3min |
Freeze 只降 4%,因为冻结的是进程调度,CPU 仍处于供电待命状态,能省下的只是动态功耗那一小截。PowerCap 降 27%,原理是通过带外管理接口给 CPU 设一个功率墙,CPU 内部的分频和电压调节机制会把实际功耗压到墙以下,这是“秒级响应 + 可观深度”的最佳平衡点。软关机降 100% 但需要约 3 分钟,开关机本身还要额外消耗 0.0083kWh,适合做长时间尺度的容量腾挪,不适合秒级响应。
这里的设计取舍很清楚:响应速度和调节深度是一对矛盾。Freeze 快但浅,关机深但慢,PowerCap 卡在中间。实际调度系统里,这三者应该按响应邀约的时间尺度分层使用——秒级邀约走 PowerCap,分钟级走关机,小时级可以组合。
2.2 子部件不均衡性:找“长板”下手,别碰“短板”
任何一个业务负载跑在服务器上,总有一个子部件先成为瓶颈——CPU 密集型任务把 CPU 打满,硬盘、网络、内存却闲着;硬盘密集型任务反过来。那些闲置的“长板”部件,供电是默认给足的,但业务根本用不上那么多,这就是可压缩的电力冗余。
研究用三类模拟负载验证了这个思路。硬盘密集型用dd持续写文件,同时用 PowerCap 逐步压 CPU 功率:
# 用 dd 模拟硬盘 I/O 密集型负载:反复写入 512MB 文件 # 同时通过 PowerCap 逐级下调 CPU 功率上限,观察写入速度是否变化 for cap in 215 200 180 160; do # 设置 CPU 功率墙(单位 W),带外接口下发 set_cpu_power_cap $cap # 记录三次 512MB 写入的平均耗时与平均速度 for i in 1 2 3; do dd if=/dev/zero of=/data/testfile bs=1M count=512 oflag=direct done done关键在oflag=direct:绕过页缓存,让写入真正打到磁盘,否则测出来的全是内存速度。测试结果是 CPU 功率从 215W 压到 160W,降幅 26%,硬盘写入速度纹丝不动。原因很直白——dd的瓶颈在磁盘 I/O,CPU 只是在旁边做数据搬运,给它降频不影响磁盘转不转。
内存密集型用memtester制造不同带宽占用水平,结论更有意思:内存带宽占用 74% 时服务器初始功率 313W,可压缩 18%;占用 47% 时 278W,可压缩 8%;占用 28% 时 255W,可压缩 2%。也就是说内存压得越满,CPU 功率反而越有压缩空间——因为内存带宽成了瓶颈,CPU 算得再快也得等数据,降它的频不影响整体吞吐。
CPU 密集型用 Linpack,结论是反面教材:功率从 363W 降到 232W,计算耗时从 1377 秒涨到 2303 秒,没有任何“平台区域”。CPU 就是瓶颈本身,压它就是压性能。这告诉我们一个硬边界:只能压非瓶颈部件的冗余,瓶颈部件的功率和性能是绑死的。
2.3 平移与伸缩:把任务当水,挪时间也挪规模
实时性不敏感的任务——科学计算、视频渲染、AI 训练——有个宝贵特性:可以断点续算,可以改并行规模。研究把这类任务分成两种拓扑来测。
子任务独立型(各节点算各的,互不通信)用了一个白车身轻量化的多学科优化任务,20 个设计变量分布到多节点并行。三种跑法:2 节点基线耗时 10 分 27 秒、总功耗 118Wh;2 节点跑一半缩到 1 节点续算,13 分 49 秒、123Wh;2 节点跑一半扩到 3 节点,9 分 54 秒、125Wh。总耗电和总时长几乎不变,说明独立型任务的扩缩容是线性的,挪时间、改规模都不亏。
子任务耦合型(节点间要通信同步)用 VASP 材料模拟程序测。2 节点 52 分 41 秒、511Wh;4 节点 41 分 42 秒、753Wh;4 节点平移(中断等待后续算)37 分 7 秒、623Wh;4 节点缩到 2 节点续算 45 分 35 秒、661Wh。注意 4 节点比 2 节点总功耗反而更高——并行度上去了,总能量不一定降,因为通信和同步本身也耗电。耦合型任务的算力-电力关系是非线性的,扩缩容的收益要算通信开销这笔账。
3. 秒级响应的实现链路:从指令到功率墙落地
3.1 带外管理通道是响应速度的物理基础
为什么 PowerCap 能做到秒级?因为它走的是带外管理路径,不依赖操作系统内的代理进程。研究用的管理平台能通过带外接口高频读取 CPU 和内存的实时功率,PowerCap 模块可以把功率限制精确到单核、毫秒级下发。这条链路的层次是:管理平台 → 带外接口 → 服务器基板管理控制器 → CPU 内部的电源管理单元 → 实际频率电压调整。每一层都是硬件或固件级通路,没有操作系统调度延迟,所以指令下发到功率变化能在秒内完成。
对比之下,Freeze 走的是操作系统进程调度,软关机走的是完整关机流程,响应速度自然分层。这个分层不是缺陷,是设计上的必然——越靠近硬件的控制越深越快,越靠近软件的控制越灵活但越慢。
3.2 监测数据从哪来:Linux 工具链的角色
功率调节的前提是知道当前各部件在干什么。研究用了两类监测手段:带外平台读整机和关键部件功率,Linux 系统工具读使用率:
# 采集各子部件实时压力,作为判断“谁是瓶颈”的输入 mpstat -P ALL 1 # 每核 CPU 使用率,判断 CPU 是否饱和 free -m # 内存用量与可用量 iostat -x 1 # 磁盘 I/O 利用率与队列深度,判断硬盘是否瓶颈 nicstat 1 # 网络吞吐与利用率这几个命令的输出要联合看:iostat的%util接近 100% 说明磁盘是短板,此时压 CPU 安全;mpstat各核%usr都接近 100% 说明 CPU 是短板,压它必然掉性能。判断逻辑本质是一个“找瓶颈”的分类器——先定位短板,再决定压哪个长板。这套判断如果做成自动化,就是研究里说的“联动业务-算力-电力三者信息”的雏形。
3.3 断点续算的工程前提
平移和伸缩策略能成立,靠的是应用层的断点续算能力。有些程序原生支持,有些靠 MPI 的 checkpoint/restart 机制实现。checkpoint 的本质是把进程的完整内存状态和寄存器状态落盘,restart 时从盘上恢复。这里有个容易被忽略的成本:checkpoint 本身要写盘、要暂停计算,频繁做 checkpoint 会吃掉平移带来的收益。所以平移策略的调节粒度不能太细,得在“响应精度”和“checkpoint 开销”之间找平衡点。研究里平移测试的等待时间是分钟级,这个尺度下 checkpoint 开销占比可以接受。
4. 避坑与排查:实测里最容易翻车的几个点
4.1 压了 CPU 功率,业务延迟反而没降
现象:对某任务压 CPU 功率后,整机功耗降了,但业务侧 P99 延迟明显上升。原因:该任务表面看是 I/O 型,实际在数据预处理阶段有短时 CPU 尖峰,压功率墙后尖峰被削,排队延迟放大。解决:压功率前先跑一轮全链路 profiling,确认没有隐藏的 CPU 密集阶段;对混合型负载按时间段分别设功率墙,而不是全程一个值。
4.2 空载判定错误,把低负载当空载
现象:按“CPU 使用率低于阈值”判定空载并切 Freeze,结果某些长连接服务被冻结后客户端超时。原因:CPU 使用率低不等于无业务,心跳、保活、定时任务都可能是低频但关键的负载。解决:空载判定要结合连接数、QPS、最近请求时间多维度判断,不能只看 CPU;Freeze 前先做 drain,把流量摘干净再冻。
4.3 扩缩容后总功耗不降反升
现象:把耦合型任务从 2 节点扩到 4 节点想提速,结果总功耗从 511Wh 涨到 753Wh。原因:并行度提高带来通信和同步开销,节点间数据交换本身耗电,且短任务摊薄不了启动成本。解决:耦合型任务的扩缩容要先测通信占比,通信密集的任务扩节点是负收益;优先用缩容和平移,扩容只在任务时长足够长、通信占比低时用。
4.4 只看整机功率,忽略部件级功率分布
现象:整机功率降了 20%,以为万事大吉,实际是 CPU 降了但内存和硬盘功率没动,整体能效比没改善。原因:整机功率是各部件之和,压一个部件掩盖了其他部件的冗余。解决:监测要下沉到部件级,分别看 CPU、内存、硬盘、网络的功率曲线,找出真正没被利用的部件再下手。
4.5 响应指令下发后没有闭环校验
现象:下发 PowerCap 后以为生效了,实际因为带外通道偶发超时,功率墙没落地,响应邀约时段内负荷没降下来。原因:控制链路是开环的,指令发出不等于执行成功。解决:每次下发后回读实际功率值做闭环校验,偏差超过阈值就重试或告警;响应期间持续采样,确保整个邀约窗口内功率维持在目标区间。
5. 设计取舍:为什么“算力跟随电力”比“电力跟随算力”难落地
这套研究最值得琢磨的不是那几组功率数字,而是它暴露出的一个结构性矛盾:数据中心的供电配置一直基于铭牌功率,负荷被当成刚性不可调,整个基础设施是按“电力跟随算力”建的——算力要多少,电力供多少。要反过来让“算力跟随电力”,缺的不是调节手段,而是三层信息的打通。
第一层是业务-算力的映射。同一个业务在不同机型上的电力特性不一样,研究里明确提到需要一套标准测试方法标定业务负载在机型上的电力特性数据,并开源共享。没有这层标定,调度系统不知道压哪个部件、压多少是安全的,只能保守地不压。
第二层是算力-电力的实时关联。功率墙下发和业务性能监测必须在同一个时间窗口内闭环,否则就是盲调。这要求监控系统同时采集带外功率数据和带内性能数据,并在秒级对齐时间戳。
第三层是电力-业务的决策联动。电网发来响应邀约,系统要能自动判断:当前哪些任务可平移、哪些服务器可压功率、压多少不影响 SLA、响应收益是否覆盖风险。这是一个多目标优化问题,业务性能、电力收益、响应可靠性三者要联合求解。
我的判断是,短期内最现实的落地路径是策略一和策略二的常态化组合——空载服务器 PowerCap 加非瓶颈部件功率压缩,能在业务无感知的前提下拿到 2% 到 27% 的负荷深度,这部分不需要改业务代码,只需要管理平台和调度系统对接。策略三的平移伸缩适合有大规模批处理任务的数据中心,但前提是应用层已经具备断点续算和弹性并行能力,改造成本不低。
验证这套机制是否真的 work,我一般会这么走一遍:先单机测出目标业务的性能-电力特性曲线,找到“压功率不掉性能”的平台区;再在集群上验证多机同时压功率时,网络和存储的聚合带宽会不会成为新瓶颈;最后做一次完整的响应演练,从指令下发到功率落地到业务指标回读,全链路计时。任何一环超时或偏差,都说明自动化系统还没到位。
从那以后我每次评估数据中心的电力灵活性,都强制先问三个问题:瓶颈部件是谁、断点续算开销多大、闭环校验链路通不通。这三个问题答不上来,再漂亮的功率曲线都是纸面数字。希望帮到你。
本文还有配套的精品资源,点击获取