基础设施助力双11(一):X86 CPU的定制和演进

简介: 在这个奇迹不断的过程中,稳如磐石的基础设施也发挥了至关重要的作用,我们接下来会做一个基础设施助力双11的系列,给大家做一些技术分享,有兴趣的同学请持续关注噢。

导读

有一段话我们在不同场合不同时间说了很多遍了,但每次说的时候还是满满的自豪感:2017双11阿里技术能力再创新记录,交易峰值32.5万/秒,数据库处理峰值4200万次/秒 ,支付峰值25.6万/秒,是去年支付峰值的两倍以上,然而整个双11支付交易如丝般顺滑。在这个奇迹不断的过程中,稳如磐石的基础设施也发挥了至关重要的作用,我们接下来会做一个基础设施助力双11的系列,给大家做一些技术分享,有兴趣的同学请持续关注噢。

背景

双11的最终成功是一个从上层业务应用到底层服务器集群的庞大系统协同的结果,其中作为计算力输出主角的定制X86 CPU功不可没 。

双11只是阿里业务对计算需求的高速持续增长的一个缩影。而与之形成鲜明对比的是,支撑半导体工业50多年的摩尔定律在进入10nm工艺的门口逐渐放缓。英特尔的Tick-Tock处理器发展模式,即处理器的核心架构和制程工艺隔年升级,两年实现新架构和新工艺的更新迭代,也已延长为3年,改为P-A-O模式:即制程升级(Process)架构升级(Architecture)优化升级(Optimization)。因此,摩尔定律所带来的天然性能红利已经不足以支撑阿里计算需求快速增长。

虽然横向扩展(Scale Out)从技术上说能在一定程度上满足计算需求的增长,但是TCO(Total Cost of Ownership)从经济的角度限制了横向扩展的规模。TCO包括资本支出(CapEx)和运维支出(OpEx),两者相互关联,即CapEx的投入必然会带来相应的OpEx支出。 优化TCO通常有两个路径:提升单位CapEx所能获得的有效服务能力,或降低单位CapEx所连带的OpEx支出。两个路径共同边界为最优TCO结果下各自tradeoff的最优解。这就意味着在提供资源能力(计算、存储、I/O)总量不变的前提下控制横向扩展的规模,及提升资源的服务效率。

X86 CPU定制之路

在摩尔定律减缓,单纯依靠摩尔定律的红利无法支撑集团计算需求成长的背景下,同时又基于TCO考虑,横向扩展受限的条件下,我们把目光聚集到了业务负载和X86 CPU架构之间的匹配度上。

我们注意到CPU的设计目标是普适所有业务,其代与代之间性能提升约定俗成的用SPECCPU Benchmark工具跑分来诠释。该跑分本身是一组基于整形运算或者浮点运算的测试程序集合在特定权重因子加权后的得分,而所遴选的测试程序集合实质上尝试代表各个典型场景的负载,例如SPECCPU2006中整型测试集包含了12个测试程序,而浮点测试集中包含了17个测试程序。这些程序从编译效率、下棋游戏、量子计算模拟、到大型流体力学有限元分析、语音识别、分子模拟等,尝试覆盖处理器能力指标的方方面面。从通用的角度来看,这套价值体系逻辑上可以支撑普适的、综合的对于处理器性能表现的量化评估。而阿里的业务负载特征和SPECCPU所代表的负载特征有明显的区别, 这就意味着按照普适标准定义出来的CPU架构并不是最适合阿里业务场景的架构。这一差别蕴含着巨大的能效提升机会和TCO改善空间,CPU定制之路也就因此而开启。

阿里的CPU定制化之路经历了三个阶段,从最初的规格选型、规格定制,到现在的特征定制 ,这是一个从被动到主动,从以他为主到以我为主的历程。
image.png

###规格选型

规格选型的核心之意在于“选”,即CPU厂商提供一系列可选的SKU,我们依据自己的TCO模型选取最适合自己业务负载的SKU。严格意义上说,这并不属于定制范畴,但在相当长的一段时间里,这是包括阿里在内的互联网公司部署服务器CPU的主要途径。

具体来说,规格选型定义了一个多维度可配置空间,如图1所示(为了便于表示,图中只画了2个维度)。在这个多维空间中,CPU厂商选取了一些他们认为有价值的配置组合,并以SKU的形式呈现出来,供用户选择。

在这里,我们需要强调一下几点:

1)这些SKU配置维度都是非常粗粒度的,通常包括诸如内核数量,内核最高频率,末级高速缓存大小等宏观架构,并不会涉及微架构层面的配置。

2)在每个维度上,并不是所有的可能值都会有相应的SKU,同时,也并不是所有可能的配置组合都有相应的SKU呈现出来。是否提供某一SKU,完全是由CPU厂商依据通用的Benchmark决定的。

在这样的情况下,不难发现我们所期望的理想配置与所提供的SKU配置之间可能会有很大的距离。这一差别所造成的性能和功效的损失,随着摩尔定律对整体性能提升变缓,而显得越发突出。

