笔记3 I/O Configuration and Design 2

I/O Calibration with the Oracle Orion Calibration Tool

本节介绍Oracle Orion校准工具并包含以下部分:

■Oracle Orion校准工具简介

■Orion入门

■Orion输入文件

■Orion参数

■Orion输出文件

■Orion疑难解答

Introduction to the Oracle Orion Calibration Tool

Oracle Orion是一种预测Oracle数据库性能的工具,无需安装Oracle或创建数据库。 与其他I / O校准工具不同,Oracle Orion专门用于使用与Oracle相同的I / O软件堆栈来模拟Oracle数据库I / O工作负载。 Orion还可以模拟Oracle自动存储管理所执行的分条效果。

表8-4列出了Orion支持的I / O工作负载类型。

对于表8-4中显示的每种类型的工作负载,Orion都可以使用不同的I / O负载来运行测试,以测量诸如MBPS,IOPS和I / O延迟等性能指标。负载用未完成异步I / O的数量表示。在内部,对于每个这样的负载水平,Orion软件会在完成I / O请求时一直发出I / O请求,以维持该级别的I / O负载。对于随机工作负载,使用大小I / O,负载级别是未完成I / O的数量。对于大型连续工作负载,负载级别是连续流数量和每个流的未完成I / O数量的组合。在一系列负载水平下测试给定的工作负载可帮助您了解性能如何受到负载的影响。

使用Orion时请注意以下事项:

■当存储处于空闲状态(或非常接近空闲状态)时运行Orion。 Orion基于其生成的I / O负载来校准存储的性能;如果非Orion I / O工作负载同时运行,Orion无法正确评估性能。

■如果在存储上创建了数据库,则可以使用PL / SQL例程dbms_resource_manager.calibrate_io()对存储进行校准。

上图内容解释:

小随机I / O:

OLTP应用程序通常会生成随机读取和写入,其大小等于数据库块大小,通常为8 KB。 此类应用程序通常关注每个I / O每秒(IOPS)的吞吐量以及每个请求的平均延迟(I / O转换时间)。 这些参数转化为应用层的事务处理速率和事务处理周转时间。

与写入相比,给定的I / O大小和给定数量的未完成I / O相比,Orion可以以给定的读取百分比模拟随机I / O工作负载。 在此Orion工作负载模拟中,I / O分布在所有磁盘上。

大型顺序I / O:

数据仓库应用程序,数据加载,备份和还原生成由多个未完成的1 MB I / O组成的连续读取和写入流。 此类应用程序正在处理大量数据,例如整个表或整个数据库,并且它们通常关注的是兆字节每秒(MBPS)的总体数据吞吐量。

Orion可以模拟给定数量的具有给定I / O数量的给定I / O大小的连续读取或写入数据流。 测试顺序流时,Orion可以选择模拟Oracle自动存储管理分条。

大型随机I / O:

顺序流通常与其他数据库流量同时访问磁盘。 通过分条,顺序流分布在多个磁盘上。 因此,在磁盘级别,多个顺序流视为随机1 MB I / O。

混合工作量:

Orion可以模拟两个并发工作负载:小型随机I / O和大型顺序I / O或大型随机I / O。 例如,此工作负载类型可模拟8 KB随机读取和写入的OLTP工作负载,其中包含4个连续的1 MB I / O读取流的备份工作负载。

每个Orion数据点是针对持续一段时间的小型和大型I / O负载的特定组合的测试。 Orion测试由多个数据点测试组成。 这些数据点测试可以表示为一个二维矩阵。 矩阵中的每一列都代表具有相同小I / O负载的数据点测试,但会有不同的大I / O负载。 每行表示具有相同大I / O负载的数据点测试,但是会有不同的小I / O负载。 Orion测试可以用于单个点,单个行,单个列或整个矩阵。

Orion Test Targets

您可以使用Orion来测试任何支持异步I / O的基于磁盘的字符设备。Orion已经在以下类型的目标上进行了测试:

■DAS(直连)存储:您可以使用Orion来测试本地主机上一个或多个本地磁盘,卷或文件的性能。

■SAN(存储区域网络)存储:Orion可以在任何将所有或部分SAN存储映射为字符设备的主机上运行。这些设备可以对应存储阵列或单个磁盘或一个或多个整个阵列导出的条带或非条带卷。

■NAS(网络附加存储):您可以使用Orion来测试NAS存储上数据文件的性能。通常,NAS存储上的性能结果取决于数据文件已创建和更新的I / O模式。因此,在运行Orion之前,您应该适当地初始化数据文件。

Orion for Oracle Administrators

