如何对Exadata的I/O进行性能校准测试

简介: 前段时间看到MACLEAN LIU分享了一篇不错的关于Exadata I/O性能校准的文章:Calibrate测试Exadata IO,这篇文章基本涵盖到Exadata I/O性能校准的方法。

前段时间看到MACLEAN LIU分享了一篇不错的关于Exadata I/O性能校准的文章:Calibrate测试Exadata IO,这篇文章基本涵盖到Exadata I/O性能校准的方法。刚好最近又有人问我这方面的问题,所以在这里再班门弄斧做一些补充,存在重复的地方请无视之。

在Exadata上如果需要对I/O进行性能校准或者测试,通常有如下几种方法:

1. Oracle的I/O性能校准工具orion;

2. Oracle Database 11g引入的的DBMS_RESOURCE_MANAGER.CALIBRATE_IO包;

3. EXADATA Cell端cellsrv中的calibrate命令;

当然有人说通过dd进行测试也可以得到磁盘的IOPS和MBPS。 在没有任何工具的前提下,当然dd也可以用来进行大致的估算,但是其结果通常是不可靠的,所以这里就不把dd例如这个范畴。以下分别对这几种方式做一些简单的介绍和对比。

  • orion
orion是与数据库无关的I/O性能校准与测试的工具,几乎支持所有的操作系统平台。orion是免费的,用户可以到OTN上下载其介质(下载链接: http://www.oracle.com/technetwork/topics/index-089595.html)。 使用orion进行I/O校准也很简单,一共包括如下几个步骤:(以下以Linux x86_64为例)
1. 下载orion介质,将其上传到需要进行I/O校准的服务器上,然后解压,得到一个二进制文件;
2. 创建一个叫 orion.lun的文件, 这个文件记录需要进行I/O校准的设备名(LUN),例如;

/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde

3. 执行I/O校准操作;
./orion_x86_64�0�2�0�2–run <workload_mode>

其中workload mode(负载模式)一共包括5种,对于数据库而言,常用的为dss模式和oltp模式,对于更复杂的需求可以使用advanced模式。

simple - tests random 8K small IOs at various loads, then random 1M large IOs at various loads.
normal - tests combinations of random 8K small IOs and random 1M large IOs
advanced - run the workload specified by the user using optional parameters
dss - run with random 1M large IOs at increasing loads to determine the maximum throughput
oltp - run with random 8K small IOs at increasing loads to determine the maximum IOPS
4. 查看I/O校准报告orion_<date>_summary.txt ,可以使用excel或者�0�2gnuplot生成图表。因为当前暂时没有测试数据,所以无法提供orion测试Exadata的报告。
orion的优势有如下几点:
  1. 不依赖于操作系统和数据库版本;
  2. 进行I/O校准之前不需要安装数据库;
  3. 简单,免费;
  4. 默认提供多种校准模式可供选择;
但是同时也有一些劣势:
  1. 工具过于简单,与专业的性能测试软件例如loadrunner相比存在一些不足;
  2. 无法自动感知Oracle RAC架构,得到的校准数据只是从某台特定的主机得到的结果;
  3. 此工具不能用来测试NAS存储设备。
  • calibrate_io
DBMS_RESOURCE_MANAGER.CALIBRATE_IO是11g引入的一个I/O校准的函数。
在测试之前需要对以下信息进行检查:
  • timed_statistics�0�2必须设置为TRUE;
  • 异步I/O已经启用;如果使用文件系统,则FILESYSTEMIO_OPTIONS�0�2需要设置为SETALL。可以通过以下命令来查询数据文件的异步I/O是否已经启用:
  • COL NAME FORMAT A50
    SELECT NAME,ASYNCH_IO FROM V$DATAFILE F,V$IOSTAT_FILE I
    WHERE  F.FILE#=I.FILE_NO
    AND    FILETYPE_NAME='DATA FILE';
�0�2DBMS_RESOURCE_MANAGER.CALIBRATE_IO这个函数需要提供2个参数作为输入:
�0�2num_physical_disks(物理磁盘的数量,默认为1)以及max_latency(物理磁盘的最大延迟,默认为20ms), 测试完成以后生成3个结果3个结果:
max_iops: 最大IOPS, 即每秒所能获得的最大的I/O请求数。其测试的I/O请求为基于随机分布,数据库块大小的读操作;
max_mbps: 最大MBPS, 即每秒所能获取的最大吞吐量,单位为MB。其测试的请求I/O请求基于随机分布1M大小的读操作;
actual_latency: 实际延迟,在最大IOPS的时候,基于数据库块大小的I/O请求的平均延迟,单位为毫秒。
SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (1, 10,
iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
END;
/

测试完成以后,会在底下显示测试的结果。当然Oracle也提供了相应的动态性能视图供查询:

select * from gv$io_calibration_status;
select * from DBA_RSRC_IO_CALIBRATE;
calibrate_io的优势在于:
  1. 能自动感知RAC架构,并非是从单个节点测试得到的结果;
  2. 测试以数据库的数据文件为基准,是与数据库贴合最紧密的一种测试方式;
  3. 在做Exadata的POC的时候,可以使用它对I/O进行对比测试,对比迁移到Exadata后能得到多少I/O性能的提升。
当然也存在这样一些问题:
  1. 需要数据库的版本在11g以上;
  2. 测试需要安装数据库;
  3. 测试的结果只有整体的性能数据,看不到单个物理磁盘的信息。
  • cellcli calibrate

在停止cellsrv的服务的情况下,使用root用户在cellcli中运行calibrate。如果需要使用在线模式,则必须在后面加上force参数。以下引用的数据来在自MACLEAN LIU的blog

CellCLI> calibrate force;

Calibration will take a few minutes…
Aggregate random read throughput across all hard disk LUNs: 1921 MBPS
Aggregate random read throughput across all flash disk LUNs: 4164.33 MBPS
Aggregate random read IOs per second (IOPS) across all hard disk LUNs: 4971
Aggregate random read IOs per second (IOPS) across all flash disk LUNs: 145195
Controller read throughput: 1919.64 MBPS
Calibrating hard disks (read only) …
LUN 0_0 on drive [28:0 ] random read throughput: 168.12 MBPS, and 430 IOPS
LUN 0_1 on drive [28:1 ] random read throughput: 164.23 MBPS, and 423 IOPS
LUN 0_10 on drive [28:10 ] random read throughput: 170.80 MBPS, and 433 IOPS
LUN 0_11 on drive [28:11 ] random read throughput: 168.32 MBPS, and 421 IOPS
LUN 0_2 on drive [28:2 ] random read throughput: 170.07 MBPS, and 431 IOPS
LUN 0_3 on drive [28:3 ] random read throughput: 169.82 MBPS, and 421 IOPS
LUN 0_4 on drive [28:4 ] random read throughput: 165.17 MBPS, and 417 IOPS
LUN 0_5 on drive [28:5 ] random read throughput: 166.82 MBPS, and 429 IOPS
LUN 0_6 on drive [28:6 ] random read throughput: 170.85 MBPS, and 430 IOPS
LUN 0_7 on drive [28:7 ] random read throughput: 168.42 MBPS, and 429 IOPS
LUN 0_8 on drive [28:8 ] random read throughput: 169.78 MBPS, and 428 IOPS
LUN 0_9 on drive [28:9 ] random read throughput: 168.77 MBPS, and 430 IOPS
Calibrating flash disks (read only, note that writes will be significantly slower) …
LUN 1_0 on drive [FLASH_1_0] random read throughput: 271.01 MBPS, and 19808 IOPS
LUN 1_1 on drive [FLASH_1_1] random read throughput: 270.24 MBPS, and 19821 IOPS
LUN 1_2 on drive [FLASH_1_2] random read throughput: 270.41 MBPS, and 19844 IOPS
LUN 1_3 on drive [FLASH_1_3] random read throughput: 270.37 MBPS, and 19812 IOPS
LUN 2_0 on drive [FLASH_2_0] random read throughput: 272.32 MBPS, and 20634 IOPS
LUN 2_1 on drive [FLASH_2_1] random read throughput: 272.12 MBPS, and 20635 IOPS
LUN 2_2 on drive [FLASH_2_2] random read throughput: 272.28 MBPS, and 20676 IOPS
LUN 2_3 on drive [FLASH_2_3] random read throughput: 272.43 MBPS, and 20669 IOPS
LUN 4_0 on drive [FLASH_4_0] random read throughput: 271.13 MBPS, and 19802 IOPS
LUN 4_1 on drive [FLASH_4_1] random read throughput: 271.90 MBPS, and 19799 IOPS
LUN 4_2 on drive [FLASH_4_2] random read throughput: 271.42 MBPS, and 19798 IOPS
LUN 4_3 on drive [FLASH_4_3] random read throughput: 272.25 MBPS, and 19808 IOPS
LUN 5_0 on drive [FLASH_5_0] random read throughput: 272.22 MBPS, and 19824 IOPS
LUN 5_1 on drive [FLASH_5_1] random read throughput: 272.44 MBPS, and 19823 IOPS
LUN 5_2 on drive [FLASH_5_2] random read throughput: 271.83 MBPS, and 19808 IOPS
LUN 5_3 on drive [FLASH_5_3] random read throughput: 271.73 MBPS, and 19837 IOPS
CALIBRATE results are within an acceptable range.
Calibration has finished.

这里的calibrate是针对单个cell节点进行的测试,而Exadata datasheet上给出的IOPS和MBPS的数据都是来自此命令的测试结果。(先测出单个Cell节点的各项指标,然后乘以cell节点数)同时以上在进行测试IOPS的时候,使用的I/O请求是8K大小的随机读;在测试MBPS的时候,则使用的是1M大小的随机读。同时上述测试既给出整个Cell节点总体的IOPS和MBPS,又给出了Cell节点中单个LUN的IOPS和MBPS。那Exadata为什么不对所有的Cell节点一起测试,然后得到一个总的测试结果呢?因为不同的Cell节点之间互相访问需要通过infiniband网络,如果测试同时进行, 则瓶颈可能出在infiniband上,导致测试的结果不准确。

calibrate专为Exadata设计,所以只能在Exadata的Cell端运行。使用它有如下好处:

  1. 既能得到一个Cell节点总体的性能数据,又可以得到单个磁盘或者闪盘的性能数据;
  2. 安装Exadata时候可�0�2以用来检测磁盘/闪盘的I/O性能,排除掉可能存在缺陷的磁盘/闪盘;
  3. 在出现I/O性能问题的时候,可以用它来对Cell的I/O进行校准,判断是否属于硬件级别的问题。

以上

相关文章
|
1月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
48 4
|
7天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
27 11
|
9天前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
40 13
|
9天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
38 10
|
30天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
89 13
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
43 1
|
19天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
71 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
70 3
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
84 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)