IOPS

来源:互联网 发布:openwrt 域名白名单 编辑:程序博客网 时间:2024/05/24 03:19
计算磁盘IOPS的三个因素:
 
1、RAID类型的读写比
 
不同RAID类型的IOPS计算公式:

RAID类型

公式

RAID5RAID3

Drive IOPS=Read IOPS + 4*Write IOPS

RAID6

Drive IOPS=Read IOPS +  6*Write IOPS

RAID1RAID10

Drive IOPS=Read IOPS + 2*Write IOPS


2、硬盘类型的IOPS值
 
不同磁盘类型的IOPS:

硬盘类型

IOPS

FC 15K RPM

180

FC 10K RPM

140

SAS 15K RPM

180

SAS 10K RPM

150

SATA 10K RPM

290

SATA 7.2K RPM

80

SATA 5.4K RPM

40

Flash drive

2500


3、具体业务系统的读写比
 
二、案例

1) 业务需求: 10TB 的FC 15K RPM存储空间,满足6000 IOPS,计算RAID5RAID10分别需要多少块硬盘?

首先需要知道I/O中读操作与写操作所占的百分比。 假定6000 IOPS中读/写比是21

    不同的RAID类型Drive 硬盘实际IOPS负载分别如下:

RAID10:(2/3*6000+2*1/3*6000= 8000 IOPS

RAID5:(2/3*6000+4*1/3*6000=12000 IOPS

参照不同硬盘类型的IOPS值,换算出需要多少块盘:

RAID108000 /180 = 45

RAID512000/180 =67

2)    一个RAID5,是由5500G 10K RPMFC盘组成,换算出该RAID支持的最大IOPS以及能够给前端应用提供的IOPS?

首先10K RPMFC盘,单块盘的IOPS1405块盘最大IOPS值为700

假设读写比为21,能够提供给前端应用的IOPS为:

2/3*X+4*1/3*X = 700

         2*X = 700 
        
         X=350
 
         能够提供给前端应用的IOPS350


MySQL的QPS计算
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
计算差值
MySQL的TPS计算
show global status where Variable_name in('com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_insert','com_delete','com_update');
计算差值




磁盘IOPS计算与测量

IOPS 是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP,IOPS是关键衡量指标。
数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。
寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。
数据传输时间Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间。

因此,理论上可以计算出磁盘的平均最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为,
IOPS = 1000 / (3 + 60000/7200/2)  = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167

IOPS = 1000 / (3 + 60000/15000/2) = 200


固态硬盘SSD是一种电子装置, 避免了传统磁盘在寻道和旋转上的时间花费,存储单元寻址开销大大降低,因此IOPS可以非常高,能够达到数万甚至数十万。实际测量中,IOPS数值会受到很多因素的影响,包括I/O负载特征(读写比例,顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。
因此对比测量磁盘IOPS时,必须在同样的测试基准下进行,即便如何也会产生一定的随机不确定性。通常情况下,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。


IOPS的测试benchmark工具主要有Iometer, IoZone, FIO等,可以综合用于测试磁盘在不同情形下的IOPS。对于应用系统,需要首先确定数据的负载特征,然后选择合理的IOPS指标进行测量和对比分析,据此选择合适的存储介质和软件系统。下面的磁盘IOPS数据来自http://en.wikipedia.org/wiki/IOPS [1],给大家一个基本参考。


Oracle AWR
原创粉丝点击