你的数据中心堵车了吗?

发布于 2021-09-08 08:13

上方 我吧


内容提要

以太网需要快速通道来防止交通堵塞,以免降低数据中心关键应用性能。英特尔 Ethernet 800系列网络适配器采用应用设备队列(ADQ)技术,为关键应用建立数据传输通道。ADQ可以显著提高关键应用程序的性能,在满足客户SLA方面提供更高的一致性保障。

数字经济要切实发挥作用需要新的数据基础设施,数据中心不断大规模扩展,以支撑海量数据的处理需求和更为复杂的工作负载。与此同时,网络对整个系统性能的影响也变得越发重要。以太网就像一条高速公路,使得数据可以在数据中心不同位置间进行传输。

然而,高峰时段,当有大量的交通工具(数据)驶入时,网络就会变得像蜗牛爬行一般。以太网需要快速通道来防止交通堵塞,以免降低数据中心关键应用性能。英特尔 Ethernet 800系列网络适配器采用应用设备队列(ADQ)技术,为关键应用建立数据传输通道。ADQ可以显著提高关键应用程序的性能,在满足客户SLA方面提供更高的一致性保障。



可预测性是关键



当我们在衡量数据中心性能时,大多数人最先考虑的是吞吐量和延迟之类的指标——每秒可以处理多少数据,一个操作需要多长时间?吞吐量和延迟当然是重要的指标,但它们都代表的是系统的平均性能。

可预测性则是针对系统异常值和突发值而言的。也可称之为“尾部延迟”,也就是性能曲线上最低或最差的数据。比如一个操作通常只需要1毫秒响应,但有时可能10毫秒才能响应,那么10毫秒就是尾部延迟。最关键的是系统的可预测性:尾部延迟发生的频率是多少?如果只有百万分之一的响应是(尾部)延迟的,即使扩展到多个系统,那么其也是高度可预测的。但是,如果每100个操作中就有一个尾部延迟响应,虽然对于单个系统来说可以接受,但当扩展到多个系统时,可预测性就不是很好了。

假设你驱车从高速路去机场,通常来说要花费半个小时,但有时要一个小时。那么,你会什么时候出发?保险起见,你总是会预留一个小时。要是有一条通往机场的快速专用道,半小时就能到达,而且你始终都能保持这个速度!这就是ADQ的本质——在高速公路上为最核心的应用程序提供快速专用通道。



ADQ快速通道保障以太网顺畅运行



事实上,数据中心远比机场高速公路复杂得多,因为数据中心采用并行计算。一个作业可能会被拆分成多个指令,并分配给几十台或几百台服务器完成。问题是,只有最后也就是响应最慢的那部分指令完成并返回结果,这个作业才算结束。这也就意味着涉及的服务器越多,结果返回越慢的可能性越高,从而降低整个作业的完成速度。因此,拆分出来的每个指令都必须是可预测的,这样整体作业的完成才可能获得一个合理的平均可预测值。其中,网络和网络软件在影响数据传输的时间上发挥着重要作用。

尽管横向扩展数据中心可以在性能和规模经济方面带来许多优势,但面临的挑战之一是,服务器越多,满足客户SLA一致性需求就越困难。

图1 :超过SLA目标延迟的概率

图1说明了随着服务器数量的增加,SLA服务水平的变化趋势。同时也表明,提高每台服务器的可预测性可以缓解这个问题,并允许在不超过目标响应时间的情况下部署更多服务器。

1、从扔硬币开始思考

要理解为什么增加更多服务器会让满足针对系统延迟的SLA变得更加困难,我们可以先来考虑一下抛硬币的情况。假设正面是成功,反面是失败。当我们反复抛硬币时,就可以根据预期的50%失败率提供SLA

现在来介绍一下并行处理,也就是一次抛多个硬币。如果抛两枚硬币,成功的概率(即全部正面)降低为1/4,抛出更多的硬币时,成功的概率会呈指数级下降,即1 / 81 / 161 / 32……依此类推。

同样,基于服务器的系统,随着并行请求数量的增加,在可接受的响应时间内获得每个响应的概率就会降低。

