Cloudflare选择第十代边缘服务器的AMD处理器



每天有超过十亿个唯一IP地址通过Cloudflare网络;每秒可处理超过1100万个HTTP请求。它与95%的互联网人口之间的距离不超过100毫秒。我们的网络遍及90多个国家/地区的200个城市,我们的工程团队已经建立了极其快速和可靠的基础架构。

我们为我们的工作感到自豪,并致力于帮助使互联网更好,更安全。从事与硬件相关的Cloudflare工程师精通服务器及其组件,以了解和选择最佳设备以最大化其效率。

我们的软件堆栈处理高负载计算,并且非常依赖CPU速度,这就是为什么我们的工程师必须在堆栈的各个级别上不断优化Cloudflare的效率和可靠性。在服务器端,最简单的方法是通过添加CPU内核来提高计算能力。您可以在服务器中容纳的核心越多,它可以处理的数据就越多。这对我们很重要,因为我们的产品和客户的多样性随着时间的推移而增长,并且请求的增长要求服务器提高生产率。为了提高它们的生产率,我们需要增加核的密度-而这正是我们已经完成的。下面提供了自2015年以来一直在部署的服务器的处理器数据的详细信息,包括内核数:

---第六代第七代第八代第9代
开始工作2015年2016年2017年2018年
中央处理器英特尔至强E5-2630 v3英特尔至强E5-2630 v4英特尔至强银4116英特尔至强白金6162
物理核心2 x 82 x 102 x 122 x 24
技术开发计划2 x 85瓦2 x 85瓦2 x 85瓦2 x 150瓦
每核心TDP10.65瓦8.50瓦7.08瓦6.25瓦


在2018年,我们在第9代中每台服务器的内核总数有了巨大飞跃。与第8代相比,对环境的影响减少了33%,这使我们有机会增加每个机架的体积和计算能力。提到了热设计功率(TDP)设计要求,以强调我们的能源效率也随着时间而增长。该指标对我们很重要:首先,我们希望向大气中排放更少的碳;其次,我们要充分利用数据中心的能源。但是我们知道我们必须努力。

我们的主要定义指标是每瓦的请求数量。我们可以通过添加内核来增加每秒的请求数量,但是我们需要保持在能源预算之内。我们受到数据中心电源基础架构的限制,它与我们选择的能源分配模块一起为每个服务器机架提供了一定的上限。将服务器添加到机架会增加功耗。如果我们超出机架的能量极限,并且必须添加新的机架,则运营成本将急剧增加。我们需要增加计算能力,并保持在相同的能量范围内,这将增加每瓦特的请求数量-这是我们的关键指标。

您可能已经猜到了,我们在设计阶段仔细研究了能耗。上表显示,如果每个内核的TDP高于当前一代,则我们不应该浪费时间部署更多耗能的CPU-这将对我们的指标(每瓦请求数)产生负面影响。我们仔细检查了市场上X代的现成操作系统,并做出了决定。我们正在从具有48个Intel Xeon Platinum 6162内核和两个插槽的电路过渡到具有一个插槽的48核AMD EPYC 7642。



---英特尔AMD公司
中央处理器至强白金6162EPYC 7642
微架构“ Skylake”“禅宗2”
代码名称“ Skylake SP”“罗马”
工艺技术14纳米7纳米
核心数2 x 2448
频率1.9 GHz的2.4 GHz
三级缓存/插槽24个1.375MiB16 x 16 MiB
内存/插槽6个通道,高达DDR4-24008通道,最高DDR4-3200
技术开发计划2 x 150瓦225瓦
PCIe /插槽48车道128车道
伊萨x86-64x86-64


从规格上可以明显看出,AMD的芯片将允许我们保留相同数量的内核,从而降低了TDP。在第9代中,每个内核的TDP为6.25瓦,在第X代中为4.69瓦。减少了25%。由于频率的提高,并且可能是带有单个插座的更简单的电路,我们可以假设AMD芯片在业务上将变得更好。在我们进行各种测试和模拟时,以了解AMD的性能会更好。

