写点什么

虚拟云环境中的高性能块设备:直通方法比较

作者:Sergey Platonov
  • 2025-04-23
    俄罗斯
  • 本文字数:3043 字

    阅读完需:约 10 分钟

虚拟云环境中的高性能块设备:直通方法比较

在云环境中运行的 AI 工作负载对性能提出了独特的挑战,尤其是在管理数据管道和处理 I/O 操作方面。这些工作负载需要存储解决方案既能提供低延迟又能提供高吞吐量,同时尽量减少开销,特别是在虚拟化环境中。为了满足这些需求,为虚拟机提供高性能块设备至关重要,这些设备能够提供最小的延迟和极低的开销。在 Xinnor,我们开发了 xiRAID Opus,这是一种专门解决这些挑战的解决方案。本篇博客将介绍 xiRAID Opus 如何通过提供卓越的块设备性能、无缝的虚拟化直通以及与并行文件系统的高效集成来应对这些障碍。这项研究首次在 2024 年 9 月的 SNIA SDC 活动中展示。


云环境中的 AI 工作负载与性能挑战

在云环境中,尤其是对于软件定义存储(SDS),主要的性能问题之一是处理 AI 应用程序的不同工作负载特征。AI 数据管道的不同阶段可能有截然不同的需求。例如,一些工作负载需要低延迟和随机的小型 I/O 操作,而另一些则需要高吞吐量来进行大规模的顺序文件传输。

传统的 SDS 系统通常针对某一类工作负载进行优化,因此很难在不同任务中表现出色。这一局限性因虚拟化引入的性能损失而加剧,这种损失通常会导致显著的瓶颈。此外,许多 SDS 解决方案缺乏对高性能共享卷的支持,进一步限制了它们在分布式云环境中的可扩展性和灵活性。



在 Xinnor,我们认为并行文件系统可以解决云环境中共享卷的空白。这些系统能够实现可扩展性和灵活性,使工作负载能够在 AI 数据管道中高效流动,同时最大限度地减少性能下降。

为了解决这些性能挑战并提供全面的解决方案,我们专注于三个关键组件:

  1. 块设备(xiRAID Opus)

  2. 虚拟化直通方法

  3. 并行文件系统(例如 Lustre 和 pNFS)

在这篇博客中,我们将详细探讨前两个组件,涵盖如何配置和测试每个组件以优化性能,从而形成适用于高性能云环境的综合解决方案。下一篇博客将专门讨论并行文件系统(阅读这里)。

块设备:xiRAID Opus

我们高性能存储解决方案的核心是 xiRAID Opus,这是一种专为云环境优化的块设备。提供高性能块存储的能力对于确保虚拟化 AI 工作负载的最佳性能至关重要。xiRAID Opus 专门设计用于在向虚拟机提供块设备时实现最低的延迟和最少的开销。这种性能优化是处理与 AI 数据管道相关的高要求 I/O 操作的关键。


无论是处理小型随机 I/O 还是大规模顺序数据传输,xiRAID Opus 在虚拟环境中始终保持着高性能,确保 AI 应用程序能够无缝访问数据。

xiRAID Opus 的主要特点包括:

  • 创建受 RAID 保护的卷

  • 向虚拟机提供卷

  • 两项主要的性能优化:轮询 (通过主动检查 I/O 完成情况显著降低延迟);零拷贝 (消除存储管道中不必要的数据复制,提升吞吐量)。

xiRAID Opus 还提供了显著的部署灵活性。无论是在裸金属设置、虚拟设备还是 DPU 上部署,xiRAID Opus 都能在不同的基础设施配置中保持其性能特性。

虚拟化直通方法

为了确保虚拟化环境中的最佳性能,为虚拟机提供高性能块设备至关重要,这些设备能够提供最低的延迟和开销。虚拟化直通技术是提供这种块设备的最有效方法,确保 AI 工作负载的性能在云环境中不受影响。有多种方法可供选择,每种方法都有不同的优势和性能权衡。

在我们的解决方案中,我们专注于三种主要方法来在虚拟环境中交付块设备:

  • VIRTIO :这种广泛使用的接口支持单线程和多线程 I/O,能够高效地交付块设备。

  • vhost-user-blk :一种本地接口,直接将块设备传递给虚拟机,完全在用户空间中运行。它通过采用零拷贝方法确保高性能,从而减少不必要的数据移动。在 Xinnor,我们为 vhost-user-blk 开发了多线程支持,这是我们实现的独特功能。该支持显著提升了性能,尤其是在处理多个并发工作负载时。

  • VDUSE :一种允许在用户空间中创建 Virtio 设备并通过 vDPA 机制将其呈现给虚拟机的技术。这种方法使块设备能够以高性能和低延迟运行,利用数据路径加速的优势。VDUSE 还通过消除修改或加载 Linux 内核模块的需求简化了开发过程。

