磁盘性能指标

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

Azure 在 Azure 门户中提供了指标,这些指标可说明虚拟机 (VM) 和磁盘的性能情况。 还可以通过 API 调用来检索这些指标。 本文分为 3 个部分:

  • 磁盘 I/O、吞吐量、队列深度和延迟指标 - 这些指标从磁盘和虚拟机的角度帮助你查看存储性能。
  • 磁盘突发指标 - 通过这些指标可以观测高级磁盘中的突发特征。
  • 存储 I/O 利用率指标 - 这些指标有助于诊断磁盘存储性能中的瓶颈。

大多数指标每分钟发出一次。 Azure 每五分钟发出一次突发信用百分比指标,每小时发出一次 磁盘按需突发操作 指标。

磁盘 I/O、吞吐量、队列深度和延迟指标

以下指标可用于获取有关 VM 和磁盘 I/O、吞吐量和队列深度性能的见解:

  • OS 磁盘延迟(预览版):在监视 OS 磁盘期间完成 I/O 操作的平均时间。 此指标仅适用于使用 SCSI 磁盘控制器附加到 VM 的磁盘,而不适用于使用 NVMe 磁盘控制器附加到 VM 的磁盘。 值以毫秒为单位。
  • OS 磁盘队列深度:等待读取或写入 OS 磁盘的当前未完成 I/O 请求数。
  • OS 磁盘读取字节数/秒:每秒从 OS 磁盘中读取的字节数。 如果启用了只读或读/写 磁盘缓存 ,则此指标包括从缓存中读取的字节。
  • OS 磁盘读取操作次数/秒:每秒从 OS 磁盘读取的输入操作的次数。 如果启用了只读或读写 磁盘缓存,则此指标包括来自缓存的读取 IOPS。
  • OS 磁盘写入字节数/秒:每秒在 OS 磁盘中写入的字节数。
  • OS 磁盘写入操作次数/秒:每秒在 OS 磁盘中写入的输出操作的次数。
  • 数据磁盘延迟(预览版):在监视数据磁盘期间完成 I/O 操作的平均时间。 此指标仅适用于使用 SCSI 磁盘控制器附加到 VM 的磁盘,而不适用于使用 NVMe 磁盘控制器附加到 VM 的磁盘。 值以毫秒为单位。
  • 数据磁盘队列深度:等待从数据磁盘读取或写入数据磁盘的当前未完成 I/O 请求数。
  • 数据磁盘读取字节数/秒:从数据磁盘每秒读取的字节数。 如果启用了只读或 Readwrite 磁盘缓存 ,则此指标包括从缓存中读取的字节。
  • 数据磁盘读取操作数/秒:从数据磁盘每秒读取的输入操作数。 如果启用了只读或读写 磁盘缓存,则此指标包括来自缓存的读取 IOPS。
  • 数据磁盘写入字节数/秒:每秒在数据磁盘中写入的字节数。
  • 数据磁盘写入操作次数/秒:每秒在数据磁盘中写入的输出操作的次数。
  • 磁盘读取字节数:从附加到 VM 的所有磁盘中每分钟读取的总字节数。 如果启用了只读或 Readwrite 磁盘缓存 ,则此指标包括从缓存中读取的字节。
  • 磁盘读取操作次数/秒:每秒从附加到某个 VM 的所有磁盘中读取的输入操作的次数。 如果启用了只读或读写 磁盘缓存,则此指标包括来自缓存的读取 IOPS。
  • 磁盘写入字节数:每分钟从附加到某个 VM 的所有磁盘中写入的字节数。
  • 磁盘写入操作次数/秒:每秒在附加到某个 VM 的所有磁盘中写入的输出操作的次数。
  • 临时磁盘延迟(预览版):在监视临时磁盘期间完成 I/O 操作的平均时间。 此指标不适用于 NVMe 临时存储磁盘。 值以毫秒为单位。
  • 临时磁盘队列深度:等待从临时磁盘读取或写入临时磁盘的当前未完成 I/O 请求数。 此指标不适用于 NVMe 临时存储磁盘。
  • 临时磁盘读取字节数/秒 - 每秒从临时磁盘中读取的字节数。 此指标不适用于 NVMe 临时存储磁盘。
  • 临时磁盘读取操作数/秒 - 每秒从临时磁盘读取的输入操作的数量。 此指标不适用于 NVMe 临时存储磁盘。
  • 临时磁盘写入字节数/秒 - 每秒在临时磁盘中写入的字节数。 此指标不适用于 NVMe 临时存储磁盘。
  • 临时磁盘写入操作数/秒 - 每秒在临时磁盘中写入的输出操作的数量。 此指标不适用于 NVMe 临时存储磁盘。

