性能指标
IOPS:应用程序在一秒钟内发送到存储磁盘的请求数,包括Read和Write数(单位时间内的次数)
IOPS可细分为如下几个指标:
- Toatal IOPS,混合读写和顺序随机I/O负载情况下的磁盘IOPS,这个与实际I/O情况最为相符,大多数应用关注此指标。
- Random Read IOPS,100%随机读负载情况下的IOPS。
- Random Write IOPS,100%随机写负载情况下的IOPS。
- Sequential Read IOPS,100%顺序读负载情况下的IOPS。
- Sequential Write IOPS,100%顺序写负载情况下的IOPS。
IO大小(IO Size):IO Size是取决于应用程序的设定,概念是应用程序单次请求磁盘读写的大小,比如数据库的IO大小一般是8KB,即每次读写8KB的数据。
吞吐量:应用程序在一段时间内发送到存储磁盘的数据量
吞吐量 = IOPS(应用程序一秒钟请求磁盘读写的次数) * IO Size(应用程序单次请求磁盘读写的大小)
延迟:接收单个请求、将其发送到存储磁盘并将响应发送到客户端所需的时间
同样来源数据量,吞吐量越大,延迟越低
计算下载时间:
eg:
For peak 4K write, the Unity with compression had sub-millisecond latency until just over 31K IOPS and peaked at 34K IOPS with 9.12ms latency. RAID5 made it to roughly 100K IOPS with latency under 1ms and peaked at 107,216 IOPS with 4.16ms latency. For RAID10, there was sub-millisecond latency until around 184.7K IOPS with a peak of 185,979 IOPS with 1.09ms latency.
4KB 100%写的情况下,Unity 450F的IOPS的100K IOPS,即每秒钟系统能处理100,000次IO请求
换算为吞吐量(带宽):
每秒100,000次4KB的数据写入,即100,000 * 4 = 400,000 KB/S,再将单位处理一下: 400,000/1024 = 390 MB/s -- 要再换算成GB/s也是可以的
那么1TB需要多久能写完呢?
1TB = 1*1024 * 1024=1,048,576 MB
1,048,576 / 390 = 2,688.6564 S秒 ; 2,688.6564/60=44.8109 Min分钟
一.磁盘类型
Ultra disks(超级磁盘):超级磁盘仅支持本地冗余存储 (LRS)
Premium SSD v2(高级SSD v2):仅支持本地冗余存储(LRS)配置
Premium SSDs (solid-state drives) (高级SSD v1):支持本地冗余存储 (LRS) 和区域冗余存储 (ZRS) 选项
Standard SSDs (标准SSD):支持本地冗余存储 (LRS) 和区域冗余存储 (ZRS) 选项
Standard HDDs (hard disk drives) (标准硬盘HDD):标准 HDD 仅支持本地冗余存储 (LRS)
数据冗余方式:
LRS和ZRS
本地冗余存储 (LRS) 磁盘:提供至少 99.999999999%(11 个 9)的持续性,原理一份数据三个副本,在同一个区域,对于写入请求,会同步到三个副本中才算成功
区域冗余存储 (ZRS) 磁盘: 提供至少 99.9999999999%(12 个 9)的持续性,原理一份数据三个副本,在三个区域,其他区域同步主区域的写请求,将数据同步写入到其他可用区域才算成功
只有高级 SSD 和标准 SSD 托管磁盘支持托管磁盘的 ZRS,高级 SSD v2 托管磁盘不支持托管磁盘的 ZRS。
二.对磁盘进行基准测试
两个工具:
diskspd和fio
1.diskspd
-c200G:创建(或重新创建)测试中使用的示例文件。它可以以字节、KiB、MiB、GiB 或块为单位设置。在这种情况下,使用 200 GiB 目标文件的大文件来最小化内存缓存。
-w100:指定写请求的操作百分比(-w0相当于100%读)。
-b4K:表示块大小,以字节、KiB、MiB 或 GiB 为单位。在本例中,使用 4K 块大小来模拟随机 I/O 测试。
-F4:设置总共四个线程。
-r:表示随机I/O测试(覆盖-s参数)。
-o128:指示每个线程每个目标的未完成 I/O 请求数。这也称为队列深度。在本例中,使用 128 来对 CPU 施加压力。
-W7200:指定测量开始前的预热时间。
-d30:指定测试的持续时间,不包括预热。
-Sh:禁用软件和硬件写入缓存(相当于-Suw)。
最大写入 IOPS
我们使用 128 的高队列深度、8 KB 的小块大小和四个工作线程来驱动写入操作。写入工作线程正在驱动“NoCacheWrites”卷上的流量,该卷具有三个磁盘,缓存设置为“None”
diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat
最大读取IOPS
我们使用 128 的高队列深度、4 KB 的小块大小和四个工作线程来驱动读取操作。读取工作人员正在驱动“CacheReads”卷上的流量,该卷有一个磁盘的缓存设置为“ReadOnly”。
运行以下命令进行两个小时的预热和 30 秒的测量:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
结果显示,Standard_D8ds_v4 VM 提供了 77,000 的最大读取 IOPS 限制。
2.fio工具
A.最大写入 IOPS
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[writer1]
rw=randwrite
directory=/mnt/nocache
创建具有以下规格的作业文件以获得最大写入 IOPS。将其命名为“fiowrite.ini”。
高队列深度为 256。
4 KB 的小块大小。
多个线程执行随机写入。
运行以下命令启动 FIO 测试 30 秒,
sudo fio --runtime 30 fiowrite.ini
测试运行时,您可以看到 VM 和 Premium 磁盘提供的写入 IOPS 数量。如下例所示,Standard_D8ds_v4 VM 提供的最大写入 IOPS 限制为 12,800 IOPS。
B.最大读取IOPS
创建具有以下规格的作业文件以获得最大读取 IOPS。将其命名为“fioread.ini”。
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
请注意以下关键事项,这些事项符合前面部分讨论的设计指南。这些规格对于驱动最大 IOPS 至关重要,
高队列深度为 256。
4 KB 的小块大小。
多个线程执行随机写入。
运行以下命令启动 FIO 测试 30 秒,
sudo fio --runtime 30 fioread.ini
测试运行时,您可以看到 VM 和 Premium 磁盘提供的读取 IOPS 数。如下例所示,Standard_D8ds_v4 VM 提供超过 77,000 次读取 IOPS。这是磁盘和缓存性能的组合。
三.应用程序所需的性能指标
四.程序性能测试工具
Windows: PerfMon
Linux: iostat
A.PerfMon展示图(cmd中使用perfmon会出现性能计数器)
B.iostat用法
示例:查看cpu状态
iostat -c 1 1
示例:查看磁盘使用率和响应时间
# -d 显示磁盘使用情况,-x 显示详细信息
iostat -d -x -k 1 1
其他示例
# 间隔1秒,总共显示5次
iostat 1 5
# 每隔2秒,显示一次设备统计信息
iostat -d 2
# 每隔2秒,显示一次设备统计信息,总共输出3次
iostat -d 2 3
# 每隔2秒显示一次sda, sdb两个设备的扩展统计信息,共输出3次
iostat -x sda sdb 2 3
# 每隔2秒显示一次sda及上面所有分区的统计信息,共输出3次
iostat -p sda 2 3
# 以M为单位显示所有信息
iostat -m
标签:存储,iostat,写入,IOPS,测试,Azure,磁盘,冗余 From: https://blog.51cto.com/u_9237101/7372650