Fungible:以数据为中心时代来临

Fungible:以数据为中心时代来临

Fungible 软硬件融合 5月23日

收录于话题

#DPU/IPU

10个

编者按:

Fungible是我非常推崇的一家DPU技术公司(当然,这并不代表我100%赞同Fungible的所有观点)。DPU这个概念是Fungible最先提的,然后被NVIDIA发扬光大。Fungible有两款DPU芯片发布,支持自主设计的FCP高性能网络协议。这一期,我们一起来学习Fungible DPU相关的技术。

欢迎关注“软硬件融合”公众号:

Fungible:以数据为中心时代来临

软硬件融合

CPU灵活性好但性能较差,ASIC性能极致但灵活性差,鱼和熊掌如何兼得,同时兼顾性能和灵活性,我给出的方案是“软硬件融合”。软硬件融合不是说要软硬件紧耦合,相反,是要权衡在不同层次和粒度解耦之后,再更加充分的协同。

16篇原创内容

公众号

本文包括两篇Fungible的技术白皮书:

1、Fungible’s Vision for the Data-Centric Era

https://www.fungible.com/wp-content/uploads/2019/05/WP0003.00.91020525-Fungible%E2%80%99s-Vision-for-the-Data-Centric-Era.pdf

2、Overcoming Network Challenges when Pooling Disaggregated Resources at Scale

https://www.fungible.com/wp-content/uploads/2019/07/WP0008.00.91020701-Overcoming-Network-Challenges-when-Pooling-Disaggregated-Resources-at-Scale.pdf

第一篇 以数据为中心时代下,Fungible的愿景

作者:Fungible CEO,Pradeep Sindhu先生

本白皮书有三个主要目标:介绍Fungible的基本假设背后的趋势;定义一种新的工作负载类别,我们称之为以数据为中心的工作负载,并解释为什么它们在现代应用程序中越来越重要;并描述以数据为中心的基础设施——专门为有效地执行现代应用程序而设计的基础设施。

1. 以数据为中心的时代到来了

从计算机发展的开始阶段,就一直存在着不断提高底层基础设施的性能、可靠性和经济性的压力,同时还要使其更加敏捷。这种压力反映了计算机日益增强的适用性,特别是一旦它们被设计成可编程的,然后在更大地域内把越来越多的计算机相互连接时。性能和连接性的每一个数量级的改进都会带来新的应用程序,而这些新应用程序反过来又会带来更多的改进。

所有信息基础设施都可以看作是三个基本构建块的递归优化:通用计算引擎、随机访问存储以及连接前两者的网络。我们断言,改进这些构建模块的持续压力是它们存在的必然结果,并且完全独立于用于实现它们的技术。另一种说法是,我们发现这些构建块提供的功能是如此引人注目,以至于我们将一直寻找方法来改进它们。

在过去的50年里,基础设施改善的主要驱动力是CMOS集成电路的密度呈指数级增长——这一现象被称为摩尔定律。磁盘驱动器在历史上一直是辅助存储的主要技术,但基于CMOS的闪存正在逐步取代磁盘。因此,CMOS是所有这三个构建块的技术驱动。

多年来,随着每一代CMOS的出现,晶体管的规模不断缩小,但我们现在正接近物理极限,很难维持历史上密度的增长。专家们预测,随着每一代技术的发展,增长会越来越小,最终摩尔定律会趋于平缓。业绩放缓的最初迹象在21世纪初就已显现;对此的回应是多核处理器和随后的可横向扩展计算的发明,以取代纵向扩展单个计算机所带来的性能提升。随着摩尔定律进一步放缓,不可避免的是,数据中心需要通过构建专门用于特定类型工作负载的硅来适应。因此,使用通用微处理器构建的同质计算机的扩展让位于异构可编程和固定功能计算元素的扩展。

只有基础最牢固的结构才能经受住时间的考验……