注意

磁盘指标无法记录托管磁盘内的 CRUD(创建、读取、更新、删除)操作。

突发指标

以下指标有助于监控我们高级磁盘上的突发功能:

  • 数据盘最大突发带宽:数据盘可突发达到的吞吐量上限。
  • 操作系统磁盘最大突发带宽:操作系统磁盘可突发达到的吞吐量上限。
  • 数据磁盘最大突发 IOPS:一个或多个数据磁盘可突增至的 IOPS 上限。
  • 操作系统磁盘最大突发 IOPS:操作系统磁盘可突发达到的 IOPS 上限。
  • 数据磁盘目标带宽:数据磁盘在不突发的情况下可达到的吞吐量限制。
  • OS 磁盘目标带宽:OS 磁盘在不突发的情况下可达到的吞吐量限制。
  • 数据磁盘目标 IOPS:数据磁盘在不突发的情况下可达到的 IOPS 限制。
  • OS 磁盘目标 IOPS:OS 磁盘可以在不突发的情况下实现的 IOPS 限制。
  • 数据盘已使用的突发 BPS 额度百分比:数据盘已使用的吞吐量突发额度的累积百分比。 每隔 5 分钟发出一次。
  • OS 磁盘已用突发 BPS 额度百分比:OS 磁盘已使用的吞吐突发额度的累计百分比。 每隔 5 分钟发出一次。
  • 数据磁盘已用突发 IO 积分百分比:数据磁盘的 IOPS 突发积分累计使用百分比。 每隔 5 分钟发出一次。
  • OS 磁盘已用突发 IO 额度百分比:OS 磁盘所用 IOPS 突发的累积百分比。 每隔 5 分钟发出一次。
  • 磁盘按需突发操作:启用按需突发的磁盘所使用的突发事务的累计操作数。 每隔 1 小时发出一次。

虚拟机突发指标

以下指标提供有关 VM 级突发的见解:

  • VM 未缓存已使用的突发 IOPS 额度百分比:VM 未缓存 IOPS 突发额度的累计已用百分比。 每隔 5 分钟发出一次。
  • VM 未缓存已使用突发 BPS 额度百分比:VM 未缓存吞吐量突发额度已使用的累计百分比。 每隔 5 分钟发出一次。
  • VM 缓存已使用的突发 IOPS 积分百分比:VM 缓存已使用的突发 IOPS 的累计百分比。 每隔 5 分钟发出一次。
  • VM 缓存已用突发 BPS 额度百分比:VM 缓存吞吐量突发额度已使用的累计百分比。 每隔 5 分钟发出一次。

存储 I/O 利用率指标

以下指标有助于确定虚拟机和磁盘组合的瓶颈。 这些指标仅适用于支持高级存储的 VM 系列。

帮助诊断磁盘 I/O 上限的指标:

  • 数据磁盘 IOPS 使用百分比:通过将实际完成的数据磁盘 IOPS 除以预配的数据磁盘 IOPS 计算得出的百分比。 如果此值达到 100%,则表示您的应用程序的 I/O 已受数据磁盘的 IOPS 限制所约束。
  • 数据磁盘带宽使用百分比:通过将实际完成的数据磁盘吞吐量除以预配的数据磁盘吞吐量计算得出的百分比。 如果此值达到 100%,则表示您的应用程序的 I/O 受数据磁盘带宽上限的限制。
  • OS 磁盘 IOPS 使用百分比:通过将实际完成的 OS 磁盘 IOPS 除以预配的 OS 磁盘 IOPS 计算得出的百分比。 如果此值达到 100%,则表示您的应用程序的 I/O 已受操作系统磁盘的 IOPS 上限限制。
  • OS 磁盘带宽使用百分比:通过将实际完成的 OS 磁盘吞吐量除以预配的 OS 磁盘吞吐量计算得出的百分比。 如果此值达到 100%,则表示您的应用程序受操作系统磁盘带宽上限的 I/O 限制。

