优化 Lsv3 和 Lasv3 Linux VM 的性能

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM ✔️ 统一规模集

Lsv3 和 Lasv3 Azure 虚拟机 (Azure VM) 支持各种需要在各应用与行业的本地存储中提供高 I/O 和吞吐量的工作负载。 L 系列非常适用于大数据、SQL、NoSQL 数据库、数据仓库,以及大型事务数据库(包括 Cassandra、MongoDB、Cloudera 和 Redis)。

由于与合作伙伴在 Linux 方面开展合作,Azure 市场中提供了多个版本。 这些版本针对 Lsv3 和 Lasv3 性能进行了优化。 可用版本包括以下版本和更高版本:

  • Ubuntu 16.04
  • RHEL 8.0 和克隆版,包括 CentOS、Rocky Linux 和 Alma Linux
  • Debian 9
  • SUSE Linux 15
  • Oracle Linux 8.0

本文提供了一些技巧和建议来确保你的工作负荷和应用程序达到 VM 中设计的最高性能。

AMD EPYC™ 芯片集体系结构

Lasv3 VM 使用基于 Zen 微体系结构的 AMD EPYC™ 服务器处理器。 AMD 开发了 Infinity Fabric (IF) for EYPC™ 作为其 NUMA 模型的可缩放互连结构,可用于晶片上通信、封装上通信和多封装通信。 与 Intel 新式单晶片处理器上使用的 QPI(快速路径互连)和 UPI(超路径互连)相比,AMD 的多 NUMA 小晶片体系结构既可以带来性能优势,同时也会带来挑战。 内存带宽和延迟约束的实际影响可能因运行的工作负载类型而异。

最大程度地提高性能的技巧

  • 如果要为工作负载上传自定义的 Linux GuestOS,默认情况下,加速网络将处于关闭状态。 如果打算启用加速网络以获得最佳性能,请在创建 VM 时启用它。
  • 若要获得最大性能,请为每个设备运行具有较深队列深度的多个作业。
  • 在工作负荷处于活动状态期间,避免将 NVMe 管理命令(例如 NVMe SMART 信息查询等)与 NVMe I/O 命令混合使用。 Lsv3 和 Lasv3 NVMe 设备由 Hyper-V NVMe Direct 技术提供支持,只要有任何 NVMe 管理命令挂起,该技术就会切换到“慢速模式”。 如果发生这种情况,Lsv3 和 Lasv3 用户可能会发现 NVMe I/O 性能显著下降。
  • 对于 Lsv3 和 Lasv3 VM NVMe 设备,每个 I/O 队列对支持的最大队列深度为 1024。 建议 Lsv3 和 Lasv3 用户将其(合成)基准工作负载限制为队列深度 1024 或更低,以免触发“队列已满”条件,那样可能会降低性能。
  • 直接对具有未分区、无文件系统、无 RAID 配置等特点的每个原始 NVMe 设备执行 I/O 操作时,可以获得最佳性能。启动测试会话之前,请在每个 NVMe 设备上运行 blkdiscard,确保配置处于已知的最新/干净状态。 若要在基准测试期间获得最一致的性能,建议在测试之前通过向 SNIA 固态存储企业性能测试规范中定义的所有设备的 LBA 两次发出随机写入来设置 NVMe 设备的前提条件。

利用本地 NVMe 存储

所有 Lsv3 和 Lasv3 VM 的 1.92 TB NVMe 磁盘上的本地存储都是暂时的。 在以标准方式成功重启 VM 期间,会保存本地 NVMe 磁盘上的数据。 如果重新部署、解除分配或删除 VM,则不会在 NVMe 上保存数据。 如果其他问题导致 VM 或运行 VM 的硬件变得不正常,则不会保存数据。 发生这种情况时,将会安全擦除旧主机上的所有数据。

还存在需要将 VM 转移到其他主机的情况(例如,在计划内维护操作期间这样做)。 在发生计划事件期间,预期会出现计划内维护操作失败和硬件故障的情况。 使用计划事件来随时了解任何预测性维护和恢复操作的最新情况。

如果计划内维护事件要求在具有空本地磁盘的新主机上重新创建 VM,则需要重新同步数据(同样,会安全擦除旧主机上的所有数据)。 之所以发生这种情况,是因为 Lsv3 和 Lasv3 VM 目前不支持在本地 NVMe 磁盘上进行实时迁移。

计划内维护有两种模式。

VM 客户控制的标准维护

  • VM 将在 30 天期限内转移到更新的主机。
  • Lsv3 和 Lasv3 本地存储数据可能会丢失,因此建议在事件发生前备份数据。

自动维护

  • 如果客户不执行自己控制的维护,或是因为需要执行应急过程(例如零日安全事件),则会发生此事件。
  • 旨在保留客户数据,但存在 VM 冻结或重启的风险(可能性很小)。
  • Lsv3 和 Lasv3 本地存储数据可能会丢失,因此建议在事件发生前备份数据。

对于即将发生的任何服务事件,请使用受控维护过程,选择最方便的更新时间。 在该事件发生之前,请在高级存储中备份数据。 在维护事件完成后,可以将数据返回到刷新后的 Lsv3 和 Lasv3 VM 本地 NVMe 存储。

在本地 NVMe 磁盘上维护数据的场景包括:

  • VM 正在运行且正常。
  • VM 已由你或 Azure 就地重启。
  • VM 已暂停(已停止但未解除分配)。
  • 大多数计划内维护检修操作。

会安全擦除数据以保护客户的场景包括:

  • VM 已(由你)重新部署、停止(解除分配)或删除。
  • VM 由于硬件问题而变得不正常,必须在另一个节点上进行检修和修复。
  • 一些计划内维护检修操作要求将 VM 重新分配到另一台主机进行检修。

常见问题

下面是关于这些系列的常见问题解答。

如何开始部署 L 系列 VM?

可以像创建任何其他 VM 一样,使用门户Azure CLIPowerShell 创建此类 VM。

单个 NVMe 磁盘发生故障是否会导致主机上的所有 VM 都发生故障?

如果在硬件节点上检测到磁盘故障,意味着该硬件处于故障状态。 出现这种问题时,该节点上的所有 VM 都将自动解除分配并转移到正常的节点。 对于 Lsv3 和 Lasv3 VM,此问题意味着还会安全擦除故障节点上的客户数据。 客户需要在新节点上重新创建数据。

是否需要更改 blk_mq 设置?

RHEL/CentOS 7.x 会自动将 blk-mq 用于 NVMe 设备。 无需进行任何配置更改或设置。

后续步骤

参阅 Azure 上已针对存储性能进行优化的所有 VM 的规格