缓存对 Azure 中磁盘性能的影响
与本地计算机很类似的是,虚拟机性能通常也与 VM 的数据读写速度直接相关。 为了解如何提高性能,我们首先要了解性能的测量方式。 我们还必须了解影响测量的设置和选择。
我们将专门了解用于 VM 的基础磁盘和存储。 了解性能时,请记得还必须考虑应用程序层。 例如,如果在 VM 中运行数据库,则需要了解数据库特定的性能设置,确保针对运行数据库的 VM 和存储进行了优化。
我们先来定义一些术语以及 Azure 就其给出的保证。
每秒 I/O 操作数
所选的存储类型(标准或高级)将决定磁盘的速度。 我们按每秒 I/O 操作数(即 IOPS,读作“eye-ops”)测量此性能。
IOPS 是磁盘在 1 秒钟内可处理的请求数。 单个请求是一次读取或写入操作。 该测量值直接应用于存储。 例如,如果你的磁盘能够执行 5000 IOPS,则表示理论上,它每秒可处理 5,000 次读取和/或写入操作。
注意
外部因素(包括延迟)可能会影响 IOPS。
IOPS 直接影响应用程序的性能。 某些应用程序(如零售网站)需要较高的 IOPS,这样才能处理必须快速处理以保证网站响应的所有小型和随机 I/O 请求。
Azure 中的 IOPS
将高级存储磁盘连接到高规格 VM 时,Azure 会根据磁盘规格预配保障数目的 IOPS。 例如,P50 磁盘预配 7500 IOPS。 每个大型 VM 还存在一个其所能承受的特定 IOPS 限制。 例如,标准 GS5 VM 的限制为 80,000 IOPS。
IOPS 是磁盘的性能度量值,但这是一个理论限制。 还有另外两个因素会影响实际应用程序的性能:吞吐量和延迟。
什么是吞吐量?
吞吐量是应用程序按指定的时间间隔(通常为每秒)发送到存储磁盘的数据量。 如果应用程序正在使用大量数据执行 I/O,则需要高吞吐量。
Azure 根据磁盘的规格在高级存储磁盘中提供吞吐量。 例如,P50 磁盘预配 250 MB/秒的磁盘吞吐量。 每个高规格 VM 还存在一个其所能承受的特定吞吐量限制。 例如,标准 GS5 VM 的最大吞吐量为 2,000 MB/秒。
IOPS 与吞吐量
吞吐量与 IOPS 直接相关,一项出现变化将直接影响另一项。 要获得吞吐量的理论限制,可以使用公式:IOPS x I/O size = throughput
。 请务必在规划应用程序时考虑这两个值。
什么是延迟?
读取和写入数据需要时间。 延迟是应用向磁盘发送请求并获得响应所需的时间。 从根本上讲,延迟显示了处理单个读取或写入 I/O 请求所需的时间。
延迟限制了 IOPS。 例如,如果我们的磁盘可处理 5000 IOPS,但处理每个操作需要 10 毫秒,则由于处理时间的原因,我们的应用被限制为每秒 500 次操作。 此示例是一个简单的图示,大多数情况下的延迟要低得多。 最终,延迟和吞吐量将决定应用处理存储数据的速度。
高级存储提供一致的低延迟,你可在必要时通过缓存来降低延迟。
测试磁盘性能
可选择适当的 VM 大小和存储类型,以调整并平衡 VM 磁盘的 IOPS、吞吐量和延迟。 通常,VM 越大或越昂贵,越能保证最大的 IOPS 和吞吐量。 将标准存储和高级存储、HDD 和 SSD 选项进行权衡,你可使用多项参数。
要选择正确的组合,请了解应用程序的要求。 高 I/O 应用程序(例如数据库服务器或在线事务处理系统)需要更高的 IOPS,而更基于计算的应用程序可能要求更低。 此外,应用程序执行的操作类型将影响吞吐量。 随机访问 I/O 较高,往往导致速度比长时间顺序读取的慢。
选择配置后,可使用 Iometer 等工具测试 Linux 和 Windows VM 上的磁盘性能。 此测试将让你更真实地了解所期望的性能。 它还有助于确定提高应用存储使用情况的方法。 例如,执行单线程 I/O 的应用程序可能因延迟而降低 I/O 性能。
在下一单元中,我们将了解还可采取哪些措施来提高磁盘性能。