Oracle管理员可以使用Orion根据预期的工作负载评估和比较不同的存储阵列。 Oracle管理员还可以使用Orion为预期的高峰工作负载确定最佳数量的网络连接,存储阵列,存储阵列控制器和磁盘。

Getting Started with Orion

要开始使用Orion,请执行以下操作:

1.选择与Orion -testname参数一起使用的测试名称。此参数为您的Orion运行指定一个唯一的标识符。例如,使用测试名称“mytest”。有关更多信息,请参阅第8-15页上的“Orion参数”。

2.根据测试名称创建一个Orion输入文件。例如,创建一个名为mytest.lun的文件。在输入文件中列出要测试的原始卷或文件。每行添加一个卷名称。不要在.lun文件中放置注释或其他任何内容。

例如,Orion输入文件可能包含以下内容:

/dev/raw/raw1

/dev/raw/raw2

/dev/raw/raw3

/dev/raw/raw4

/dev/raw/raw5

/dev/raw/raw6

/dev/raw/raw7

/dev/raw/raw8

有关更多信息,请参阅第8-15页的“Orion输入文件”。

3.验证输入文件中指定的所有卷(例如mytest.lun)是否可以使用命令dd或其他等效文件查看实用程序访问。例如,对于典型的健全性检查,请在Linux系统上尝试以下操作:

$ dd if = / dev / raw / raw1 of = / dev / null bs = 32k count = 1024

根据您的平台,您使用的文件查看实用程序及其界面可能有所不同。

4.验证您的平台安装了必要的库来执行异步I / O。 Orion测试完全依赖于异步I / O。在Linux和Solaris上,库libaio必须位于标准lib目录中,或者可以通过shell环境的库路径变量(通常为LD_LIBRARY_PATH或LIBPATH,取决于您的shell)进行访问。 Windows具有内置的异步I / O库,因此此问题不适用。

5.作为Orion的第一个测试,使用-run或oltp或dss选项。如果数据库主要是OLTP,则使用-run oltp。如果数据库主要用于数据仓库或分析,则使用-run dss。

例如,使用以下命令使用默认输入文件名称orion.lun运行类似OLTP的工作负载:

$ ./orion -run oltp

由Orion生成的I / O负载级别考虑了正在测试的磁盘主轴数量(或使用-num_disks参数指定)。请记住,主轴的数量可能与输入文件中指定的卷的数量相关,也可能不相关,具体取决于这些卷的映射方式。

6.第8-20页的“Orion输出文件”一节提供了显示Orion输出文件的示例结果。使用示例文件mytest_summary.txt是验证输入参数和分析输出的一个很好的起点。示例文件mytest _ *。csv包含多个I / O性能度量的逗号分隔值。有关更多信息,请参阅第8-20页的“Orion输出文件”。

Orion输入文件

当您指定Orion -testname 参数时,它将为Orion输入和输出文件名设置测试名称前缀。 -testname选项的默认值是“orion”。

Orion输入文件 .lun应该包含一个以回车分隔的列表。

Orion参数

使用Orion命令参数指定I / O工作负载类型并指定其他Orion选项。

Orion必需参数

Orion命令需要-run参数。 表8-5描述了-run参数。

Orion Optional Parameters

参数解释:

orion parameters 详解

option

description

default

–cache_size num

存储阵列的读取或写入缓存大小(以MB为单位)。 对于大型顺序I / O工作负载,Orion通过在每个数据点之前执行随机大型I / O来预热缓存。 Orion使用高速缓存大小来确定此高速缓存加热操作的持续时间。 如果设置为0,则不要执行缓存加温。

除非此选项设置为0,否则Orion会在每个大型顺序数据点之前发出几个不可测量的随机I / O。 这些I / O使用随机数据填充存储阵列的高速缓存(如果有),以便来自一个数据点的I / O不会导致下一个数据点的高速缓存命中。 读取测试之前是垃圾读取,写入测试之前是垃圾写入。 如果指定,则执行此“缓存预热”,直到读取或写入num个I / O MB。

如果未指定,则会在默认时间(两分钟)内发生加温。 也就是说,在每个数据点之前发出两分钟未测量的随机I / O。

–duration num_seconds 

将持续时间设置为以秒为单位测试每个数据点的值为num_seconds。

Default Value: 60

–matrix type  

混合工作负载的类型,用于测试一系列负载。 Orion测试由多个数据点测试组成。数据点测试可以表示为一个二维矩阵。