虽然像 ublk 这样的其他方法也存在,但由于它们在虚拟环境中的支持有限,我们在解决方案中并未重点关注它们。相反,我们优先考虑那些能为基于云的 AI 工作负载提供最高性能和可扩展性的方法。

比较这些方法

为了更好地理解 xiRAID Opus 的性能优势,我们将其与 MDRAID 在一组 RAID 配置下进行了比较,测试环境如下:

  • xiRAID Opus RAID 5(23+1 驱动器) 对比 MDRAID RAID 0(24 驱动器)

  • 单个虚拟机 :32 个 VCPUs,32GB 内存

  • 操作系统 :Rocky Linux 9,内核版本 6.10

  • 测试工具 :FIO v3.36

  • 工作负载 :4k 随机读取、AIO(异步 I/O)、直接 I/O、全条带写入

此配置使我们能够评估 xiRAID Opus 在随机读取和顺序写入操作中的效率和性能,并直接与 MDRAID 设置进行比较。

将共享块卷传递到 1 个虚拟机 - 随机读取



在较低的任务数量下,xiRAID Opus 的表现略优于 mdraid,但真正的优势在于工作负载扩展时显现出来。在 32 个任务时,xiRAID Opus 的性能比 VIRTIO 高出近 4 倍,比 VDUSE 高出约 15 倍。vhost-user-blk 和 NVMe/RDMA 之间的差异很小。随着任务和 I/O 深度的增加,mdraid 显示出 3 倍更高的延迟,而 xiRAID Opus 始终保持一致的低延迟。

将共享块卷传递到 1 个虚拟机 - 顺序写入


在 1 个任务/1 个 I/O 深度的工作负载下,xiRAID Opus(vhost-user-blk)实现了令人印象深刻的约 8 GBps 写入速度,性能几乎比其他解决方案高出 2 倍。

当工作负载增加到 8 个任务/32 个 I/O 深度时,xiRAID Opus 继续保持强劲性能,达到约 70 GBps。尽管其他解决方案在高并发下开始缩小差距,但 xiRAID Opus 仍具有更高的可扩展性,并能够高效管理更复杂的存储任务。

传递共享块卷:方法比较

网络性能在最大化 xiRAID Opus 的效率方面起着至关重要的作用。我们的测试表明,vhost-user-blk 的性能几乎与 NVMe/RDMA 相当,后者能够饱和 200 Gbps 的网络。然而,TCP 由于带宽限制而趋于达到极限。

例如,在 GPU 集群中,随机读取工作负载在加载数据时常见,而顺序写入工作负载在接收数据时普遍出现。通过针对这两种情况进行优化,xiRAID Opus 在虚拟化 AI 环境中提供了始终如一的高性能。

为什么我们选择 vhost-user-blk

基于提供的测试结果,我们选择了 vhost-user-blk 而非其他直通方法。xiRAID Opus 结合我们实现的 vhost-user-blk 是唯一能够向虚拟机提供高性能块设备的选项。主要原因如下:

  1. vhost-user-blk 的多线程接口 :我们为 vhost-user-blk 开发了独特的多线程接口,使其能够高效管理多个 I/O 线程。这对于在同时处理多个工作负载的环境中(如 AI 数据管道)保持高性能至关重要。

  2. SPDK 最佳实践的复用 :我们借鉴了 SPDK(一种旨在优化存储性能的工具包)的最佳实践。

  3. 优化的 CPU 利用率 :xiRAID Opus 经过优化,能够充分利用 AMD 和 Intel 处理器上的先进 CPU 功能。

  4. 单虚拟机性能优化 :我们的解决方案经过微调,即使在单个虚拟机和单个块设备上运行时也能提供最佳性能。这使得 xiRAID Opus 在小规模环境中也非常高效,且不会牺牲性能。

结论

总之,对于云环境中的 AI 工作负载,最小化延迟和最大化吞吐量至关重要。xiRAID Opus 结合优化的直通方法有效地满足了这些需求,使虚拟化环境能够处理高要求的 I/O 操作而不影响性能。在评估的直通选项中,vhost-user-blk 因其多线程支持、SPDK 优化以及在高并发工作负载下的强大性能而成为理想选择。通过专注于虚拟化 AI 工作负载的需求,xiRAID Opus 结合 vhost-user-blk 为云环境提供了可扩展的高性能解决方案,确保在 AI 数据管道的各个阶段都能实现低延迟、高吞吐量的访问。除了我们对直通方法的比较之外,一个配置良好的并行文件系统构成了我们针对 AI 工作负载的高性能存储的第三个也是最后一个组件。我们将在即将发布的博客中深入探讨这一点,详细介绍它如何补充所选的 vhost-user-blk 方法并进一步增强苛刻 AI 环境中的存储性能。

您可以在这里找到原始博客。


发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2025-03-18 加入

还未添加个人简介

评论

发布
暂无评论
虚拟云环境中的高性能块设备:直通方法比较_Performance_Sergey Platonov_InfoQ写作社区