同时,我们注意到TDP是制造商规格的简化指标,我们在服务器设计和CPU选择的早期阶段就使用了TDP。Google的快速搜索表明AMD和Intel在TDP的定义上有不同的方法,这就是为什么此规范不可靠的原因。CPU的实际功耗,更重要的是服务器的功耗,是我们做出最终决定时真正使用的功耗。

生态系统准备


在选择下一个处理器的旅程的开始,我们研究了来自不同制造商的各种CPU,这些CPU非常适合我们的软件堆栈和服务(用C,LuaJIT和Go编写)。我们已经在博客中的文章中详细描述了一组用于测量速度的工具。在这种情况下,我们使用了相同的集合-它使我们能够在合理的时间内评估CPU的效率,然后我们的工程师可以开始将我们的程序适应特定的处理器。

我们测试了具有多种内核,插槽和频率的各种处理器。由于本文描述了我们为何选择AMD EPYC 7642的原因,因此本博客中的所有图形都将重点放在AMD处理器的性能方面,与之相比,我们的第9代

结果对应于使用每种处理器变型的一台服务器的运行情况的测量结果,即使用Intel的两台24核处理器或AMD的一台48核处理器(用于Intel的服务器具有两个插槽,用于AMD EPYC的服务器具有一个插槽)。在BIOS中,我们设置与工作服务器相对应的参数。对于AMD为3.03 GHz,对于英特尔为2.5 GHz。我们非常简化,我们希望在具有相同内核数量的情况下,AMD的结果将比英特尔好21%。

密码学






对于AMD来说,它看起来很有希望。它在公钥加密方面的效果要好18%。使用对称密钥,它不会获得AES-128-GCM加密选项,但总的来说,它具有可比性。

压缩


在边缘服务器上,我们压缩大量数据以节省带宽并提高内容交付的速度。我们通过zlib和brotli C库传递数据。所有测试均在内存中的blog.cloudflare.com HTML文件上进行。





使用gzip时,AMD平均赢得29%的收入。对于brotli,在质量7的测试中,结果甚至更好,我们将其用于动态压缩。brotli-9测试发生了急剧下降-我们将其归因于Brotli占用大量内存并导致缓存溢出的事实。但是,AMD大获全胜。

我们的许多服务都是用Go编写的。在下图中,我们使用字符串库在32 KB行上使用RegExp重新检查了Go的加密和压缩率。

密码学




去压缩






去正则表达式






去弦




AMD在所有Go测试中均显示出最佳结果,除了ECDSA P256 Sign落后38%,这很奇怪-考虑到它在C语言中显示了24%的更好结果。弄清楚那里发生了什么是值得的。但总的来说,AMD赢不了多少,但仍然显示出最好的成绩。

路易吉特


我们经常在堆栈中使用LuaJIT。这是固定Cloudflare各个部分的粘合剂。我们很高兴AMD在这里赢得了胜利。

总的来说,测试显示EPYC 7642的性能优于两个Xeon Platinum6162。AMD在一系列测试中均输掉了-例如AES-128-GCM和Go OpenSSL ECDSA-P256 Sign-但是,它在所有其他测试中均获胜,平均降低25% 。

工作量模拟


在进行快速测试之后,我们通过另一组模拟对服务器进行了运行,其中将综合负载应用于软件边缘堆栈。在这里,我们使用在实际工作中可以找到的各种查询来模拟脚本的工作量。请求在数据量,HTTP或HTTPS协议,WAF,Workers来源以及其他各种变量中有所不同。下面是对我们最常发现的请求类型的两个CPU吞吐量的比较。



图表上的结果由第9代装有Intel处理器的计算机的基本指标测量,并沿x轴标准化为1.0。例如,通过HTTPS接收10 KiB的简单请求,我们可以看到AMD在每秒请求数方面比Intel好1.5倍。在给定的测试中,AMD平均表现比英特尔好34%。考虑到唯一的AMD EPYC 7642的TDP为225 W,而对于两个Intel处理器-300 W,事实证明,在“每瓦请求数”方面,AMD的结果是Intel的2倍!

在这一点上,我们显然倾向于为AMD EPYC 7642选择单个插槽作为X世代的未来CPU。我们对了解AMD EPYC服务器在实际工作中的表现非常感兴趣,我们立即将多台服务器发送给了一些服务器。来自数据中心。