矩阵中的每一列都代表具有相同小I / O负载的数据点测试,但会有不同的大I / O负载。每行表示具有相同大I / O负载的数据点测试,但是会有不同的小I / O负载。 Orion测试可以针对单点,单行,单列或整个矩阵,具体取决于矩阵类型:

■basic:没有混合工作量。小随机和大随机/顺序工作负载分别进行测试。仅测试小型I / O,然后仅测试大型I / O。

■detailed:组合测试小型随机和大型随机/顺序工作负载。测试整个矩阵。

■point:具有S个未完成小型随机I / O和L个未完成大型随机I / O或顺序流的单个数据点。 S由-num_small参数设置。 L由-num_large参数设置。使用-num_small小型I / O进行测试,-num_large大型I / O。

■col:仅大型随机/顺序工作负载。用-num_small小I / O测试不同的大I / O负载。

■row:仅限小型随机工作负载。使用-num_large大型I / O测试不同的小I / O负载。

■max:与详细信息相同,但仅测试-num_small和-num_large参数指定的最大负载下的工作负载。测试不同的负载,直到-num_small和-num_large限制。

Default Value: basic

–num_disks value

指定测试使用的物理磁盘的数量。 用于为负载生成一个范围。 指定磁盘(物理主轴)的数量。 该数值用于衡量Orion应该测试的负载范围。 增加此参数会导致Orion使用较重的I / O负载。

Default Value: the number of LUNs in .lun.

–num_large value

控制较大的I / O负载。

请注意,此选项仅适用于将-matrix指定为:row,point或max时。

当-type选项设置为rand时,参数参数值指定未完成的大I / O的数量。

当-type选项设置为seq时,参数参数值指定顺序I / O流的数量。

Default Value: no default

–num_small

为小型随机I / O工作负载指定未完成I / O的最大数量。

注意:这仅适用于将-matrix指定为col,point或max的情况。

Default Value: no default

–num_streamIO num

将每个流的并行I / O数指定为num。

注意:仅当-type是seq时才使用此参数。

Default Value: 4

–simulate type

数据布局模拟大型顺序I / O工作负载。 Orion测试通过以这些方式之一组合指定的LUN形成的虚拟LUN。该类型是一个:

■concat:通过串行链接指定的LUN来模拟虚拟卷。对此虚拟卷的连续测试将从某个点到每个LUN的末尾,接着是下一个LUN的开始到结束,以此类推。

■raid0:虚拟卷通过指定LUN上的条带进行模拟。每个顺序流使用raid0分条在所有LUN上发布I / O。条带深度默认为1M,以匹配Oracle自动存储管理条带深度,并且可以使用-stripe参数进行更改。

I / O的偏移量确定如下:

对于小型随机和大型随机工作负载:

■将LUN连接成单个虚拟LUN(VLUN),并在VLUN中选择随机偏移量。

对于大型顺序工作负载:

■使用条纹(-simulate raid0)。这些LUN用于创建单条纹VLUN。在没有并发小型随机工作负载的情况下,顺序流在条带化VLUN内以固定偏移量开始。对于n个流,流i在偏移量VLUNsize *(i + 1)/(n + 1)处开始,除非n为1,在这种情况下,单个流从偏移量0开始。对于并发的小随机工作负载,流开始于随机条纹VLUN内的偏移量。

■不带条纹( - 模拟CONCAT)。 LUN连接成一个VLUN。流在单个VLUN内以随机偏移开始。This parameter is typically only used if –type is seq.

Default Value: concat

–size_large num

指定大型随机或顺序I / O工作负载的I / O数量(以KB为单位)。

Default Value: 1024

–size_small num

为小型随机I / O工作负载指定I / O的数量和大小(以KB为单位)。

Default Value: 8

–storax type

用于测试I / O工作负载的API。

■skgfr:使用操作系统I / O层。

■oss:在Exadata机器中使用OSS API与Cell服务器进行I / O。

■asmlib:对I / O使用基于ASMLIB磁盘设备的存储API。

■odmlib:对I / O使用基于直接NFS存储的API。

Default Value: skgfr

–testname tname

指定测试运行的tname标识符。 指定时,包含LUN磁盘或文件名的输入文件必须命名为 .lun。

输出文件以前缀 _命名。

Default Value: orion

–type [rand | seq]

Type of the Large I/O workload.

■rand: Randomly distributed large I/Os.

■seq: Sequential streams of large I/Os.

Default Value: rand

–verbose

将状态和跟踪信息打印到标准输出。

Default Value: option not set

–write num_write

指定写入num_write的I / O的百分比; 其余的正在读取。

