10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

数据中心的电力超售 · OSDI 2020

  • 2021-03-20
  • 本文字数:2493 字

    阅读完需:约 8 分钟

数据中心的电力超售 · OSDI 2020

『看看论文』是一系列分析计算机和软件工程领域论文的文章,我们在这个系列的每一篇文章中都会阅读一篇来自 OSDI、SOSP 等顶会中的论文,这里不会事无巨细地介绍所有的细节,而是会筛选论文中的关键内容,如果你对相关的论文非常感兴趣,可以直接点击链接阅读原文。


本文要介绍的是 2020 年 OSDI 期刊中的论文 —— Thunderbolt: Throughput-Optimized, Quality-of-Service-Aware Power Capping at Scale1,该论文实现的 Thunderbolt 可以在数据中心实现电力资源的超售,电子资源的超售可以使同一个数据中心运行更多的服务器,从而提高数据中心的整体性能并减少日常的维护开销、降低成本。


超售系统的目的都是降低成本并提高利用率,但是也都面临着资源过度使用的潜在可能,这也就需要引入限制和保护系统在影响系统之前或者之时及时止损,正如航空公司会超售机票一样,一旦超售的航班全满,就会采用升舱、换飞机或者赔偿等方式解决问题,避免事态的进一步恶化。



图 1 - 资源超售

现代的计算集群都会同时运行延时敏感型的在线服务和面向吞吐量的批处理工作负载,在运行期间一旦发生突发事件,我们会通过 Linux 内核的 CPU 限制等机制优先保证前者的延时,并在没有突发情况的机器上使用后者提高集群的资源利用率。


延迟敏感型的在线服务往往可以容忍宕机,但是它们需要保证程序执行期间有稳定的性能和资源,这些服务在遇到性能问题时更倾向于调度到其他资源充足的机器上;而面向吞吐量的批处理任务其实可以容忍资源的不稳定,但是一旦调度到其他机器上,可能需要重新计算,这就浪费了大量的计算和网络资源。



图 2 - 电力超售和混合部署

从调度的角度上来看,论文中 Thunderbolt 要解决的问题和混合部署、计算资源超售的场景非常相似,它们两者都希望保证集群中的两种类型服务的延迟和吞吐量,只是 Thunderbolt 会将电力资源作为约束条件,而后者的目的是更高的资源利用率,这也是作者对这篇论文感兴趣的原因。


Thunderbolt 使用如下所示的架构设计,图中的四个蓝色方块就是该系统的几个核心组件,我们能从图中清晰地看到该系统的数据流向:



图 3 - Thunderbolt 架构

上述架构中包含两个不同的电力限制路径,分别是根据实时数据决策的反应式限制(Reactive Capping)和被称为故障转移机制的主动式限制(Proactive Capping),这两种限制策略会在不同情况下触发。


  • 反应式限制:会监控电表发出的实时电力信号,当集群占用的电力功率高于特定数值时就会限制 CPU 的使用;

  • 主动式限制:当电力信号变得不可用时,主动式限制会接管整个系统,根据历史的数据评估机房断路器切断电源的风险,如果评估的风险过高,也会限制集群的 CPU 使用;

反应式限制

因为 CPU 的利用率能够很好地指示当前任务使用的 CPU 功率,所以我们可以通过限制 CPU 来降低整个集群中服务器消耗的电力。Thunderbolt 使用 Linux 内核的完全公平调度器(Completely Fair Scheduler)精确的控制节点中进程的 CPU 占用,以此来控制节点占用的资源:


独立的任务会运行在它们自己的 Linux 控制组(Cgroups)中,调度器提供了两个用于控制 CPU 使用量的参数,即 quota 和 period,其中 quota 是当前工作负载在每个 period 能够得到的执行时间,它们的单位都是微秒。如上图所示,当 quota 为 20,000、period 为 100,000 时,当前控制组中的任务在每 100ms 的时间周期中都会获得 20ms 的执行时间。


同一个节点上的不同任务会分别属于不同的控制组,我们可以通过调节它们的参数为不同的任务设置不同的服务质量。而 Thunderbolt 会利用上面这点将延迟敏感型的任务设置成高优先级,将面向吞吐量的的任务设置成低优先级,在电力资源不足时限制后者的 CPU 使用。



图 4 - 流量塑形

虽然我们会使用 CFS 限制工作负载的 CPU 使用,但是仍然需要上面的流量塑形控制策略决定应该何时限制以及如何限制 CPU 的使用量来控制集群的电力用量。在上述折线图中,包含两个不同的限制区域:


  • 硬限制区域:当节点的电力用量进入硬限制区域时,会将 CPU 的使用量减少 99% 防止过度使用资源,同时会立刻创建一段软限制区域;

  • 软限制区域:当节点的电力用量进入软限制区域时,会将 CPU 的使用量在一定时间内减少 25%,随后电力使用会在软限制区域区域下来回震荡,直到走出软限制区域;


软限制区域仅会在机器的能源使用进入硬限制区域时才会触发,同时会在一段时间后消失,减少对当前节点的电力资源的使用限制。

主动式限制

