【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试
【简介】
本文章将在Azure VM Linux 中使用FIO工具测试块存储性能,包括IOPS、吞吐量、时延等。因不同工具测试的硬盘基准性能会有差异,如dd、sysbench、iometer等工具可能会受到测试参数配置和文件系统影响,难以反映真实性能。本示例的性能参数,均为Linux系统下采用FIO工具的测试结果,以此作为存储性能测试的指标参考。
【前期文章】
【Microsoft Azure 的1024种玩法】一.一分钟快速上手搭建宝塔管理面板
【Microsoft Azure 的1024种玩法】二.基于Azure云平台的安全攻防靶场系统构建
【Microsoft Azure 的1024种玩法】三.基于Azure云平台构建Discuz论坛
【Microsoft Azure 的1024种玩法】四. 利用Azure Virtual machines 打造个人专属云盘,速度吊打某云盘
【Microsoft Azure 的1024种玩法】五.基于Azure Cloud Shell 一站式创建Linux VM
【Microsoft Azure 的1024种玩法】六、使用Azure Cloud Shell对Linux VirtualMachines 进行生命周期管理
【Microsoft Azure 的1024种玩法】七.Azure云端搭建部署属于自己的维基百科
【Microsoft Azure 的1024种玩法】八. 基于Azure云端轻松打造一款好用的私有云笔记
【Microsoft Azure 的1024种玩法】九. Microsoft Azure云端轻松构建部署PostgreSQL数据库
【Microsoft Azure 的1024种玩法】十. 基于Azure App Service 快速上手部署 ASP.NET Web 应用
【Microsoft Azure 的1024种玩法】十一.手动对Azure磁盘进行IOPS性能压力测试
【一.性能指标概述】
衡量存储的性能指标主要包括IOPS、吞吐量和访问时延。
- IOPS(Input/Output Operations per Second)
IOPS指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,常用的IOPS指标包括顺序操作和随机操作,如下表所示
指标 | 描述 | 数据访问方式 |
---|---|---|
总IOPS | 每秒执行的I/O操作总次数 | 对硬盘存储位置的不连续访问和连续访问 |
随机读IOPS | 每秒执行的随机读I/O操作的平均次数 | 对硬盘存储位置的不连续访问 |
随机写IOPS | 每秒执行的随机写I/O操作的平均次数 | 对硬盘存储位置的不连续访问 |
顺序读IOPS | 每秒执行的顺序读I/O操作的平均次数 | 对硬盘存储位置的连续访问 |
顺序写IOPS | 每秒执行的顺序写I/O操作的平均次数 | 对硬盘存储位置的连续访问 |
-
吞吐量(Throughput)
吞吐量是指单位时间内可以成功传输的数据数量,单位为MB/s。如果您需要部署大量顺序读写的应用,例如Hadoop离线计算型业务等典型场景,需要关注吞吐量。 -
访问时延(Latency)
访问时延是指块存储处理一个I/O需要的时间,单位为s、ms或者μs。过高的时延会导致应用性能下降或报错。
二.创建Azure VM虚拟机
三. 远程连接云服务器
3.1 使用远程工具登陆到服务器中
3.2 切换至root用户账号,执行命令安装FIO工具进行测试
3.3通过Fdisk命令查看当前分区
四.云盘性能测试
4.1. 随机写IOPS测试
注意:本示例中,使用的设备名为/dev/sdc,需要根据实际情况替换。例如需要测试的云盘为/dev/sdb,则将以下示例命令中的/dev/sdc替换为/dev/sdb。
①执行命令如下进行随机写IOPS测试:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sdc -name=Rand_Write_Testing
②执行完毕对结果进行输出如下内容:
③测试总结:
WRITE: bw=13.4MiB/s (14.0MB/s), 13.4MiB/s-13.4MiB/s (14.0MB/s-14.0MB/s), io=1024MiB (1074MB), run=76465-76465msec
Disk stats (read/write): sdc: ios=38/261925, merge=0/0, ticks=2630/9752563, in_queue=9755193, util=99.94%
4.2 随机读IOPS测试:
①执行命令如下对随机读IOPS测试:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sdc -name=Rand_Read_Testing
②执行完毕对结果进行输出如下内容:
③测试总结:
Run status group 0 (all jobs):WRITE: bw=162MiB/s (170MB/s), 162MiB/s-162MiB/s (170MB/s-170MB/s), io=1024MiB (1074MB), run=6307-6307msec
Disk stats (read/write): sdc: ios=42/1991, merge=0/0, ticks=87/751662, in_queue=751749, util=98.32%
4.3 顺序写吞吐量测试
①执行命令如下进行
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sdc -name=Write_PPS_Testing
②执行完毕对结果进行输出如下内容:
③测试总结:
Run status group 0 (all jobs):
WRITE: bw=163MiB/s (171MB/s), 163MiB/s-163MiB/s (171MB/s-171MB/s), io=1024MiB (1074MB), run=6266-6266msec
Disk stats (read/write): sdc: ios=42/1993, merge=0/0, ticks=69/746895, in_queue=746964, util=97.42%
4.4 顺序读吞吐量测试:
①执行命令如下进行顺序读吞吐量测试
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sdc -name=Read_PPS_Testing
②执行完毕对结果进行输出如下内容:
③测试结果:
Run status group 0 (all jobs):READ: bw=163MiB/s (171MB/s), 163MiB/s-163MiB/s (171MB/s-171MB/s), io=1024MiB (1074MB), run=6281-6281msec
Disk stats (read/write): sdc: ios=2008/0, merge=0/0, ticks=752877/0, in_queue=752877, util=96.54%
4.5.随机写时延测试
①执行命令如下进行随机写时延测试
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/sdc-name=Rand_Write_Latency_Testing
②执行完毕对结果进行输出如下内容:
③测试结果:
Run status group 0 (all jobs): WRITE: bw=1755KiB/s (1797kB/s), 1755KiB/s-1755KiB/s (1797kB/s-1797kB/s), io=1024MiB (1074MB), run=597520-597520msec
Disk stats (read/write): sdc: ios=31/262087, merge=0/0, ticks=53/307205, in_queue=307258, util=93.31%
4.6.随机读时延测试:
①执行命令如下进行随机读时延测试
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/sdc -name=Rand_Read_Latency_Testing
②执行完毕对结果进行输出如下内容:
③测试结果:
Run status group 0 (all jobs): READ: bw=979KiB/s (1002kB/s), 979KiB/s-979KiB/s (1002kB/s-1002kB/s), io=1024MiB (1074MB), run=1071206-1071206msec
Disk stats (read/write): sdc: ios=262097/0, merge=0/0, ticks=467710/0, in_queue=467710, util=65.17%