横向扩展基础设施的一个关键方面是共同发明了基于微服务的应用程序体系结构。在这里,每个应用程序都被分解为一组服务,这些服务独立于其他服务编写、维护和操作。每个应用程序使用数据中心提供的服务的子集,不同的应用程序使用不同的子集。此外,每个服务都是由一组相同的服务器实现的,服务器的数量可以根据性能需求增加或减少。微服务体系结构的一个重要结果是给定数据中心中服务器之间的网络带宽显著增加。

2. 工作负载越来越以数据为中心

在过去的15年里,收集到的数据量呈爆炸式增长。这始于人们意识到,在完整的数据集上运行相对简单的算法比在数据的子集上运行复杂的算法能提供更好的见解——这就是“大数据”的现象。随后,大型数据集的可用性与机器学习的进步相结合,创造了收集更多数据以满足学习算法的需要。这种良性循环造就了今天如此明显的数据爆炸。这种爆炸的主要后果是需要存储、检索、移动和处理非常大的数据集,这些数据集必须分布在大量的机器上。对这类数据集最有用的计算包括在服务器之间互连的网络上移动数据。由此产生的一个重要结果是,IO与计算的比率大大高于早期“以计算为中心”的模型(在这种模型中,计算占据主导地位)。

这些趋势表明从以计算机为中心的世界向以数据为中心的世界的明显转变。在这个以数据为中心的新时代,移动数据并在其上执行轻量级计算至少与执行传统的算术和逻辑操作一样重要。

我们现在可以通过确定四个特征来为以数据为中心的工作负载提供一个精确的定义,所有这些特征都必须存在,才能使工作负载符合以数据为中心的要求:

  1. 所有工作都以数据包的形式到达服务器,数据包交换接口如以太网或PCIe。鉴于分组交换提供的统计多路复用增益的基本性质,这种特性可能出现在大多数(如果不是所有)工作负载中。

  2. 一个给定接口上的数据包通常属于大量的流,来自不同流的数据包在时间上任意交错。因此,以包为粒度的流间多路复用是以数据为中心的工作负载的一个中心特性。

  3. 以数据为中心的工作负载执行的计算是有状态的,因为处理给定的包需要属于包流的读写状态。此外,这种状态可能足够大,必须保持在外部内存中。

  4. 最后,IO与计算比率是中高的。这里,IO指的是任何需要遍历执行工作负载的硅芯片引脚的活动。具体来说,对外部内存的引用被计算为“IO”。

考虑到,由于摩尔定律的约束,流行的横向扩展的基础设施,普遍使用微服务应用程序体系结构,和欲望来处理大型数据集,我们断言, 在数据中心整体工作负载中,以数据为中心的工作负载可能会成为一个越来越重要的部分。

那么,当今的数据中心如何处理以数据为中心的工作负载呢?结论并不是太好。现有数据中心面临两个基本问题。

首先,以数据为中心的工作负载要么由通用CPU执行,要么由负载均衡器和防火墙等设备执行。不幸的是,通用CPU的体系结构与以数据为中心的工作负载的特征根本不一致。这样做的原因是,CPU设计者的主要任务是最大化每个核心在一般工作负载下每秒交付的指令;这是通过在功率限制允许的最高时钟速率和最大化每个核心的每个时钟的指令(IPC)来实现的。但是,实现高IPC与在细粒度的多路工作负载上高效操作从根本上是不一致的。用于实现高IPC的技术——代码和数据缓存、深度流水线、寄存器重命名和分支预测,等等——都不利于频繁的上下文切换。更糟糕的是,在以数据为中心的工作负载存在的情况下,通用CPU也不能有效地执行以计算为中心的工作负载。这是因为以数据为中心的工作负载导致的多路复用破坏了以计算为中心的工作负载的性能。如果一个给定的内核用于运行两种类型的工作负载,则这种干扰影响最大,但是当工作负载运行在单独的内核上时,这种干扰也会出现,因为内核仍然共享内存系统。

