这篇文章最初发表在 NVIDIA 技术博客上。
随着数据生成的不断增加,线性性能扩展已成为扩展存储的绝对要求。存储网络就像汽车道路系统:如果道路不是为速度而建的,那么汽车的潜在速度也无关紧要。即使是法拉利在充满障碍的未铺路面的土路上也很慢。
扩展存储性能可能会受到连接存储节点的以太网结构的阻碍。 NVIDIA 加速以太网可以消除性能瓶颈,为一般应用程序,特别是 AI / ML 实现最大的存储性能。
扩展存储需要强大的网络
全球每秒有 54000 张照片被拍摄。当你读到这篇文章的时候,这个数字会更高。无论您的业务是什么,您都有可能拥有大量必须存储和分析的数据,而且数据量每天都在增长。
使用越来越大的存储文件管理器的旧的按比例扩展方法已被一种按比例扩展的方法所取代,这种方法可以提供容量和性能都呈线性扩展的存储。
使用扩展存储或分布式存储,可以将几个较小的节点配置和连接为一个逻辑单元。单个文件或对象可以分布在多个节点上。
随着需要更大的规模,可以很容易地添加额外的存储节点,以提高存储容量和性能。这既适用于传统的企业存储供应商解决方案,也适用于软件和硬件独立采购的软件定义解决方案。
分布式存储实现了灵活的扩展和成本效益,但需要高性能网络来连接存储节点。许多数据中心交换机不适合存储的独特流量特性,事实上可能会削弱横向扩展存储解决方案的性能。
存储流量与传统流量的区别
对于许多用例来说,网络流量是一致和同质的,传统的以太网就足够了。但是,存储设备生成的流量可能会导致以下详细问题。
网络压力
当前的存储解决方案受益于更快的 SSD 和存储接口,如 NVMe 和 PCIe Gen 4 (即将推出的 PCIe Gen 5 ),它们旨在提供更高的性能。
拥塞
当存储结构饱和时,网络拥堵就不可避免了,就像高速公路上有太多交通时道路拥堵一样。网络拥塞对于扩展存储来说尤其成问题,因为每个存储节点都有望提供快速的数据传输。但当出现拥塞时,许多数据中心交换机都存在公平问题,其中一些节点的速度会比其他节点慢得多。单个文件或对象通常分布在多个节点上,因此任何降低单个节点速度的操作都会有效地降低整个集群的速度。
突发交通
大多数存储工作负载都是突发性的,会产生密集的数据传输,并在短时间内重复需要大量带宽。当这种情况发生时,网络交换机必须使用其缓冲区来吸收突发,直到瞬态突发结束,从而防止数据包丢失。否则,数据包丢失将需要重新传输数据,从而显著降低应用程序性能。
存储巨型帧
传统的数据中心网络流量使用 1 . 5KB 的最大数据包大小( MTU )。当扩展存储节点可以使用 9 KB 的"巨型帧"时,它们的性能会更好,这样可以在降低吞吐量的同时提高吞吐量 CPU 处理开销。许多使用商品交换机 ASIC 构建的数据中心交换机在使用巨型帧时表现不佳或不可预测。
低延迟
提高存储 IOP 的方法之一是通过减少基于闪存的介质中的读/写操作的数量级延迟。然而,当网络引入高延迟时,尤其是由于过度缓冲,这些昂贵的性能改进可能会丢失。
训练和推理都需要足够的数据量和高速访问,以确保 GPU 处理器足够快地被馈送,使其保持完全参与。在训练期间, WRITE 操作由所有节点执行,以提高模型的准确性。这导致了突发,使得交换机必须有效地处理拥塞。最后,较低的存储延迟使 GPU 能够更有效地处理计算任务。
为什么 ASIC 不适合存储流量
大多数数据中心交换机都是使用商品交换机 ASIC 构建的,这些 ASIC 针对传统的数据流量模式和数据包大小进行了成本优化。为了在实现带宽目标的同时保持低成本,以太网交换机芯片供应商通过使用分离缓冲区架构来损害公平性。
每个交换机都有一个缓冲区,用于吸收流量突发,并在发生拥塞时防止数据包丢失。常见的方法是拥有一个跨多个端口共享的缓冲区。然而,并非所有共享缓冲区都是相同的------存在不同的缓冲区架构。
商品开关没有 完全共享缓冲区他们使用入口共享缓冲区或出口共享缓冲区。
对于入口共享缓冲区,在一组传入端口和特定内存片之间存在静态映射。这些端口只能使用分配的片中的内存,而不能使用整个缓冲区,即使缓冲区的其余部分可用并且没有人在使用它。
对于出口共享缓冲区,映射是在一组输出端口和特定缓冲区内存片之间进行的。同样,每组出口只能使用其分配的缓冲区切片,而不能使用整个缓冲区。
对于这两种体系结构,停留在同一内存片中的流的行为与在内存片之间传输的流不同。如果许多流使用具有相同缓冲区的端口,那么这些端口将经历更高的延迟和更低的吞吐量,而使用缓冲区的其他部分的流量将享受更高的性能。
存储性能取决于存储流量(和其他流量)使用的端口以及这些端口的缓冲区片的繁忙程度。这就是为什么使用拆分缓冲区的交换机经常遇到与公平性、可预测性和微突发吸收相关的问题。
为什么深度缓冲区交换机不适合存储
深度缓冲交换机通常指的是提供更多缓冲( GB 而不是 MB )的交换机。深度缓冲交换机通常被推广用作路由器,因为如果网络速度不匹配或出现紧急情况,它们可以吸收并保持大量流量突发。
但在大多数数据中心应用程序(包括扩展存储)中,深度缓冲区交换机会对性能产生负面影响,原因如下:
作业完成时间
对于并行文件系统,响应最慢的存储节点决定了获取文件所需的时间。与具有片上缓冲区的商品交换机 ASIC 不同,深度缓冲交换机同时具有片上和片外缓冲区,并且它们都是片上而非完全共享的缓冲区。
想想流动在离开开关之前可以走多少路。它们可以停留在一个片上存储器片内(最快),在片上存储器片间移动(较慢),或在片上和片外存储器片间移动(非常慢)。
所有这些流的行为都会有所不同,因此会导致存储流量的公平性和可预测性问题。由于这些问题会降低一个或多个节点的速度,因此会对作业完成时间产生不利影响,并降低整个分布式存储集群的速度。
延迟
交换机缓冲区越大,每个数据包必须经过的队列就越长,延迟也就越大。深度缓冲区交换机的测试平均端口到端口延迟超过 500 微秒。与来自同一代的完全共享的缓冲交换机相比,NVIDIA Spectrum 1 的延迟仅为 0.3 微秒。而切换/路由数据包需要的时间是纳秒而不是微秒。
深度缓冲延迟高出 1000 倍。你可能想知道,这只是发生在拥堵的时候吗?不会。在拥塞的情况下,深度缓冲区的延迟会高得多;事实上,最长可达 20 毫秒,或高出 50000 倍。对于数据中心之间的路由器来说, 500 微秒的延迟可能还可以,但在数据中心内,这意味着闪存性能的下降。
功率和成本
深缓冲开关即使在空闲时也需要数百瓦的功率才能运行,这使得其持续的运行成本更高。深度缓冲交换机的初始购买成本也高得多。如果性能更好,这可能是合理的,但现实世界的测试证明恰恰相反。
选择不合适的网络交换机会严重降低存储工作负载,使昂贵的快速存储变得更便宜、更慢。
使用 NVIDIA Spectrum,可以减少资本支出和运营支出。瓦特也可以用于机架内的其他用途。
NVIDIA Spectrum 交换机针对存储进行了优化
有了商品交换 ASIC ,流要么停留在同一个内存片上,要么在内存片之间流动。
使用 NVIDIA Spectrum 开关,由于完全共享的缓冲区,所有流的行为都是相同的。这种架构的价值在于最大的突发吸收能力以及最佳的公平和可预测的性能。通过交换机的所有业务流都得到相同的处理,并且通常享有相同的良好性能,无论它们使用哪个入口和出口。
深度缓冲开关和 NVIDIA Spectrum 的基准测试
第一种情况使用一个通用的存储基准 FIO 工具,用于在后台流量运行时从两个启动器到一个目标的 WRITE 操作。这是一种典型的存储场景。
团队测量了 FIO 工作完成所需的时间(越短越好)。使用深度缓冲开关, FIO 作业耗时 87 秒。使用 NVIDIA Spectrum 开关,作业运行速度快 40% ,仅需 51 秒即可完成。
图 1 。与深度缓冲开关相比, NVIDIA Spectrum 开关的存储写入操作快 40%
深度缓冲区交换机大大增加了延迟,从而降低了存储速度并降低了应用程序性能。但是延迟能有多高?
对于第二种情况,该团队采用了深度缓冲区交换机,并测试了在不同的拥塞用例下延迟是如何受到影响的。最大缓冲区占用率仅为整个缓冲区大小的 10% 左右。
**图 2 :与缓冲区大小和缓冲区占用率相比的实际和预测延迟
从图 2 左侧的图表中可以得出两个有意义的见解。首先,深度缓冲区交换机延迟比 Spectrum 交换机高 50000 倍( 2 -- 19 毫秒,而 Spectrum 仅为 300 纳秒)。
其次,缓冲区占用率和延迟之间存在明显的线性相关性。换句话说,测试证明,占用的缓冲区越大,延迟就越大。
有了这一理解,图 2 右侧的图表显示了每个深度缓冲 ASIC (如 Jericho 1 、 Jericho 2 或 Ramon )的最大延迟。这些非常高的延迟数通常与数据中心应用程序不兼容,尤其与快速存储解决方案不兼容。
对于第三种情况,该团队使用了两台 Windows 机器,并同时将每个机器中的一个文件复制到同一目标存储中。
使用深度缓冲区交换机,一台 Windows 机器的带宽是另一台的三倍( 830MBps ,而 290MBps )。有了 Spectrum 开关,每台机器都有 584 MBps (如预期的 50% )。
实际测试表明,深度缓冲区交换机对数据中心应用程序(如吸收数据包和防止数据丢失)没有积极影响。
长途或广域网连接可能需要深度缓冲交换机;然而,它们对于数据中心应用程序来说是次优的,并且会产生负面影响,特别是当工作负载扩展到仅两个节点之外时,如本用例中所示。
图 3 。深度缓冲开关为每个节点提供了不公平的带宽(左),而 NVIDIA Spectrum 开关提供了相等的带宽(右)
这三个用例证明了为什么深度缓冲区交换机会对 AI / ML 和存储工作负载产生不利影响,而 Spectrum 交换机则提供了最大化的性能。
总结
NVIDIA Spectrum Ethernet switches 是专为 AI/ML 和存储工作负载而构建的,其性能优于具有拆分缓冲区或深度缓冲区的交换机。它们可以更好地处理拥塞,防止数据包丢失,并且在处理巨型帧(首选存储)方面表现出色。NVIDIA Spectrum 以太网交换机可以提供良好的应用程序性能,网络延迟也较低。
了解更多信息,请访问 NVIDIA Spectrum Ethernet switches。深入了解网络存储领域,请访问 NVIDIA Developer Forums。