主动式的限制策略更像是一种故障转移的保护策略,当集群中的电表变得无法工作时,我们仍然需要保证集群的稳定。但是因为实时电力资源的缺失,我们没有办法使用上面的反应式策略,系统需要根据历史数据和服务质量决定每个任务分配的 CPU 资源。在这种策略下,使用 Linux 的 CFS 为工作负载动态分配资源是很难的,我们会直接将逻辑 CPU 从任务的 CPU 亲和(Affinity)中移除以减少资源的消耗。


与反应式策略仅会限制面向吞吐量的工作负载不同,当电表不能提供实时可用的数据时,CPU 的禁用会应用到集群中的全部的负载上,在这时我们只能牺牲在线服务的性能保证整个集群的电力安全,避免断电带来的大型事故。

总结

作为普通的软件工程师,在看这篇论文之前从来没有考虑过电力供应对数据中心带来的影响,也没有想过可以通过超售电力资源降低数据中心的成本。但是虽然我们没有遇到过这个问题,但是我们也可以从类似的问题中寻找答案,例如:集群中的计算资源超售和混合部署与论文中的场景有相似的解决方案。


这篇论文其实从不一样的角度开阔了我们的视野,让我们能从集群之外的物理世界考虑如何降低成本并提高能效,试想除了电力资源、计算资源的超售,我们还可以超售哪些资源呢,相信从这个角度出发,可以套用相似的逻辑解决不同的问题。


推荐阅读


  1. Li S, Wang X, Zhang X, et al. Thunderbolt: Throughput-Optimized, Quality-of-Service-Aware Power Capping at Scale[C]//14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20). 2020: 1241-1255. ↩︎


本文转载自:Draveness

原文链接:数据中心的电力超售 · OSDI 2020

2021-03-20 08:002227

评论

发布
暂无评论
发现更多内容

前端开发怎么学习才能更快的提高学习效率

@零度

大前端

HBase 和 Hive 的差别是什么,各自适用在什么场景中

编程江湖

大数据

MySQL「 Every derived table must have its own alias」1248 错误修复法

蒋川

数据库 MySQL 运维 MySQL 数据库

什么是云计算?云计算特点是什么?

行云管家

云计算 公有云 混合云 云资源

模仿UP主,用Python实现一个弹幕控制的直播间!

Zhendong

Python

做一款互联网内容平台,到底要懂多少AI?

百度开发者中心

AI

给弟弟的信第1封|兄弟是父母带给我们最好的礼物

大菠萝

28天写作

开始读 Go 源码了

AlwaysBeta

golang 源码 源码阅读 源码剖析 Go web

等保工作五大误区汇总,让你更懂等保!

行云管家

网络安全 等保 等级保护

mPaaS 月度小报|魔方卡片(Cube)公测,十个卡片模板任意使用

蚂蚁集团移动开发平台 mPaaS

小程序 消息推送 移动开发 API网关 cube

打造基于 PostgreSQL/openGauss 的分布式数据库解决方案

SphereEx

数据库 开源 分布式数据库 ShardingSphere SphereEx

火山引擎+焱融 YRCloudFile,驱动数据存储新增长

焱融科技

云计算 分布式 云原生 高性能 文件存储

软件工程师年满 40 岁,下一步怎么走?|本周话题

InfoQ写作社区官方

生涯规划 个人成长 职业规划 话题讨论

同态加密实现数据隐私计算,能让你的小秘密更加秘密

华为云开发者联盟

数据 加密 同态加密 联邦计算 数据隐私计算

复杂场景,从OpenTSDB迁移到TDengine的最佳实践

TDengine

数据库 tdengine

JVM中的对象及引用

Ayue、

技术专题合集

Go语言学习查缺补漏ing Day2

恒生LIGHT云社区

Go 编程语言

面对行业难题,华为云邀请物联网全行业拿出“亮剑”精神

华为云开发者联盟

IoT 华为云 LiteOS HarmonyOS IoT边缘

如何在 Flutter 中设置背景图像【Flutter专题15】

坚果

flutter 28天写作 签约计划第二季 12月日更

【Java】代码重构时,为什么禁止在方法内对对象类型的入参赋值

恒生LIGHT云社区

Java 代码规范 java代码规范

大数据开发技术应该怎么学习入门才好

@零度

大数据

Redis架构实战:高并发情况下并发扣减库存

编程江湖

java编程

青藤解密:72%客户容器规模>100个,[镜像安全]谁来保护?

青藤云安全

镜像安全

详解工作流框架Activiti的服务架构和组件

华为云开发者联盟

工作流 工作流引擎 BPM Activiti BPMN

CIO如何制定低代码/无代码战略

BeeWorks

莫要寻找可能不存在的答案

FunTester

学习 解决方案 自学 FunTester 思路

模运算和与运算的一点儿简单思考

LSJ

位运算 二进制

清空数组的几个方式

编程江湖

大前端

百度智能客服斩获 “金音奖—中国最佳客户联络中心技术与解决方案奖”

百度大脑

人工智能 智能客服

架构实战营 模块七作业

felix

「架构实战营」

滚雪球学Python系列,真能学会Python!

梦想橡皮擦

内容合集 签约计划第二季

数据中心的电力超售 · OSDI 2020_语言 & 开发_面向信仰编程_InfoQ精选文章