帮助诊断 VM I/O 上限的指标:

  • VM 缓存 IOPS 使用百分比:通过将实际完成的缓存 IOPS 总数除以最大缓存虚拟机 IOPS 限制计算得出的百分比。 如果此值达到 100%,则表示你的应用程序的 I/O 已受到 VM 缓存 IOPS 上限的限制。
  • VM 缓存带宽使用百分比:通过将实际完成的总缓存吞吐量除以最大缓存虚拟机吞吐量计算得出的百分比。 如果此值达到 100%,则表示应用程序的 I/O 已受 VM 缓存带宽上限限制。
  • VM 未缓存的 IOPS 消耗百分比:通过将虚拟机上完成的实际未缓存 IOPS 总数除以最大未缓存虚拟机 IOPS 限制计算的百分比。 如果此值达到 100%,则你的应用程序的 I/O 会受到 VM 未缓存 IOPS 上限的限制。
  • VM 非缓存带宽使用百分比:通过将虚拟机上已完成的总实际未缓存吞吐量除以最大预配虚拟机吞吐量计算得出的百分比。 如果此值达到 100%,则表示您的应用程序的 I/O 已受 VM 非缓存带宽上限限制。

存储 I/O 指标示例

让我们通过一个示例来演示如何使用这些新的存储 I/O 利用率指标来帮助调试系统中出现瓶颈的位置。 系统设置与上一示例相同,但这次未缓存附加的 OS 磁盘。

设置:

  • Standard_D8s_v3
    • 缓存的 IOPS:16,000
    • 非缓存 IOPS:12,800
  • P30 OS 磁盘
    • IOPS:5,000
    • 主机缓存:已禁用
  • 两个 P30 数据磁盘 × 2
    • IOPS:5,000
    • 主机缓存:读取/写入
  • 两个 P30 数据磁盘 × 2
    • IOPS:5,000
    • 主机缓存:已禁用

让我们在此虚拟机和创建 I/O 活动的磁盘组合上运行基准测试。 若要了解如何对Azure上的存储 I/O 进行基准测试,请参阅Azure 磁盘存储上的应用程序基准测试。 通过基准测试工具,可以看到 VM 和磁盘组合可以实现 22,800 个 IOPS:

FIO 输出的屏幕截图,其中突出显示了 22,800 IOPS 的读取速率。

Standard_D8s_v3总共可以实现 28,800 IOPS。 使用指标,我们来调查发生了什么情况,并确定存储 I/O 瓶颈。 在左侧窗格中,选择“指标”:

IO-Utilization-Demo 虚拟机概述的屏幕截图,其中突出显示了“监视”下的指标。

我们先来看一下VM 缓存 IOPS 消耗百分比指标:

VM 缓存的 IOPS 已消耗百分比指标的屏幕截图,其平均值为 61%。

该指标表明,分配给 VM 缓存 IOPS 的 16,000 IOPS 中,已有 61% 正在被使用。 这一百分比表示,存储 I/O 瓶颈不在已缓存的磁盘上,因为该百分比并未达到 100%。 现在让我们来看一下VM 未缓存 IOPS 消耗百分比指标:

VM 未缓存的 IOPS 消耗百分比指标的屏幕截图,其平均值为 101%。

此指标为 100%。 此指标告诉我们,在 VM 上分配给未缓存 IOPS 的所有 12,800 IOPS 均已使用。 解决此问题的一种方法是将 VM 的大小更改为可以处理其他 I/O 的较大大小。 但在此之前,我们先看一下所附加的磁盘,了解其 IOPS 为多少。 通过查看OS 磁盘 IOPS 消耗百分比来检查 OS 磁盘:

OS 磁盘 IOPS 消耗百分比指标的屏幕截图,平均值为 87%。

该指标表明,此 P30 操作系统磁盘预配的 5,000 IOPS 中,大约 90% 正在被使用。 此百分比意味着 OS 磁盘上没有瓶颈。 现在,让我们通过查看数据磁盘 IOPS 消耗百分比来检查已附加到 VM 的数据磁盘:

所有附加数据磁盘平均消耗百分比指标的数据磁盘 IOPS 的屏幕截图,其中突出显示了“应用拆分”。

此指标告诉我们,在所有附加的磁盘上,平均已使用的 IOPS 百分比约为 42%。 此百分比是根据由这些磁盘使用且未从主机缓存中予以服务的 IOPS 计算得出的。 让我们通过对这些指标应用拆分,并按 LUN 值进行拆分,进一步深入分析这一指标:

按 LUN 拆分的数据磁盘 IOPS 消耗百分比的屏幕截图,其中 LUN 3 为 89%,LUN 2 为 82%,LUN 1 和 0 的 0%。

此指标告诉我们,LUN 3 和 2 上附加的数据磁盘使用了它们约 85% 的预配 IOPS。 下图显示了 VM 和磁盘体系结构中的 I/O 外观:

通过一个 P30 OS 磁盘、两个未缓存的 P30 数据磁盘和两个缓存的 P30 数据磁盘满足 22,800-IOPS 应用程序请求的Standard_D8s_v3 VM 示意图。

后续步骤