如何对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月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
113 2
|
1月前
|
监控 测试技术 PHP
性能和压力测试
【10月更文挑战第10天】性能和压力测试
114 60
|
2月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
1月前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
31 0
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:确保质量与性能的平衡之道
【9月更文挑战第24天】在软件开发的海洋中,测试是导航灯塔,指引着项目安全抵达质量的彼岸。本文将深入探讨软件测试的核心原则、方法论以及如何通过精心设计的测试策略来保障产品的可靠性和性能。我们将从测试的基础知识出发,逐步深入到高级测试技巧,最终展示如何通过实际案例来应用这些知识以确保软件的成功交付。
|
2月前
|
测试技术 Python
软件测试的艺术:确保质量与性能
【9月更文挑战第19天】在数字化时代,软件已成为我们生活的一部分。然而,随着软件复杂性的增加,如何确保其质量和性能成为了一个挑战。本文将探讨软件测试的重要性,介绍常见的测试类型和策略,并提供实用的代码示例来帮助读者更好地理解和应用这些测试方法。无论你是开发人员、测试工程师还是项目管理者,这篇文章都将为你提供有价值的见解和技巧。
|
14天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
49 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
67 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
248 7
Jmeter实现WebSocket协议的接口测试方法
下一篇
无影云桌面