
IOPS说明磁盘性能测试.docx
26页1.2 示例 Device Type IOPS Interface Notes 7,200 rpm SATA drives HDD ~75-100 IOPS[2] SATA 3 Gb/s 10,000 rpm SATA drives HDD ~125-150 IOPS[2] SATA 3 Gb/s 15,000 rpm SAS drives HDD ~175-210 IOPS [2] SAS 二. IOPS 说明 2.1 IOPS (Input/OutputPer Second) IOPS 即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求随机读写频繁的应用,如OLTP(OnlineTransaction Processing),IOPS是关键衡量指标 另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标 传统磁盘本质上一种机械装置,如FC, SAS, SATA磁盘,转速通常为5400/7200/10K/15K rpm不等。
影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成 (1)寻道时间 Tseek是指将读写磁头移动至正确的磁道上所需要的时间寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms (2)旋转延迟 Trotation 是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms (3)数据传输时间 Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率目前IDE/ATA能达到133MB/s(MBPS),SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间 IOPS(每秒IO次数) = 1s/(寻道时间+旋转延迟+数据传输时间) 因此,理论上可以计算出磁盘的最大IOPS,即IOPS = 1000ms/ (Tseek + Troatation),忽略数据传输时间。
假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15Krpm,则磁盘IOPS理论最大值分别为: IOPS = 1000 / (3 + 60000/7200/2) = 140 IOPS = 1000 / (3 + 60000/10000/2) = 167 IOPS = 1000 / (3 + 60000/15000/2) = 200 2.2 固态硬盘的IOPS 固 态硬盘SSD是一种电子装置, 避免了传统磁盘在寻道和旋转上的时间花费,存储单元寻址开销大大降低,因此IOPS可以非常高,能够达到数万甚至数十万实际测量中,IOPS数值会受到 很多因素的影响,包括I/O负载特征(读写比例,顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等因此对比测量磁 盘IOPS时,必须在同样的测试基准下进行,即便如何也会产生一定的随机不确定性 通常情况下,IOPS可细分为如下几个指标: Toatal IOPS:混合读写和顺序随机I/O负载情况下的磁盘IOPS,这个与实际I/O情况最为相符,大多数应用关注此指标 Random Read IOPS:100%随机读负载情况下的IOPS。
Random WriteIOPS:100%随机写负载情况下的IOPS Sequential ReadIOPS:100%顺序负载读情况下的IOPS Sequential WriteIOPS:100%顺序写负载情况下的IOPS 三.ORION 工具说明 ORION (OracleI/O Calibration Tool) Oracle 公司推出的一个校准数据库的存储系统 I/O 性能的独立工具有关该工具的说明,参考: Oracle ORION IO 测试工具 我们使用ORION 工具测试一下看看: [root@qs-xe-dzora-pd software]# cat dave.lun /dev/sdb1 [root@qs-xe-dzora-pd software]# ./orion_linux_x86-64 -run advanced -testname dave -num_disks 2 ORION: ORacle IO Numbers -- Version11.1.0.7.0 dave_20111026_2026 Test will take approximately 16 minutes Larger caches may take longer 查看生成的结果: [root@qs-xe-dzora-pd software]# ls dave* dave_20111026_2026_iops.csv dave_20111026_2026_summary.txt dave.lun_20111026_2025_summary.txt dave_20111026_2026_lat.csv dave_20111026_2026_trace.txt dave_20111026_2026_mbps.csv dave.lun [root@qs-xe-dzora-pd software]# cat dave_20111026_2026_summary.txt ORION VERSION 11.1.0.7.0 Commandline: -run advanced -testname dave -num_disks 2 This maps to this test: Test: dave Small IO size: 8 KB Large IO size: 1024 KB IO Types: Small Random IOs, Large RandomIOs Simulated Array Type: CONCAT Write: 0% Cache Size: Not Entered Duration for each Data Point: 60 seconds Small Columns:, 0 Large Columns:, 0, 1, 2, 3, 4 Total Data Points: 15 Name: /dev/sdb1 Size: 449495069184 1 FILEs found. Maximum Large MBPS=159.61 @ Small=0 andLarge=4 Maximum Small IOPS=534 @ Small=10 andLarge=0 Minimum Small Latency=4.97 @ Small=1 andLarge=0 这里显示的吞吐量是160MBPS. IOPS 为534. kd Orion可以支持下列IO负载 1. 小的随机的IO:OLTP的应用主要是随机的读写,大小和数据的块大小一样(一般是8K)。
这样的应用主要是关注的吞吐量是IOPS和一个请求的平均延时时间Orion可以仿真一个随机IO负载指定的读写百分比,指定的IO大小,指定的IOs,IOs是分布在不同的磁盘上 2. 大的连续的IO:数据仓库的应用,数据装载,备份,和恢复会产生连续的读写流,这些读写是由多个1M的IO组成的这些应用都是处理大数据量的数据,主要是关注总体的数据吞吐量MBPS 3. 大的随机的IO: 一个连续的读写和其他的数据库活动同时访问磁盘基于条带化,一个连续的读写扩展到多个磁盘上因此,在磁盘的这个层次上,许多的连续的读写被看作随机的1M的IO,又被称作多用户的连续IO 4. 混合的负载: Orion可以同时仿真前俩种负载:小的随机的IO,大的连续的IO这将使你可以仿真,OLTP的8K的随机读写的负载和4个连续的1M IO读写的备份的负载 针对不同的IO负载,Orion可以在不同的IO压力测试并得到性能参数:MBPS,IOPS,和IO延迟时间负载是术语,代表异步的IOs的数目内部本质来说,每一个负载层次,Orion软件一直在尽快的发I/O请求来完成这个层次的I/O负载针对随机的负载(大的和小的),负载的层次就是I/Os的数目。
针对大的连续的负载,负载的层次就是连续的读写流和每次读写流的IO的数目在负载层次范围内测试指定的负载将帮助用户理解性能是怎么受影响的 测试目标: 理论上,ORION可以用来测试任何支持异步的字符设备ORION已经在下列类型的设备上测试过 1. DAS(directed_attatched)的存储:2. SAN(storage-area network)的存储:3. ORION没有在NAS(network-attached storage). ORION对存储设备的供应商:供应商可以用ORION来理解Oracle是如何来在存储上执行的也可以用Orion来找出适合Oracle最好的存储配置 ORION对Oracle管理员Oracle管理员可以根据期望的工作量使用Orion来评估和比较不同的存储阵列他们也可以用Orion来决定峰值时优化的网络连接数,存储阵列数,存储阵列控制器数,和磁盘数附录A描述了根据数据库现在的工作量来推测IOPS和MBPS需求 开始使用Orion1. 下载orion: 有Linux/x86,Solaris/SPARC 和Windows/x86版本2. 安装Orion Linux/Solaris:解压Orion执行文件。
gunzip orion_linux_x86-64.giz Windows: 运行安装程序 C:\temp> orion_windows_x86-64.msi 3. 选择测试名,我们使用的名是mytest 4. 创建文件名 mytest.lun,例如: /dev/raw/raw1 /dev/raw/raw2 ... /dev/raw/raw8 5. 验证设备是不是可以访问Linux可以用下面的命令: $ dd if=/dev/raw/raw1 f=/dev/null bs=32k count=1024 1024+0 records in 1024+0 records out 6. 验证在你的平台上已经有异步IO的类库Orion测试完全是依赖异步的IO在linux和solaris,类库libaio需要安装并被访问环境变量名是LD_LIBRARY_PATH或者是LIBPATH,window已经安装异步IO 7. 第一次测试,。