数据中心面临的第二个问题是,现代的工作负载对连接局域网的分组交换网络造成了极大的压力。为了提高性能同时降低成本和单位比特功率的压力,迫使网络元件尽可能简单。特别是,网络元素无法以所需的速度进行有状态计算。它们既可以以少量状态快速运行,也可以以聚合所需的状态量缓慢运行,但不能两者都有。对所有工作负载至关重要的特定有状态计算是某种形式的会话终止,它不仅提供端到端可靠性、流控制和安全性,而且允许有效利用网络。TCP、RDMA和RPC都是需要这种终止的协议的例子。现在还没有有效的、可扩展的方法来做到这一点。

3. 数据处理单元(DPU)介绍

我们相信,一个以数据为中心的世界需要以数据为中心的基础设施。在旧的以计算为中心的世界设计的基础设施上执行以数据为中心的工作负载会导致经济效率低下、不可靠和不安全——这与用户对计算基础设施的需求恰恰相反!数据中心运营商必须频繁、谨慎地进行优化,以达到合理的性能水平。这些优化在面对小的更改时通常是脆弱的,并且经常成为安全风险的来源。

我们的观点是,以数据为中心的基础设施需要一种名为数据处理单元(DPU)的新型微处理器,这是可替换技术发明的。不同于为通用应用提供高IPC的CPU,或者为执行浮点向量操作而设计的GPU, DPU专注于高效地执行以数据为中心的工作负载。

特别是,DPU从一开始就被设计成做好两件事,并以可编程的方式完成它们:

  1. DPU执行以数据为中心的计算,其效率比通用CPU高一个数量级。它通过三种独立的技术做到了这一点:创建专门用于高效处理多路工作负载的体系结构;为最频繁执行的操作设计专门的加速器;通过提供一个有效的模型来处理数据流,同时对它们执行轻量级计算。DPU提供网络侧的标准IPoE(IP over Ethernet)接口和本地总线侧的标准PCIe接口,用于连接计算元素和存储元素。很容易看出,DPU是对现有构建块的补充,而不是竞争。

  2. DPU作为大规模有状态网络连接的端点。在这样做的过程中,它将一个标准的IPoE网络转换成一个Fabric,该Fabric提供全面的任意端点到任意端点横截面带宽、细粒度的端到端流控制、端到端错误控制、端到端安全性、低延迟以及对尾部延迟的严格控制。最重要的是,这些特性可以通过一个由标准IPoE交换机构建的单一平面网络提供,从10千瓦的小型部署到40兆瓦的大规模部署,包括超过10万局域网物理服务器。

因此,以数据为中心的基础设施是指计算和存储服务器包含DPU的基础设施,用于高效地执行以数据为中心的计算,并通过以太网将服务器连接到标准IP,从而使资源能够被分解和合用。在大多数配置中,一层(单独的Spine)或两层的 Top-of-Rack (TOR)和Spine交换机就足够了,特别是当Spine被允许有高基数时。

对于现代应用程序,我们希望与现有的以计算为中心的基础设施相比,支持DPU的基础设施能够显著提高性能,同时降低成本和功耗。总体工作负载中以数据为中心的计算的比例越高,我们期望获得的收益就越大。值得注意的是,收益是提高性能,降低基础设施成本(资本支出和运营成本),或者两者结合。

我们注意到,以数据为中心的体系结构还提供了对设备访问延迟比结构延迟大的数据中心资源进行分解、池化和虚拟化的能力。属于这类的资源是持久存储(hdd、ssd、相变内存)和流加速器,如GPU、ML引擎和Inference引擎,它们操作大的数据流而不需要细粒度的交互。

资源池的好处是非常显著的。资源池原则最早是由Peter J. Denning在他的博士论文中量化的。Denning的结果表明,通过将N个资源池(每个资源池的单位是1)合并到一个池中,我们可以用N个资源单元而不是N个资源单元来提供相同的服务水平。例如,如果我们有36个服务器机架中,每4TB的存储(总共144个核),池原理认为我们可以提供同样的服务水平与一个24 TB的存储池总额减少到1/6的存储需要。跨多个机架汇集资源将提供更大程度的数量减少。

