原创作者:运维工程师 谢晋
Orion概述
- Orion说明
- Orion优缺点
- 优点
- 缺点
- 配置Orion
- Orion支持IO负载
- Orion可以支持下列IO负载:
- Orion测试
- 上传软件
- 解压Orion
- 验证设备是不是可以访问
- 测试
- 结果输出
- 参数
- 数据仓库
Orion说明
- Orion是Oracle提供的IO性能测试工具,运行该工具不需要安装oracle database软件或创建数据库。它可以模拟Oracle数据库的IO负载,也可以用来仿真ASM的条带化的功能。测试随机或顺序访问指定大小块的IO性能,性能指标包括:IOPS,MBPS,Latency(延迟时间)。
- 从Oracle Database 11g开始,Orion工具被集成到GI和Database软件中,所以在GRIDHOME/bin和GRID_HOME/bin和GRIDHOME/bin和ORACLE_HOME/bin目录下都可以找到这个工具。
下载地址:http://www.oracle.com/technetwork/topics/index-089595.html
Orion优缺点
优点
- 可以灵活指定IO负载,如小的随机IO,大的连续IO等。
- 不需要运行load runner以及录制相关的动作。
- 不需要运行oracle数据库以及准备大量的测试数据就能模拟oracle数据库运行时的IO负载。
- 测试结果更具有代表性,如随机IO测试中,该软件可以让存储的命中率接近为0,而更仿真出了磁盘的真实的IOPS,而其它的压力测试工具很难做到这些,并不能直接得到磁盘的IOPS及MBPS值。
- 可以根据需求制定读写比例。
缺点
- 无法根据实际情况自定义测试时长及负载情况,整个测试过程都是自动完成。
- 无法进行一些自定义的操作类型,如表的全表扫描、全索引扫描、数据入库测试等。
配置Orion
Orion支持IO负载
Orion可以支持下列IO负载:
- 小的随机的IO:OLTP的应用主要是随机的读写,大小和数据的块大小一样(一般是8K)。这样的应用主要是关注的吞吐量是IOPS和一个请求的平均延时时间。Orion可以仿真一个随机IO负载。指定的读写百分比,指定的IO大小,指定的IOs,IOs是分布在不同的磁盘上。
- 大的连续的IO:数据仓库的应用,数据装载,备份,和恢复会产生连续的读写流,这些读写是由多个1M的IO组成的。这些应用都是处理大数据量的数据,主要是关注总体的数据吞吐量MBPS
- 大的随机的IO: 一个连续的读写和其他的数据库活动同时访问磁盘。基于条带化,一个连续的读写扩展到多个磁盘上。因此,在磁盘的这个层次上,许多的连续的读写被看作随机的1M的IO,又被称作多用户的连续IO。
- 混合的负载: 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上传至服务器
解压Orion
# tar -zxvf orion_linux_x86-64.gz
创建Orion 输入文件选择一个名称作为-testname 的参数值,此参数为orion 的运行指定一个唯一的标识符,如果不指定该参数,将以orion为名称运行,生成的结果文件也以该名称为文件名的前面部分。
基于上一步骤中的testname指定的名称,创建Orion 输入文件,如:创建文件名mystest.lun的文件,在文件中写入需要测试的设备名称。
如下所示:
# cat mytest.lun /dev/sda1
验证设备是不是可以访问
# dd if=/dev/sda1 of=/dev/null bs=32k count=10241024+0 records in1024+0 records out33554432 bytes (34 MB) copied, 0.229851 s, 146 MB/s
验证在你的平台上已经有异步IO的类库
Orion测试完全是依赖异步的IO。在linux和solaris,类库libaio需要安装并被访问。环境变量名是LD_LIBRARY_PATH或者是LIBPATH,
测试
第一次测试,建议使用simple,simple测试衡量在不同的负载下的小随机读和大的随机读。这些结果给我一些想法,不同类型的IO和负载下的IO性能。simple测试的命令:
# ./orion_linux_x86-64 -run simple -testname mytest -num_disks 1ORION: ORacle IO Numbers -- Version 11.1.0.7.0mytest_20200430_0206Test will take approximately 9 minutesLarger caches may take longer
Orion生成的IO负载层次考虑了在mytest.lun文件中磁盘的数目。
结果输出
输出文件:
Orion将产生几个输出文件,
-
mytest_summary.txt: 这个文件包含:
a. 输入参数
b. 针对大的随机和连续的工作量下观察到的最大的吞吐量
c. 针对小的随机的工作量的IO速率
d. 针对小的随机的工作量的最小的延迟时间。# more mytest_20200430_0206_summary.txt ORION VERSION 11.1.0.7.0Commandline:-run simple -testname mytest -num_disks 1 This maps to this test:Test: mytestSmall IO size: 8 KBLarge IO size: 1024 KBIO Types: Small Random IOs, Large Random IOsSimulated Array Type: CONCATWrite: 0%Cache Size: Not EnteredDuration for each Data Point: 60 secondsSmall Columns:, 0Large Columns:, 0, 1, 2Total Data Points: 8Name: /dev/sda1 Size: 2097152001 FILEs found.Maximum Large MBPS=2393.90 @ Small=0 and Large=2Maximum Small IOPS=19354 @ Small=5 and Large=0Minimum Small Latency=0.09 @ Small=1 and Large=0
-
mytest_mbps.csv文件:
这是个csv文件。包含大的随机或者连续的IO工作量。所有的csv输出文件有个2维表。行代表大的IO负载层次。列代表小的IO负载层次。simple测试不包含大的和小的IO结合。所以MBPS文件只有一个列,0代表没有小的IO。# more mytest_20200430_0206_mbps.csv Large/Small, 0, 1, 2, 3, 4, 51, 1717.932, 2393.90
-
mytest_iops.csv: 这是个小的随机的IO工作量的IOPS吞吐量。
# more mytest_20200430_0206_iops.csv Large/Small, 1, 2, 3, 4, 50, 11663, 17002, 19104, 19149, 1935412
-
mytest_lat.csv: 这是个小的随机的IO工作量下的延迟时间。
# more mytest_20200430_0206_lat.csv Large/Small, 1, 2, 3, 4, 50, 0.09, 0.12, 0.16, 0.21, 0.2612
-
mytest_trace.txt: 包含扩展的,未处理的测试输出。
参数
输入参数:Orion可以使用命令的参数来测试任意一种工作量。
强制输入的参数:
run:测试运行的层次,这个选项提供simple,normal,advanced的层次。如果没有指定advanced,那么设置有些非强制的参数(-cache_size和-verbose)将会出错。
simple:产生小的随机的IO和大的连续的IO工作量。在这个选项中,小的随机的IO和大的连续的IO是分开测试的。这个参数对应下列的Orion调用:
./orion -run advanced -testname mytest
-num_disks1
-size_small 8 -size_large 1024 -type rand
-simulate concat -write 0 -duragion 60
-matrix basic
normal: 除了simple的功能外,还会产生小的随机的IO和大的连续的IO的结合。
./orion -run advanced -testname mytest
-num_disks 1
-size_small 8 -size_large 1024 -type rand
-simulate concat -write 0 -duragion 60
-matrix detailed
advanced: 如果用这个选项,用户需要指定可选的参数。
testname: 输入文件必须是.lun
num_disks: 实际测试的物理磁盘的数目。
可选的输入参数:
help:帮助信息
size_small: 小的随机工作量的IO的大小(KB)
size_large: 大的随机的或者连续工作量的大小(KB)。
type:大的IO的工作量(默认是rand):
rand:大的随机的IO
seq:大的连续的IO
num_streamIO: 每个大的连续读写流的IO数目。只是在-type seq下使用。
simulate:大的连续的IO工作量小的数据分布。
contact:串联指定的luns成一个虚拟的卷。在虚拟的卷上的连续的测试从某个点到一个lun的结束点。然后再到下一个lun。
raid0:在指定的luns上条带化成一个虚拟的卷。条带的大小是1M(和asm的条带大小一 致),可以通过参数-stripe来更改。
write: 和读相比的写的百分比,这个参数在小的随机的和大的连续的IO工作量下适用。在大的连续的IO,每个读写流要么是读要么是写。这个参数是指只是写百分比。写的数据都是垃圾数据。 写的测试将破坏的指定的lun。
cache_size: 存储阵列的读写缓存大小(MB)。针对大的连续的IO工作量,Orion将在每个测试点之前warm的cache。使用缓存大小来决定缓存操作。如果没有指定,将有个默认值。如果是0的话,将没有warm缓存。
duration: 每个测试点的时间。(默认是60)
matrix: 混合工作量测试的类型
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:打印进度和状态到控制台。
数据仓库
在数据仓库设计和管理的时候,IO性能是一个关键的部分,典型的数据仓库系统是IO集中,操作在大数据量上,数据加载,重建索引和创建物化视图。数据仓库支持的IO必须设计符合过度的需求。
数据仓库的存储配置是根据IO带宽,而不是总的容量。磁盘的容量比磁盘吞吐量速率发展快,结果少数几个磁盘可以存储大量的数据。但是大量的磁盘不能提供同样IO吞吐量。你可以用多个磁盘和管道来得到最大的带宽。条带化是一种方法来实现。实现一个大的条带大小(1M)来确保时间来定位磁盘和传输数据。
使用下列选项来仿真不同的数据仓库的工作量
run:使用advanced来仿真只读连续的IO
large:大的连续读的IO大小。这个参数是os io大小的整数倍。
type: 使用seq
num_streamIO: 增加这个参数来仿真并行执行操作。指定计划的并行度。一个好的开始点是CPU数目*一个CPU的线程数。
simulate:如果使用硬件条带化或者卷管理器条带化,则使用concat。如果还没有条带化,比如ASM,则使用raid0。默认条带大小是1M。
write:写占用的百分比。
matrix: 使用point来仿真单个连续工作量,或者使用col来仿真不断增加的大
的连续的工作量。
本文链接:https://my.lmcjl.com/post/7607.html
4 评论