首页 > 代码库 > 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磁盘的吞吐量测试