相比之下,当今以计算为中心的基础设施显然是反池化的。这是因为直接绑定到通用处理器的PCIe总线的资源不能被其他服务器上的处理器有效地使用。结果,这些资源仍然滞留,因此得不到充分利用。

4. 以数据为中心的计算是下一个前沿领域

我们相信,在未来五年内,绝大多数数据中心将从以计算机为中心转变为以数据为中心,而DPU将在这一转变中发挥核心作用。(从2019年5月起,)在接下来的几个月里,Fungible将为这一重要的计算变革增加深度和广度。

第二篇 在大规模分散资源池化时,解决网络的挑战

作者:Fungible Principal Solution Architect,Bojian Wang先生

本白皮书有三个主要目标:讨论网络中需要解决的共同挑战,以便大规模汇集分散的资源;研究特定于存储、GPU和内存池的挑战;并解释数据处理单元(Data Processing Unit, DPU)等以数据为中心的引擎必须提供什么来解决上述挑战。

我们经常听到在IT转型和云应用的环境中使用“网络规模”这个术语。当IT专业人士使用这个术语时,通常意味着他们希望获得与亚马逊、谷歌、微软、阿里巴巴、Facebook等超大规模云公司一样的可扩展性、灵活性和成本节约优势。所有这些组织都在其云环境中使用“横向扩展”架构,通过在相同的基础设施单元中横向添加资源,而不是通过增加单个节点的能力,从而提高数据中心的性能和容量。横向扩展是现在许多较小的组织希望在他们的发展过程中部署的模型,以获得更好的性能和提高效率。

横向扩展的方法提供了许多优点;从部署超融合基础设施(HCI)开始。通过将计算、存储和网络组件组合到单个服务器中,HCI允许数据中心运营商根据每个应用程序的需求增加容量。

近年来,HCI已经在许多方面被可组合的解构基础设施(CDI)所取代,CDI将计算、存储和网络组件分解为独立的服务器,这些服务器可以根据需要合用。这可以实现更高的效率和更高的利用率,避免供应商锁定,并实现更快、更敏捷的部署。

通过利用统一API和自动化,CDI可以将扩展基础设施提升到新的水平,允许跨整个数据中心独立地扩展单独的组件。然而,通过分解这些组件,过去在内部PCIe总线上传输的数据现在流过网络,显著增加了数据中心的东西向流量。

因此,网络是下一代数据中心的关键促成因素。为了实现资源池,数据中心组件必须通过无阻塞、高带宽和低延迟的spine-leaf结构连接,并且网络必须满足严格的服务水平协议。

但要利用这种新的基础设施模型,现代网络必须克服以下几个重大挑战。

1. 重新思考网络需要解决的挑战

由于云应用驱动的数据中心规模的增长和不同的流量模式,长期以来的网络设计原则已经被打乱。横向扩展计算带来的新挑战意味着数据中心运营商经常面临可靠性、敏捷性、成本和性能之间的权衡。

一个主要的例子是带宽利用率。为了在满足横向扩展需求的同时维持高吞吐量和低延迟,网络通常由2或3层的非阻塞的对分Fabric组成。虽然这种设计促进了南北和东西向的流量,但由于Incast流量产生的热点,可能导致随网络扩展而增加的拥堵。

为了应对突发流量并避免拥塞,大多数大型数据中心都试图将带宽利用率保持在较低水平。这种做法可能允许数据中心运营商维护性能,但这是有代价的——较低的网络带宽利用率和较高的成本。然而,它仍然不能保证流量拥堵能够得到控制。数据中心需要构建更好的解决方案来解决这一问题。