实际工作


当然,第一件事是准备服务器在实际条件下工作。我们车队中的所有机器都使用相同的流程和服务,这是正确比较性能的绝佳机会。与大多数数据中心一样,我们部署了几代服务器,并且将服务器组装在群集中,因此每个类都包含大约同一代的服务器。在某些情况下,这可能导致群集之间的利用率曲线发生变化。但是不支持我们。我们的工程师针对各代产品优化了CPU利用率,因此无论CPU在特定计算机上是8核还是24核,CPU的利用率通常与其余部分没有什么不同。



该图说明了我们对利用率的相似性的评论-Gen X服务器中使用AMD CPU与Gen 9服务器中使用Intel处理器之间没有显着差异,这意味着测试服务器和核心服务器的负载均相等。精细。这正是我们在服务器工作中实现的,我们需要此来进行诚实的比较。下面的两个图形显示了一个CPU内核以及服务器级别上所有内核处理的请求数。





服务器的查询对服务器的查询

可以看出,平均而言,AMD处理的请求增加了23%。一点也不差!我们经常在博客上撰写有关提高第9代性能的方法的信息。这里我们拥有相同数量的内核,但是AMD可以用更少的精力完成更多的工作。从核心数量和TDP的规格中可以立即看出,AMD提供了更高的速度和更高的能源效率。

但是,正如我们已经提到的,TDP不是标准规范,并且对于所有制造商而言都不相同,因此让我们看一下能源的实际使用情况。通过并行测量服务器的能耗和每秒的请求数,我们得到下图:



通过每瓦特每秒消耗的请求数量,AMD处理器上的Gen X服务器的效率提高了28%。鉴于AMD的TDP降低了25%,人们可能会有更多期望,但是,应该记住TDP是一个模糊的特征。我们看到AMD的实际能耗几乎与指示的TDP一致,而其频率远高于基准频率。英特尔没有。这是为什么TDP不能可靠地估算能耗的另一个原因。第9代服务器中的Intel CPU已集成到多代码系统中,而AMD CPU在标准1U尺寸服务器中工作。这不利于AMD,因为多节点服务器应提供更高的密度,而每个节点的能耗却更低,但是就每个节点的能耗而言,AMD仍然优于Intel。

在规格,测试模拟和实际工作的大多数比较中,事实证明1P AMD EPYC 7642的配置要比2P Intel Xeon 6162更好。在某些情况下,AMD的性能可以提高36%,我们相信,通过优化硬件和程序,我们可以我们可以不断取得这样的进步。

事实证明,AMD赢了。

其他图表显示了NGINX操作24小时的平均延迟和p99延迟。平均而言,AMD进程的运行速度提高了25%。在p99时,根据一天中的时间,运行速度会提高20-50%。

结论


Cloudflare的硬件和性能工程师正在进行大量测试和研究,以为我们的客户选择最佳的服务器配置。我们喜欢在这里工作,因为我们可以解决这些繁重的任务,还可以帮助您解决诸如无服务器边缘计算和一系列安全问题解决方案之类的服务问题,尤其是Magic Transit,Argo Tunnel和DDoS保护。 Cloudflare网络中的所有服务器均已配置为可靠运行,我们一直在努力使每一台下一代服务器都比上一台更好。我们相信AMD EPYC 7642是为Gen X选择处理器的问题的答案。

通过使用Cloudflare Workers服务,开发人员可以在我们的网络上部署其应用程序,并在全球范围内扩展。我们为能够为客户提供专注于编写代码的机会而感到自豪,同时我们致力于云中的安全性和可靠性。今天,我们更加高兴地宣布,他们的工作将部署在运行第二代AMD EPYC处理器的X代服务器上。


EPYC 7642处理器,代号为“罗马” [罗马]

使用AMD的EPYC 7642,我们能够提高速度并促进网络向新城市的扩展。罗马不是一天建成的,但很快它将与你们中的许多人更近。

在过去的几年中,我们尝试了许多来自Intel和AMD的x86芯片以及来自ARM的处理器。我们希望在将来,这些CPU制造商将与我们合作,以便我们可以共同构建一个改进的Internet。

All Articles