此参数适用于大型和小型I / O工作负载。 对于大型顺序I / O,每个流都是只读或只写; 该参数指定只写的流的百分比。 写入磁盘的数据是垃圾并与磁盘上的任何现有数据无关。

注意:写测试会删除指定LUN上的所有数据。

Default Value: 0

警告:

写测试会删除指定LUN上的所有数据。

Orion命令行示例

以下为不同类型的I / O工作负载提供示例Orion命令:

1.评估OLTP数据库的存储:

- 运行oltp

2.评估数据仓库的存储:

- 运行dss

3.对于一组基本数据:

- 运行正常

4.通过只读,小型和大型随机I / O工作负载来了解您的存储性能:

$ orion -run simple

5.通过混合的小型和大型随机I / O工作负载来了解您的存储性能:

$ orion -run normal

6.要生成32KB和1MB读取到随机位置的组合:

$ orion -run advanced -size_small 32 \

-size_large 1024 -type rand -matrix detailed

7.要生成多个连续的1 MB写入流,模拟1 MB RAID-0条带:

$ orion -run advanced -simulate raid0 \

-stripe 1024 -write 100 -type seq -matrix col -num_small 0

8.要生成32 KB和1 MB读取到随机位置的组合:

-run advanced -size_small 32 -size_large 1024 -type rand -matrix detailed

9.要生成多个连续的1 MB写入流,模拟RAID0条带化:

-run advanced -simulate raid0 -write 100 -type seq -matrix col -num_small 0

Orion Output Files

The output files for a test run are prefixed by _ where date is yyyymmdd_hhmm.

Table 8–7 lists the Orion output files.

Orion示例输出文件

Orion创建了几个输出文件,如表8-7所示。对于第8-14页的“Orion入门”部分中显示的示例“mytest”,输出文件为:

■mytest_summary.txt:该文件包含:

■输入参数

■观察大型随机/顺序工作负载的最大吞吐量

■观察到小型随机工作负载的最大I / O速率

■观察到小随机工作负载的最小延迟

■mytest_mbps.csv:逗号分隔的值文件,其中包含大型随机/顺序工作负载的数据传输速率(MBPS)结果。在一般情况下,这个和所有其他CSV文件都包含一个二维表格。表中的每一行对应于较大的I / O负载级别,每列对应于特定的小I / O负载级别。因此,列标题是未完成小I / O的数量,行标题是未完成的大I / O(用于随机大I / O测试)的数量或顺序流的数量(用于顺序大I / O测试)。

例8-1显示了“mytest”的Orion MBPS输出CSV文件的前几个数据点。简单的mytest命令行不会测试大型和小型I / O的组合。因此,MBPS文件只有一列对应于0个未完成的小I / O。在示例8-1中,在8个未完成的大读取和非小I / O的负载级别下,报告数据表示吞吐量为103.06 MBPS。

示例8-1 Mytest示例数据点

Large/Small, 0

1, 19.18

2, 37.59

4, 65.53

6, 87.03

8, 103.06

10, 109.67

. . . . .

. . . . .

图8-2显示了在不同的大I / O负载水平下测量的示例数据传输速率。 可以通过将mytest_mbps.csv加载到电子表格并绘制数据点来生成此图表。 猎户座不直接生成这样的图表。 x轴对应于突出的大读取的数量,并且y轴对应于观察到的吞吐量。

图8-2中显示的图显示了典型的存储系统行为。 随着未完成的I / O请求数量的增加,吞吐量会增加。 但是,在某个点,吞吐量水平稳定,表明存储系统的最大吞吐量值。

图8-2示例I / O负载级别

■mytest_iops.csv:逗号分隔的值文件,其中包含Small Random工作负载的I / O吞吐量(以IOPS计)。 与MBPS文件类似,列标题是未完成的小I / O数,行标题是测试大随机数或连续流数(对于大型顺序)时未完成的大I / O数。

在一般情况下,CSV文件包含一个二维表格。 但是,对于不测试大和小I / O组合的简单测试,结果文件只有一行。 因此,IOPS结果文件只有一行有0个大I / O。 如例8-2所示,具有12个优秀小读取和无大I / O的示例数据点提供了951 IOPS的样本吞吐量。

示例8-2具有12个小读取且无大读取的示例数据点

Large/Small, 1, 2, 3, 6, 9, 12 . . . .

0, 105, 208, 309, 569, 782, 951 . . . .

如图8-3所示,通过将mytest_iops.csv加载到Excel并绘制数据生成的图形说明了在不同的小I / O负载级别上看到的IOPS吞吐量。

典型的存储系统行为如图8-3所示。 随着未完成的I / O请求数量的增加,吞吐量会增加。 但是,在某一点上,

