电话:0684-76196092
传真:027-812951522
邮箱:admin@ecmdj.com
地址:台湾省台湾市台湾区升事大楼480号
基础设施守护着企业内部重要 IT 设备的运行,同时也发生大量能耗。Facebook 作为世界上会见量第三大的网站,每月有高达 24.1 亿活跃用户(停止 2019 年),显然,Facebook 的能耗是极其庞大的。为了践行绿色、情况可连续生长的理念,Facebook 在这方面投入了很大的功夫。
本文讲述了 Facebook 是如何让其软件基础设施越发节能。本文最初揭晓于 Facebook Engineering 官方博客,由 InfoQ 中文站翻译并分享。随着企业规模的扩大,提高能源效率和淘汰情况影响成了我们数据中心团队的首要任务。通过开放盘算项目(Open Compute Project),我们谈了许多关于 Facebook 在节能硬件和数据中心设计方面取得的希望,但我们也开始研究如何提高我们软件的能源效率。
我们探索了多种方法,包罗功率建模和性能分析、峰值功率治理和能量比例盘算等。我们开发了一项特此外技术,这是一种名为 Autoscale 的节能负载平衡系统,已在生产集群中获得推广,并显示出显著的节能效果。节能负载平衡天天,Facebook 的网络集群都要处置惩罚数十亿个页面请求,这会提高服务器的使用率,尤其是在岑岭时段。Facebook 的默认负载平衡计谋是基于一个经由修改的循环算法(round-robin algorithm)。
这意味着每个服务器吸收的页面请求数量大致相同,使用的 CPU 数量也大致相同。因此,在事情负载较低的时候,特别是午夜时分,CPU 的整体使用率并不像我们期望的那样高。
例如,Facebook 一个特定类型的 Web 服务器在空闲时消耗约莫 60 瓦的功率(0 RPS,即每秒处置惩罚请求数)。当服务器的 CPU 使用率(PRS 值很小)较低时,功率将跃升至 130 瓦。但当服务器以中等水平的 CPU 使用率运行时,功耗仅略微增加到 150 瓦。因此,从能效的角度来看,我们应该只管制止以较低的 RPS 运行服务器,而是只管运行在中等水平的 RPS 下。
为相识决这一问题,并更有效地使用能量,我们改变了将负载分配到集群中差别 Web 服务器的做法。Autoscale 的基本思想是,负载平衡器将事情负载集中到某台服务器上,直到它至少有一其中等水平的事情负载,而不再是纯粹的循环方式。
如果整体事情负载较低(好比午夜时分),负载平衡器将只使用服务器的一部门。其他服务器可以仍处于空闲状态,也可以用于批处置惩罚事情负载。
虽然这个想法听起来很简朴,但对于一个大规模的系统来说,要有效地、稳定地实现这一想法,却是一个具有挑战性的任务。整体架构在每个前端集群中,Facebook 使用自界说负载平衡器将事情负载分配到 Web 服务器池。在实现 Autoscale 后,负载平衡器现在使用的是运动的,或者说是“虚拟的”服务器池,它本质上是物理服务器池的一个子集。
Autoscale 的设计是为了动态调整运动池的巨细,使每台运动服务器都能获得至少中等水平的 CPU 使用率,而无需思量整体事情负载水平,不在运动池中的服务器不吸收流量。图 1:Autoscale 整体架构我们将其形貌为反馈闭环控制(feedback loop control)问题,如图 1 所示。控制闭环首先从收集所有运动服务器的使用率信息(CPU、请求行列等)开始。凭据这些数据,Autoscale 控制器对最优运动池巨细作出决议,并将决议通报给负载平衡器。
然后,负载平衡器在运动服务器之间匀称地分配事情负载。它在下一个控制周期中重复这一历程。
决议逻辑反馈闭环的关键部门是决议逻辑。我们希望做出最优决议,以适应不停变化的事情负载,包罗因突发时间导致的事情负载激增或下降等情况。一方面,我们希望最大限度地使用节能时机。另一方面,我们不希望流量过分集中,以至于可能影响网站的性能。
为此,我们接纳了经典的控制理论和 PI 控制器来获得反映时间快、超调量小等最优控制效果。为了应用控制理论,我们首先需要对 CPU 使用率和每秒处置惩罚请求数(RPS)等关键因素的关系举行建模。为了做到这一点,我们举行实验来相识它们之间的相互关系,然后凭据实验数据来估算模型。
例如,图 2 显示了 Facebook 上一种 Web 服务器的 CPU 和 RPS 之间关系的实验效果。图中蓝点为原始数据点,红色虚线为估算模型(分段线性)。凭据获得的模型,然后用经典的稳定性分析法设计控制器,挑选出最优控制参数。
图 2:一种 Web 服务器的 CPU 与 RPS 关系的实验效果,红色虚线为估算的分段线性模型。部署与开端效果Autoscale 已被部署到 Facebook 的生产 Web 集群中,到现在为止,Autoscale 已被证明是乐成的。在当前阶段,我们决议要么让不运动的服务器处于空闲状态以节约能源,要么将不运动的容量重新用于批处置惩罚任务。这两种方式都提高了我们的整体能源效率。
图 3 显示的是 Facebook 的一个生产 Web 集群的效果。Y 轴是通过 Autoscale 在 24 小时周期内进入非运动模式的服务器的归一化数值。这些数值是凭据午夜时分非运动服务器的最大数量举行归一化的。
而且,正如我们所预期的那样,在岑岭期间,这个集群中的任何服务器都不能进入非运动模式。图 3:在 24 小时周期内,被 Autoscale 设置为非运动模式的 Web 集群中服务器的归一化数量在将非运动服务器进入省电模式时的节能效果方面,图 4 显示了我们其中一个生产 Web 集群的总功耗——相对于逐日最大功耗的归一化功耗值。
红线是在没有 Autoscale 的情况下,我们所能做的最好的。相比之下,蓝线显示的是使用 Autoscale 后的功耗。
在这个集群中,Autoscale 在午夜时分节约了 27% 的电能(正如预期的那样,岑岭时段节约的功耗为 0%)。在 24 小时周期内,差别的 Web 集群平均节能率约为 10~15%。在拥有大量 Web 集群的系统中,Autoscale 可以节约大量的能量。图 4:使用和不使用 Autoscale 的生产 Web 集群的功耗(经归一化处置惩罚)下一步我们在优化软件基础设施以提高能源效率方面仍处于早期阶段,我们还在继续在软件栈的差别条理上探索时机,以降低数据中心的功耗。
我们希望通过不停的创新,让 Facebook 的基础设施越发高效、越发环保且可连续。关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书!。
本文来源:亚博游戏娱乐平台官网-www.ecmdj.com
电话:0684-76196092
传真:027-812951522
邮箱:admin@ecmdj.com
地址:台湾省台湾市台湾区升事大楼480号