image.png

图1 规格选型示意图

规格定制

规格定制迈出了以我为主的定制的第一步。它不再局限于CPU厂商所提供的默认的SKU配置选项,而是主动要求CPU厂商提供一个或多个 专门针对自身负载需求的新的SKU,如图2所示。这里我们在原有的配置维度上,引入了一个原先CPU厂商没有提供的配置组合。可以发现,规格定制后的CPU配置与理想配置之间的距离要比规格选型的小很多,这直接带来了可观的能效提升。

规格定制之所以成为可能,除了规格选型的弊端带来的压力以外,还有两点要强调:

1)互联网公司业务的爆发式增长所带来的它的数据中心服务器规模的急速增长。这意味着单家公司的CPU采购量足够大,使得CPU厂商愿意提供定制服务。

2)互联网公司对自身业务负载的计算需求理解加深,从而有能力在CPU宏观架构上提出自己的需求。

目前,所有在阿里数据中心运行的X86 CPU都是至少经过规格定制的。然而,规格定制仍然是粗粒度的定制,局限在CPU厂商所给出的有限的配置空间中,可选的余地比较小。理想配置和规格定制配置之间还有不小的距离。

image.png

图2 规格定制示意图

特征定制

特征定制摆脱了规格定制的局限,它可以让我们主动的在配置空间引入一个新的维度,并在这个维度上提出我们的功能需求,如图3所示。

在这里,我们可以有如下解读:

在规格定制中的所谓的理想配置,其实只是在那个所给的配置空间的“理想配置”,它实际上是在新引入的维度空间在规格定制空间上的一个投影。因此,规格定制的配置与理想配置的实际差别要比原先的大很多。相应的,规格定制的CPU只有在补上了特征定制的功能后才能缩小与理想配置的差别。

特征定制在X86 CPU上可以有多种实现形式,其中一种常用实现形式是通过微代码补丁,添加或修改一些特殊的能大幅提升业务性能的指令。

image.png

图3 特征定制示意图

展望

X86 CPU定制项目已经给集团带来了相当可观的收益,为阿里的各项业务,尤其是每年的双11提供了可靠的计算力保障。我们将进一步深入了解业务需求,夯实CPU定制的基础, 进一步细化定制程度。同时,我们也意识到,CPU定制只是打通了从业务负载到CPU架构的通路,如何充分利用现有CPU的各项特性来优化上层负载,是计算力输出的另一个重要环节。我们将协同各业务团队将这一环节进一步完善起来,从而形成一个负载到CPU架构到负载闭环,通过不断迭代来持续提供计算力升级。

目录
相关文章
|
Android开发
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
1000 0
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
|
监控 安全 算法
Intel、AMD CPU中发现新漏洞!黑客可通过“Hertzbleed”攻击窃取加密密钥|x86 CPU 节电模式均中招
Intel、AMD CPU中发现新漏洞!黑客可通过“Hertzbleed”攻击窃取加密密钥|x86 CPU 节电模式均中招
123 0
Intel、AMD CPU中发现新漏洞!黑客可通过“Hertzbleed”攻击窃取加密密钥|x86 CPU 节电模式均中招
|
Java Linux Android开发
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
157 0
【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
|
缓存 Android开发 异构计算
【Android 逆向】x86 CPU 架构体系 ( CPU 模型 | 内存模型 )
【Android 逆向】x86 CPU 架构体系 ( CPU 模型 | 内存模型 )
203 0
【Android 逆向】x86 CPU 架构体系 ( CPU 模型 | 内存模型 )
|
芯片
AMD不进一步对其中国合资公司授权x86 IP,国产CPU有未来吗?
AMD并未向其中国合资公司进一步授权芯片设计又一次证明,中国的芯片发展跟随别人的步伐将无法取得领先。
1114 0
|
开发框架 .NET 开发工具
检查.net dll构建的目标平台是any cpu、x86、x64
原文:检查.net dll构建的目标平台是any cpu、x86、x64 有时候,需要检查构建的dll是否针对正确的平台 可以使用CorFlags.exe(它是.NET Framework SDK的一部分)从dll中查找此信息。
1199 0
VS 的编译选项 build下的 platform target -- Any CPU和x86有什么影响?
VS 的编译选项 build下的platform -- Any CPU和x86有什么影响? 现在的问题是,我的一个assembly用Any CPU编译就不能在64位系统下运行了,但是用x86编译就ok   原因是如果用Any CPU编译,那么在64位机器默认的运行就是64位的, 而我的ass...
|
程序员
转载:x86的cpu_relax解析
原文:http://blog.liuw.name/1024 内核执行的任务在很多情况下是不加锁的,只是poll某个公有变量去保证同步。再深一步,即使是使用锁,本质上也是一个poll某个公有变量的过程。
1518 0
|
1月前
|
JSON Java Serverless
nacos常见问题之cpu和内存占用高如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
181 0