让我们更细节地研究一些常见的挑战。

  1. 网络拥塞和长尾延迟。对于大多数数据中心来说,最真实的性能指标是“尾部延迟”——流量最慢百分位数所经历的延迟水平。堵塞的一个典型原因是Incast。网络越拥挤,就越难预测尾部延迟。虽然有解决拥塞的方法,如数据中心TCP、数据中心量化拥塞通知(DCQCN)和基于融合以太网的RDMA (RoCEv2),但这些解决方案带来了一系列新的挑战,如突发流量,这也是不可避免的导致拥塞,复杂的供应,PFC暂停帧风暴等。

  2. 大故障域。硬件故障是不可避免的,这就是为什么网络运营商总是试图最小化单点故障对网络的影响(或爆炸半径)。但是传统的高可用性设计过于昂贵和复杂,难以大规模部署。相反,该行业正在寻找不同的方法来解决这个问题,其中一种方法是使用单芯片组包处理器的模块化交换组成的Fabric,这种方法被Facebook称为“F16”。然而,在某些层中,大的爆炸半径仍然不能完全避免,比如ToR (Top-of-Rack)交换机,那里仍然需要大量的冗余。

  3. ECMP引起的哈希冲突。等价多路径(ECMP)是一种路由算法,它允许流跨网络Fabric的离散层遵循相同的路径,从而实现更好的负载平衡和更高的带宽利用率。当主要的流量模式是“大象”流和“老鼠”流时,ECMP的行为就会出现问题。在虚拟机迁移或MapReduce for Hadoop等工作负载创建大量连续的数据流的数据中心中,这种情况并不少见,这些数据流与具有更严格延迟约束的短期流共存。多个“大象”流之间的哈希冲突会在网络中的某些路径上造成流量不平衡和拥塞,从而导致整体网络利用率较低。此外,使用拥塞路径的“老鼠”流会遭受更长的延迟和包丢失。向信息包添加熵字段可以降低“大象”流的优先级,但即使是增强的ECMP也不能保证在多个路径上保持一致的抖动。这将在接收端主机上造成更多的缓冲;缓冲区将被耗尽,数据包将被丢弃并被重传,网络性能将受到影响。

  4. 故障检测和恢复速度慢。大规模数据中心故障恢复是一项复杂而耗时的工作。为了减少对应用程序的影响,大多数网络运营商选择在故障点附近重新路由流量,一旦检测到故障点,然后分析根本原因。检测和恢复的时间通常在10秒的范围内。

  5. 不可靠的传输。像RoCEv2这样的网络解决方案是基于网络无损的假设设计的。然而,在许多情况下,丢包是不可避免的。这意味着网络团队必须投入大量精力开发工具来处理数据包丢失,特别是无声的数据包丢失,以避免应用程序吞吐量和性能下降。如果数据包重传发生在传输层,那么与更高层的重传相比,这将显著提高性能。不幸的是,UDP缺乏重传机制,而TCP有,但它很复杂,尾部延迟很难预测。

2. 使能有效的大规模资源池

大多数大型网络运营商都熟悉向外扩展基础设施的优势,无论是HCI还是CDI。使用软件定义的技术汇聚可用物理资源,允许管理员在工作负载需要更改时按需提供资源。这通常会提高CPU、GPU、内存、存储和其他分散资源的效率和利用率。

