你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

优化 Lsv3、Lasv3 和 Lsv2 系列 Linux VM 的性能

注意

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

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

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

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

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

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

AMD EPYC™ 芯片集体系结构

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

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

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

利用本地 NVMe 存储

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

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

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

计划内维护有两种模式。

VM 客户控制的标准维护

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

自动维护

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

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

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

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

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

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

常见问题

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

如何开始部署 L 系列 VM?

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

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

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

是否需要更改 blk_mq 设置?

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

后续步骤

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