优化 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 的每个 I/O 队列对,支持的最大 NVMe 设备队列深度为 1024。 建议 Lsv3 和 Lasv3 用户限制其(综合)基准测试工作负荷,使其队列深度为 1024 或更低,以避免触发队列完整条件,从而降低性能。
  • 直接对具有未分区、无文件系统、无 RAID 配置等特点的每个原始 NVMe 设备执行 I/O 操作时,可以获得最佳性能。启动测试会话之前,请在每个 NVMe 设备上运行 blkdiscard,确保配置处于已知的最新/干净状态。 若要在基准测试期间获得最一致的性能,建议在测试之前通过向 SNIA 固态存储企业性能测试规范中定义的所有设备的 LBA 两次发出随机写入来设置 NVMe 设备的前提条件。

利用本地 NVMe 存储

所有 Lsv3 和 Lasv3 虚拟机上 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 虚拟机,这个问题意味着客户在故障节点上的数据也会被安全删除。 客户需要在新节点上重新创建数据。

是否需要更改 blk_mq 设置?

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

后续步骤

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