然而,大规模汇聚这些资源也带来了网络方面的挑战:

  1. 存储池。池存储的概念并不新鲜。通过存储区域网络(SAN),运营商将硬盘驱动器集中起来,允许应用程序根据自己的需求来使用存储。但是,向外扩展的工作负载和本地云应用程序需要更快的固态硬盘(SSD)互连技术,比如NVMe。此外,NVMe over Fabric (NVMeoF)等新兴技术可以将NVMe SSD从计算节点拆分为池存储。NVMe技术的采用消除了由HDD控制器引起的性能瓶颈,并提供了更好的吞吐量,但它也对网络提出了新的要求,因为用户总是希望访问类似于直接附加存储的网络存储。端到端延迟、带宽利用率和拥塞控制变得更加重要。

  2. GPU池。视频监控、人脸识别和机器学习等领域人工智能应用的爆炸式增长,导致了图形处理器使用量的增加。在当前的部署中,GPU依赖于PCIe交换机连接到CPU (CUDA应用程序在那里运行),并使用专有技术(如NVLink内部池)连接到服务器中的其他GPU。PCIe和NVLink都只在短范围内工作,这限制了GPU池在服务器内或Rack内。对于大规模的并行计算,GPU需要跨Rack汇聚,操作人员可以使用GPU Direct RDMA通过RDMA网络结构连接GPU。但是,GPU Direct RDMA的使用模型仅限于GPU到GPU之间的数据传输,并不能真正支持GPU资源的完全分解和可组合。因此,GPU池提高资源效率的好处仍然无法实现。其他方法,如远程CUDA,可以在应用程序级别虚拟化GPU资源,但响应时间和软件依赖造成了问题和限制。

  3. 内存池。一个相对较新的用例是内存池,特别是在部署存储类内存(SCM)时。尽管延迟需求(1us或更少)给网络设计带来了巨大的挑战,但从经济角度来看,共用内存很有意义。目前正在对内存池进行更多的研究,可能也会发现更多的挑战。

从以计算为中心到以数据为中心

如今,网络面临着一些架构上的限制,当试图大规模移动数据时,这些限制不可避免地会导致延迟和滞后。但也许最大的瓶颈是,几乎每个事务都必须通过没有为数据传输进行优化的通用CPU。

Fungible相信,在未来的十年中,数据中心的模式将从以计算机为中心发展到以数据为中心。这种转变将需要一种专门为处理以数据为中心的工作负载而设计的新型可编程处理器,包括数据传输、减量、安全性、持久性、过滤和分析。部署以数据为中心的引擎,如DPU(数据处理单元),可以解决这里讨论的限制,并提供几个广泛的优势:

  • 更可预测的网络性能。可以让数据中心操作员控制端到端拥塞的可编程芯片可以显著减少尾延迟。这种技术应该能够以一种高效和可扩展的方式应用,从几个机架到数千个机架。

  • 较低的总拥有成本。通过采用更细粒度的方法,避免“大象”和“老鼠”流问题,数据中心操作员可以显著提高网络带宽利用率,而不需要进行叉车升级。扁平化网络结构架构可以通过移除ToR层来进一步降低基础设施的成本。

  • 更大的可伸缩性。虽然像RoCEv2这样的技术可以减轻服务器拥塞的影响,但它是一种基于流量优先级的非常粗糙的机制,所以RoCEv2只能在相对较小的网络中工作。业界曾提出过改进方案,如IRN(改进RoCE NIC),但这些解决方案是有代价的。数据中心运营商需要一种细粒度的解决方案,能够扩展到包含数万台服务器的网络,确保超低延迟和可靠的传输。

  • 增强可靠性。当前基于软件的故障处理方法可能需要几秒钟的时间才能让网络恢复。现代数据中心需要超高速故障恢复机制,将恢复时间降低到微秒级。因此,需要一种软硬件联合优化的解决方案来平衡超高速收敛和灵活性供应和管理的需求。

对于云公司、大型企业和通信服务提供商来说,他们通过网络传输数据的速度将决定是拥有可靠、灵活和可伸缩的基础设施,还是拥有臃肿、昂贵和低效的基础设施。

资源共享的灵活性和经济效益显而易见,不容忽视,但挑战依然存在。我们相信,Fungible以数据为中心的解决这些挑战的方法,将使资源汇聚的规模远远超过今天可能实现的规模。

上一篇:_00019 Storm架构介绍和Storm获取案例(简单的官方网站Java案例)


下一篇:Cold-start Sequential Recommendation via Meta Learner阅读笔记