oracleorion测试io性能地工具.doc
oracle orion 测试io性能的工具!Oracle orionorion,一款由Oracle公司提供,专门用于模拟数据库运行机制来测试存储的优秀IO存储测试软件,可以在不运行oracle数据库的情况下,仿真OLTP随机操作测试IOPS或者是OLAP连续性操作测试吞吐量。IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。Mbps (MB per Second)传输速率是指集线器的数据交换能力,也叫“带宽,单位是Mbps(兆位/秒)。测试命令示例1、数据库OLTP类型,假定IO类型全部是8K随机操作,压力类型,自动加压,从小到大,一直到存储压力极限 cpp view plaincopyprint?1. #./orion -run advanced -testname dave -num_disks 1 -size_small 8 -size_large 8 -type rand 2、数据库OLAP类型,吞吐量测试,假定IO全部是1M的序列性IOcpp view plaincopyprint?1. #./orion -run advanced -testname mytest -num_disks 96 -size_small 1024 -size_large 1024 -type seq 必选输入参数:run、testname、num_disksrun:测试运行的层次,这个选项提供simple,normal,advanced的层次。Simple:简单的测试小的随机的IO默认8k以与大IO的连续的IO默认1024K。在这个选项中,小的随机的IO和大的连续的IO是分开测试的。这个参数对应如下的Orion调用:cpp view plaincopyprint?1. ./orion -run advanced -testname mytest -num_disks 4 -size_small 8 -size_large 1024 -type rand -simulate concat -write 0 -duragion 60 -matrix basic Normal:除了simple的功能外,还会产生小的随机的IO和大的连续的IO的结合。这个参数对应如下的Orion调用:cpp view plaincopyprint?1. ./orion -run advanced -testname mytest -num_disks 4 -size_small 8 -size_large 1024 -type rand -simulate concat -write 0 -duragion 60 -matrix detailed Advanced:用这个选项,用户需要指定可选的参数。testname: 输入文件必须是<testname>.lun。在这里只需要输入<testname>,不需要文件的后缀名,输入了反而会报错。num_disks: 实际测试的物理磁盘的数目。可选的输入参数:size_small: 小的随机工作量的IO的大小KB。size_large: 大的随机的或者连续工作量的大小KB。type:大的IO的工作类型默认是rand: rand:大的随机的IO。 seq:大的连续的IO。write: 和读相比的写的百分比,这个参数在小的随机的和大的连续的IO工作量下适用。在大的连续的IO,每个读写流要么是读要么是写。这个参数是指只是写百分比。写的数据都是垃圾数据。 写的测试将破坏的指定的lun。num_streamIO: 每个大的连续读写流的IO数目。只是在-type seq下使用。simulate:大的连续的IO工作量小的数据分布。 contact:串联指定的luns成一个虚拟的卷。在虚拟的卷上的连续的测试从某个点到一个lun的完毕点。然后再到下一个lun。 raid0:在指定的luns上条带化成一个虚拟的卷。条带的大小是1M和asm的条带大小一致,可以通过参数-stripe来更改。cache_size: 存储阵列的读写缓存大小MB。针对大的连续的IO工作量,Orion将在每个测试点之前warm的cache。使用缓存大小来决定缓存操作。如果没有指定,将有个默认值。如果是0的话,将没有warm缓存。duration: 每个测试点的时间。默认是60matrix: 混合工作量测试的类型 basic:没有混合的工作量,小的随机的IO和大的连续的IO分开测试。 detailed:小的随机的IO和大的连续的IO结合起来测试。 point: 单个测试点,S代表小的随机的IO,L代表大的随机/连续的IO。S -num_small L -num_large col: 大的随机/连续的IO row: 小的随机的IO max:和detailed一样,只是在最大的负载下测试工作量。可以用-num_small和 -num_large参数指定。num_small: 小的随机的IO的最大数目。num_large: 大的随机的IO或者一个读写流的并发数目。verbose:打印进度和状态到控制台。该软件的运行只需要一个配置文件,<testname>.lun,配置了测试所需要用到的磁盘信息,而分别返回如下信息:<testname>_iops.csv:不同压力类型的IOPS值<testname>_mbps.csv:不同压力类型的吞吐量<testname>_lat.csv:不同压力类型下的响应时间<testname>_summary.txt:测试结果的汇总信息如果你的数据库IO请求主要是单个块,那就关注IOPS,如果数据库IO请求主要是多个块,那就关注MBPS。10gR2数据库:可以从视图v$sysstat得到IO的类型。 单个数据块的读:"physical read total IO requests" - "physical read total multi block requests" 多个数据块的读:"physical read total multi block requests" 读的总和:"physical read total IO requests" 单个数据块的写:"physical write total IO requests" - "physical write total multi block requests" 多个数据块的写:"physical write total multi block requests" 写的总和:"physical write total IO requests"sql view plaincopyprint?1. SQL> select name, value from v$sysstat 2. where name in ('physical read total IO requests', 3. 'physical read total multi block requests', 4. 'physical write total IO requests', 5. 'physical write total multi block requests'); 6. 7. NAME VALUE 8. - - 9. physical read total IO requests 26266365 10. physical read total multi block requests 25005766 11. physical write total IO requests 22009267 12. physical write total multi block requests 11784636 看上面的数据库很明显就是传说中的数据库仓库撒,全部是多个快的读写。sql view plaincopyprint?1. SQL> select name, value from v$sysstat 2. where name in ('physical read total IO requests', 3. 'physical read total multi block requests', 4. 'physical write total IO requests', 5. 'physical write total multi block requests'); 6. 7. NAME VALUE 8. - - 9. physical read total IO requests 4187936 10. physical read total multi block requests 581451 11. physical write total IO requests 3425116 12. physical write total multi block requests 719574 看上面的数据库就是OLTP数据库,单个块的读写占大局部。开始使用Orion安装orioncpp view plaincopyprint?1. rootlinux orion# pwd 2. /opt/orion 3. rootlinux orion# ll 4. 总计 11640 5. -rw-r-r- 1 root root 11901381 05-30 22:07 orion_linux_x86.gz 6. rootlinux orion# gunzip orion_linux_x86.gz 7. rootlinux orion# mv orion_linux_x86 orion 8. rootlinux orion# chmod 777 orion 9. rootlinux orion# ll 10. 总计 37300 11. -rwxrwxrwx 1 root root 38148082 05-30 22:07 orion 选择测试名,可以看见test1就是我们的测试名字。cpp view plaincopyprint?1. rootlinux orion# ll 2. 总计 37304 3. -rwxrwxrwx 1 root root 38148082 05-30 22:07 orion 4. -rw-r-r- 1 root root 18 05-30 22:18 test1.lun 5. rootlinux orion# cat test1.lun 6. /dev/sdb 7. /dev/sdc 验证设备是不是可以访问cpp view plaincopyprint?1. rootlinux # dd if=/dev/sdb of=/dev/null bs=32k count=1024 2. 1024+0 records in 3. 1024+0 records out 4. 33554432 bytes (34 MB) copied, 0.0224968 seconds, 1.5 GB/s 5. rootlinux # dd if=/dev/sdc of=/dev/null bs=32k count=1024 6. 1024+0 records in 7. 1024+0 records out 8. 33554432 bytes (34 MB) copied, 0.044479 seconds, 754 MB/s 开始测试cpp view plaincopyprint?1. rootlinux orion# ./orion -run advanced -testname test1 -num_disks 2 -size_small 8 -size_large 8 -type rand 2. ORION: ORacle IO Numbers - Version 11.1.0.7.0 3. test1_20120530_2220 4. Test will take approximately 16 minutes 5. Larger caches may take longer 输出文件cpp view plaincopyprint?1. rootlinux # cd /opt/orion/ 2. rootlinux orion# ll 3. 总计 37312 4. -rwxrwxrwx 1 root root 38148082 05-30 22:07 orion 5. -rw-r-r- 1 root root 0 05-30 22:20 test1_20120530_2220_iops.csv 6. -rw-r-r- 1 root root 0 05-30 22:20 test1_20120530_2220_lat.csv 7. -rw-r-r- 1 root root 0 05-30 22:20 test1_20120530_2220_mbps.csv 8. -rw-r-r- 1 root root 348 05-30 22:20 test1_20120530_2220_summary.txt 9. -rw-r-r- 1 root root 787 05-30 22:22 test1_20120530_2220_trace.txt 10. -rw-r-r- 1 root root 18 05-30 22:18 test1.lun cpp view plaincopyprint?1. rootlinux orion# cat test1_20120530_2220_summary.txt 2. ORION VERSION 11.1.0.7.0 3. 4. mandline: 5. -run advanced -testname test1 -num_disks 2 -size_small 8 -size_large 8 -type rand -测试命令 6. 7. This maps to this test: -下面是测试参数 8. Test: test1 9. Small IO size: 8 KB 10. Large IO size: 8 KB 11. IO Types: Small Random IOs, Large Random IOs 12. Simulated Array Type: CONCAT 13. Write: 0% 14. Cache Size: Not Entered 15. Duration for each Data Point: 60 seconds 16. Small Columns:, 0 17. Large Columns:, 0, 1, 2, 3, 4 18. Total Data Points: 15 19. 20. Name: /dev/sdb Size: 8589934592 -可以看见测试的磁盘大小是8G 21. Name: /dev/sdc Size: 8589934592 22. 2 FILEs found. 23. 24. Maximum Large MBPS=40.95 Small=0 and Large=3 -大io的mbps 25. Maximum Small IOPS=7454 Small=10 and Large=0 -小io的iops 26. Minimum Small Latency=0.29 Small=1 and Large=0 -小io的响应时间 test1_20120530_2220_mbps.csv 这是个csv文件。包含大的随机或者连续的IO工作量。所有的csv输出文件有个2维表。行代表大的IO负载层次。列代表小的IO负载层次。由于这个测试不包含大的和小的IO结合。所以MBPS文件只有一个列,0代表没有小的IO。cpp view plaincopyprint?1. rootlinux orion# cat test1_20120530_2220_mbps.csv 2. Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 3. 1, 23.34 4. 2, 32.46 5. 3, 40.95 6. 4, 40.53 这是个小的随机的IO工作量的IOPS吞吐量。cpp view plaincopyprint?1. rootlinux orion# cat test1_20120530_2220_iops.csv 2. Large/Small, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 3. 0, 3438, 4663, 5193, 5349, 5498, 5542, 6741, 6863, 7209, 7454 4. 1 5. 2 6. 3 7. 4 这是个小的随机的IO工作量下的延迟时间。cpp view plaincopyprint?1. rootlinux orion# cat test1_20120530_2220_lat.csv 2. Large/Small, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 3. 0, 0.29, 0.43, 0.58, 0.75, 0.91, 1.08, 1.04, 1.16, 1.24, 1.33 4. 1 5. 2 6. 3 7. 4 包含扩展的,未处理的测试输出。4.1、数据库OLTP类型,假定IO类型全部是8K随机操作,压力类型,自动加压,从小到大,一直到存储压力极限#./orion -run advanced -testname dave-num_disks 1 -size_small 8 -size_large 8 -type rand & 4.2、数据库吞吐量测试,假定IO全部是1M的序列性IO#./orion -run advanced -testname mytest-num_disks 96 -size_small 1024 -size_large 1024 -type seq & 4.3、指定特定的IO类型与IO压力,如指定小IO为压力500的时候,不同大IO下的压力情况#./orion -run advanced -testname mytest-num_disks 96 -size_small 8 -size_large 128 -matrix col -num_small 500 -typerand & 4.4、结合不同的IO类型,测试压力矩阵#./orion -run advanced -testname mytest-num_disks 96 -size_small 8 -size_large 128 -matrix detailed -type rand &