2、ADQ提升应用可预测性

ADQ是一种开放技术,旨在通过改善吞吐量和延迟来帮助解决网络流量难题,最重要的是,能够提高应用程序响应时间的可预测性。目前英特尔已经贡献出ADQ相关代码,以在 Linux 内核中支持这项新特性。同时,英特尔也在最新的Ethernet 800系列产品中首次引入了这项技术。

测试显示,与没有ADQ技术相比,启用ADQ后应用程序性能有显著提升。我们使用开源Redis数据库进行测试,结果表明,启用ADQ后,系统可预测性提升超过50%,应用延迟降低超过45%,吞吐量提升超过30%。

3、ADQ是如何工作的

我们不禁要问,同一测试环境下,为何会有如此大的提升和改进呢?是如何实现的呢?答案就在于ADQ是如何防止数据中心网络的交通堵塞。仍以机场高速公路举例,ADQ所做的就类似于在高速公路上预留快速车道,仅供酒店前往机场的客人使用。你不需要和去其他地方的车辆共用车道,这样行程也不会因为高峰时段的交通拥挤而减速。类似的,ADQ允许核心应用保留通道或队列,直达数据中心目标硬件设备,而无需与其他应用程序共享或抢占传输通道。

英特尔Ethernet 800系列适配器配备了2,048个专用硬件队列,可以将其配置为专用的ADQs或用作标准流量通道。系统管理员可以自定义为应用程序分配队列,从而为更高优先级的应用程序分配更多队列,以确保其高性能的可预测性。

在以前,只有针对特定应用程序使用用户态网络下的专有TCP/IP软件堆栈来绕开内核,才能达到这种性能水平。使用ADQ技术之后,以前通过用户态网络才能实现的性能,现在使用内核态网络同样可以达到。内核态网络是开源的,并能够利用Linux内核的固有优势,例如针对容器(containers)、网络过滤器(netfilters)以及其他TCP增强功能的可扩展伯克利包过滤器(extended Berkeley Packet Filter,eBPF)。

4、实现ADQ的条件

满足以下条件就可以实现ADQ部署。

表1 使用ADQ的环境需求

Intel已经将关键补丁更新到Linux内核以启用ADQ,目前Linux 4.19及更高版本中已包含这一补丁。其他操作系统的计划目前正在开发中。

标准的Linux操作系统工具就可用来配置ADQ ,比如说iproute2、流量控制(TC)、 网络端口设置(ethtool)和控制组(cgroup)等。

图2 测试ADQ性能的代表性应用场景

英特尔 Ethernet 800系列引入ADQ技术后最先支持的是NGINX,memcached,Redis和Aerospike等企业常见应用。

在大多数情况下,ISV会添加一些代码(通常少于50行C代码)来启用ADQ应用程序,并提供文档告知客户如何实现这一解决方案。,像开源Redis或Netperf/benchmark这样的单线程应用程序则不需要修改,那些需要修改和优化代码来支持ADQ的应用,Intel提供了一个最佳实践(best-known configuration,BKC)指南,详细说明了系统管理员如何为核心应用配置专用的ADQs。ADQ技术也将在通信、存储(如基于TCP的NVMe)和容器等领域得到更大范围的使用。



为企业铺设ADQ高速公路



流量堵塞会导致数据中心的关键应用程序性能降低,随着数据中心不断扩展,并行服务器数量的增加,某台服务器性能变慢导致整个应用变缓的可能性也在增加。提供和满足强SLA能力取决于应用程序性能的一致性,而一致性又取决于企业系统满足延迟目标的可预测性。

ADQ就像以太网高速公路上的快速车道,为企业关键应用提供快速专用车道,并使它们远离交通堵塞。事实证明,ADQ在应用程序性能方面可以获得更大的可预测性,此外还可以降低延迟并提高整体性能。使用支持应用设备队列(ADQ)技术的英特尔Ethernet 800系列正在为企业搭建更快、更可预测的网络,为数据中心构建一条高速公路!

文章来源:知乎

作者:海峰姐

网址:https://zhuanlan.zhihu.com/p/258725884






我们
了解更多精彩





END

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材