首页 > 代码库 > Azure磁盘的吞吐量测试

Azure磁盘的吞吐量测试

Azure的高级存储具有吞吐量大,延迟低的特点,非常适合时间关键型的应用程序(如SQL Server, Oracle, Redis等)。

但高级存储同时具有价格高的特点,用户往往对其实际的性能数据较为关注。

 

本文将实际测试Azure的标准存储和高级存储的吞吐量情况并对测试结果进行分析

 

开始测试前,先解释几个概念:

 

延迟是指磁盘检索请求的信息并将其发送回应用程序所花的时间。

IOPS 是指应用程序在一秒内发送到存储磁盘的请求数。

吞吐量或带宽是指应用程序在一秒内从磁盘读取或写入的数据量。

 

吞吐量和 IOPS 之间存在一个关系,如以下公式所示:

技术分享

如果你使用的应用程序允许你更改 IO Size,则可使用以下这条法则来调整性能:

  • 通过降低 IO Size来提高 IOPS。例如,对 OLTP 应用程序使用 8 KB 的 IO Size。
  • 通过提高 IO Size来提高带宽/吞吐量。例如,对数据仓库应用程序使用 1024 KB 的 IO Szie。

一个磁盘的最大IOPS是在其IO Size最小时(一般为8KB)测出的,反之,其最大吞吐量是在IO Size最大时(一般为1024KB)测出来的。 

 

开展测试

 

1. 虚拟机情况:Standard DS3

技术分享

                                      

2. 添加128G的标准存储:

技术分享

 

3. 添加512G的高级存储: 

技术分享

 

 4.使用hdparm对以上两种存储进行吞吐量测试:

技术分享

(/dev/sdc为标准存储,/dev/sdd为高级存储)

 

5. 测试结论:

从以上测试,我们可以看到Azure标准存储的吞吐量达到63.23MB/s,超过其设定的吞吐量阈值(60MB/s)

但高级存储的吞吐量为125.12MB/s,离其设定的吞吐量阈值(150MB/s)有一定的距离

 

6. 测试结果分析:

从标准存储的测试结果来看,hdparm是能够测试出存储的最大吞吐量的,因此不存在测试工具的问题。 

那么为什么最大吞吐量为150MB/s的高级存储,其测试结果仅为125.12MB/s 呢? 哪里出问题了?

原来磁盘的吞吐量测试不仅受到磁盘本身性能的影响,也受到虚拟机的影响。当虚拟机性能成为瓶颈时,

磁盘的最大性能也无法发挥出来。

 

 

根据Azure虚拟机大小的官方说明,Standard DS3的虚拟机支持的最大吞吐量为128MB/s。

因此我们的测试结果125.12MB/s是合理的,体现的是Standard DS3 虚拟机的最大吞吐量。

 

7. 验证

为了更进一步验证,我创建了一台Standard DS4的虚拟机,其最大吞吐量高达256MB/s

技术分享

 

添加一样的最大吞吐量为150MB/s的高级存储

技术分享

技术分享

 此时测试结果显示,高级存储的最大吞吐量为147.50MB/s。虚拟机不再成为性能的瓶颈

技术分享

 

8. 总结

 

存储吞吐量的测试结果取决于VM和磁盘限制的较小值。

 

Azure磁盘的吞吐量测试