吞吐量水平稳定,表明存储系统达到最大吞吐量值。 在吞吐量更高的情况下,I / O请求的延迟也会显着增加。 因此,使用mytest_lat.csv中生成的延迟结果中提供的延迟数据查看此数据非常重要。

mytest_lat.csv:逗号分隔的值文件,其中包含Small Random工作负载的延迟结果。 与MBPS和IOPS文件一样,列标题是未完成小型I / O的数量,行标题是未完成大I / O(测试大型随机I / O时)或连续流数量。

在一般情况下,CSV文件包含一个二维表格。 但是,对于不测试大和小I / O组合的简单测试,结果文件只有一行。 因此,IOPS结果文件只有一行有0个大I / O。 在例8-3所示的例子中,在持续负载级别为12的优秀小读取和无大I / O时,生成的结果显示22.25毫秒的I / O周转延迟。

通过将mytest_lat.csv加载到Excel并绘制数据生成的图8-4中的图表说明了mytest在不同小I / O负载级别下的小I / O延迟。

Orion Troubleshooting

1.如果您在 .lun文件中指定的一个或多个卷上收到I / O错误:

■使用文件复制程序(如dd)验证是否可以使用与测试相同的模式访问卷,读取或写入卷。

■确认您的主机操作系统版本可以执行异步I / O。

■在Linux和Solaris上,库libaio必须位于标准lib目录中,或者可以通过shell环境的库路径变量(通常为LD_LIBRARY_PATH或LIBPATH,取决于您的shell)进行访问。

2.如果你在NAS存储上运行:

■必须正确安装文件系统才能运行Orion。有关说明,请参阅您的Oracle安装指南(例如,适用于Linux x86的数据库安装指南中的附录B“使用NAS设备”一节)。

■mytest.lun文件应该包含一个或多个现有文件的路径。猎户座不适用于目录或挂载点。该文件必须足够大才能进行有意义的测试。这个文件的大小应该代表你的数据文件的最终预期大小(比如,在使用几年之后)。

■您可能会在Linux上通过NFS上的异步I / O(包括2.6内核)看到糟糕的性能。

■如果您正在进行读取测试,并且读取的文件没有被初始化或先前写入,那么一些智能NAS系统可能会通过返回归零块来“伪造”读取。发生这种情况时,您会看到出乎意料的良好性能。

解决方法是在执行读取测试之前使用诸如dd之类的工具写入所有块。

3.如果在Windows上运行Orion:在原始分区上进行测试需要临时将分区映射为驱动器号并在test.lun文件中指定这些驱动器号。

4.如果在x86_64系统上运行Orion 32位Linux / x86二进制文件:请从运行相同Linux版本的32位计算机复制32位libaio.so文件。

5.如果您使用大量磁盘进行测试(num_disks大于30):

■您应该使用-duration选项(请参阅可选参数部分以获取更多详细信息),为每个数据点指定长时间(如120秒或更长)。由于Orion试图保持所有主轴在特定的负载水平下运行,因此每个数据点都需要一个加速时间,这意味着测试的持续时间更长。

■您可能会收到以下错误消息,指示您增加持续时间值:

指定一个更长的持久值。

主轴数量的2倍似乎是一个很好的经验法则。根据您的磁盘技术,您的平台可能需要更多或更少的时间。

6.如果您遇到关于Orion使用的库的错误:

■Linux / Solaris:请参阅I / O错误故障排除。

■仅限NT:不要移动/删除分发包含的Oracle库。这些必须与orion.exe位于同一目录中。

7.如果你看到的表现数字“令人难以置信的好”:

■您可能拥有较大的读取或写入缓存,或者在Orion程序和磁盘主轴之间的某处读写缓存。通常情况下,存储阵列控制器的影响最大。找出此缓存的大小并使用-cache_size高级选项将其指定给Orion(有关更多详细信息,请参阅可选参数部分)。

■与一路上的一个或多个缓存相比,卷的总大小可能非常小。尝试关闭缓存。如果共享存储的其他卷在生产环境中显示重要的I / O活动(并最终使用共享高速缓存的大部分内容),则需要此选项。

8.如果Orion报告的运行时间很长:

■当-num_disks较高时,运行时间会增加。 Orion内部使用线性公式来确定饱和给定数量的磁盘需要多长时间。

■即使未指定,-cache_size参数也会影响运行时间。 Orion在默认情况下每个数据点缓存温度为两分钟。如果您已关闭缓存,请指定-cache_size 0。

■如预期的那样,指定了长时间的运行时间后,运行时间会增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值