0
点赞
收藏
分享

微信扫一扫

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试


【简介】

本文章将在Azure VM Linux 中使用FIO工具测试块存储性能,包括IOPS、吞吐量、时延等。因不同工具测试的硬盘基准性能会有差异,如dd、sysbench、iometer等工具可能会受到测试参数配置和文件系统影响,难以反映真实性能。本示例的性能参数,均为Linux系统下采用FIO工具的测试结果,以此作为存储性能测试的指标参考。


【一.性能指标概述】

衡量存储的性能指标主要包括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虚拟机

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_java

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_python_02

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_python_03

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_大数据_04

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_大数据_05

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_java_06

三. 远程连接云服务器

3.1 使用远程工具登陆到服务器中

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_python_07

3.2 切换至root用户账号,执行命令安装FIO工具进行测试

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_linux_08

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_mysql_09

3.3通过Fdisk命令查看当前分区

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_java_10

四.云盘性能测试

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_大数据_11

③测试总结:

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_linux_12

③测试总结:

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_linux_13

③测试总结:

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_mysql_14

③测试结果:

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_mysql_15

③测试结果:

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

②执行完毕对结果进行输出如下内容:

【Microsoft Azure 的1024种玩法】 十一. 手动对Azure磁盘进行IOPS性能压力测试_mysql_16

③测试结果:
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%

举报

相关推荐

0 条评论