Oracle ORIONの使用方法 (Linuxディスクベンチマーク)

120px-Crystal_Clear_app_database

Oracle ORIONの使用方法 (Linuxディスクベンチマーク)Oracle社が提供するディスクIO性能ベンチマークツール「ORION」を用いて、Linux環境上でディスクのIO性能を測定する際の手順メモです。

「ORION」は、Oracle DatabaseのIO制御プログラムをベースにして作成されており、RDBMSの様々なワークロードパターンをシミュレートしてディスクIO性能を測定できる優れたベンチマークソフトです。Windows版・Linux版・Solaris版・AIX版・HP-UX版が提供されており、異なるプラットフォーム間でディスクIO性能を比較する用途でも利用できます。

動作確認環境
  • CentOS 6.2 (2.6.32-220.el6.x86_64 #1 SMP)
    Filesystem : ext4
  • CentOS 5.8 (2.6.18-308.el5 #1 SMP)
    Filesystem : ext3
  • Oracle ORION 11.1.0.7.0
ORION のダウンロード URL

次のURLより、実行環境に対応するLinux用のORIONをダウンロードして下さい。ダウンロード時には、オラクルWebアカウントでのログインが必要です。ここでは、64bit版の「Linux (x86-64)」を用いた手順を記載します。マニュアル(英語)も提供されていますので、詳細を確認したい方は同時にダウンロードしておくと良いでしょう。
http://www.oracle.com/technetwork/jp/topics/index-096484-ja.html

ORION インストール

インストール

ダウンロードしたファイルはGZIPで圧縮されているので解凍します。解凍後に「orion_linux_x86-64」ファイルに実行権限を付けます。

$ gunzip orion_linux_x86-64.gz
$ chmod 755 orion_linux_x86-64

誤解されることが多いのですが、ORIONは単体で動作するので、Oracle DatabaseやOracle Clientのインストールは不要です。
 

インストール後の動作確認

ORIONを実行して、次のメッセージが表示されることを確認します。

$ ./orion_linux_x86-64
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
Parse error: View help screen using ./orion_linux_x86-64 -help.

ORION 実行準備

計測用ディレクトリ・計測用ファイルの作成

ディスクIO性能を計測するパーティション上に計測用ディレクトリと計測用ファイルを作成します。正確な計測を行うために、計測用ファイルの合計サイズはOS等のファイルキャッシュに乗らない容量を確保した方が良いでしょう。可能であれば、Oracle Databaseのデータファイル相当のファイル容量・構成で作成することが推奨されます。

ここでは、例として「/oradata/orion-test」ディレクトリ配下に「10GB * 10ファイル」の計測用ファイルを作成しています。

$ mkdir /oradata/orion-test
$
$ dd if=/dev/zero of=/oradata/orion-test/testfile-010.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-020.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-030.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-040.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-050.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-060.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-070.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-080.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-090.dbf bs=1M count=10240
$ dd if=/dev/zero of=/oradata/orion-test/testfile-100.dbf bs=1M count=10240

 

lunファイルの作成

ORIONを配置したディレクトリ配下に「orion-test.lun」ファイルを作成します。同ファイルには次のように計測用ファイル一式を記載して下さい。以上で、ORIONの実行準備は完了です。

$ vi orion-test.lun
/oradata/orion-test/testfile-010.dbf
/oradata/orion-test/testfile-020.dbf
/oradata/orion-test/testfile-030.dbf
/oradata/orion-test/testfile-040.dbf
/oradata/orion-test/testfile-050.dbf
/oradata/orion-test/testfile-060.dbf
/oradata/orion-test/testfile-070.dbf
/oradata/orion-test/testfile-080.dbf
/oradata/orion-test/testfile-090.dbf
/oradata/orion-test/testfile-100.dbf

ORION 実行(ディスクIO性能の計測)

simple モード

simpleモードでORIONを実行します。simpleモードでは、ディスク読み込み(read)のみのワークロードをシミュレートしてディスクIO性能を測定します。

「-num_disks」オプションによって負荷をどこまで上げるかを制御可能です。対象のディスク数が多い場合や、SSD等のIO性能が高い領域を計測する際は「-num_disks」の値を増やしてみて下さい。次のパラメーターでORIONを実行した場合、実行時間は約9分間です。実行中は1CPUの使用率が100%に張り付くので注意して下さい。

$ ./orion_linux_x86-64 -run simple -testname orion-test -num_disks 1
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
orion-test_yyyymmdd_hhmm
Test will take approximately 9 minutes
Larger caches may take longer

 

実行完了後、次の測定結果ファイル(5ファイル)が作成されます。まずはsummaryファイルを参照して、測定結果のサマリを確認して下さい。

  • orion-test_yyyymmdd_hhmm_iops.csv
  • orion-test_yyyymmdd_hhmm_lat.csv
  • orion-test_yyyymmdd_hhmm_mbps.csv
  • orion-test_yyyymmdd_hhmm_summary.txt
  • orion-test_yyyymmdd_hhmm_trace.txt

なお、readのみが実行されるsimpleモードでは測定結果に異常値が記録されるケースがあります。simpleモードの測定結果は鵜呑みせず、advancedモードでwriteを混ぜて実行した場合と比較して測定結果の妥当性を確認して下さい。simpleモードで極端な値が出る環境では、simpleモードはORIONの動作確認程度の位置付けにした方が無難でしょう。
 

advanced モード

advancedモードでORIONを実行します。advancedモードでは、実行オプションでパラメーターを指定することによって、RDBMSの様々なワークロードパターンをシミュレートしてディスクIO性能を測定することができます。

ここでは、例として「ディスク書き出し(write)処理の割合を20%」に設定して実行しています。

$ ./orion_linux_x86-64 -run advanced -testname orion-test -write 20 -num_disks 1

ORION 実行結果の見方

summary ファイル

ORIONによる負荷テストの終了後、summaryファイルに次のような実行結果が出力されます。
この実行結果からは、測定対象のディスク装置が測定時に指定したワークロードに対して「最高 78.12 MB/sec」「最高 204 IOPS」「最短 5.02 msec」のディスクIO性能を発揮できることが分かります。

  • Maximum Large MBPS:最大データ転送帯域(MB/sec)
  • Maximum Small IOPS:最大IO回数(IOPS)
  • Minimum Small Latency:最小応答遅延時間(msec)

summaryファイルに出力された値を見て測定結果の概要を確認した後、さらに詳細な測定結果をmbps・iops・latの各ファイルで確認します。

ORION VERSION 11.1.0.7.0
Commandline:
-run advanced -testname orion-test -write 20
This maps to this test:
Test: orion-test
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 20%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:,      0
Large Columns:,      0,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,     12,     13,     14,     15,     16,     17,     18,     19,     20
Total Data Points: 47
Name: /oradata/orion-test/testfile-010.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-020.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-030.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-040.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-050.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-060.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-070.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-080.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-090.dbf	Size: 10737418240
Name: /oradata/orion-test/testfile-100.dbf	Size: 10737418240
10 FILEs found.
Maximum Large MBPS=78.12 @ Small=0 and Large=17
Maximum Small IOPS=204 @ Small=10 and Large=0
Minimum Small Latency=5.02 @ Small=1 and Large=0

 

mbps ファイル

mbpsファイルには、「Large IO」時のデータ転送帯域(MB/sec)が記録されています。
ORIONが「Large IO」の負荷レベルを段階的に上げながら測定していることが分かります。この実行結果では「20」までの測定を行っています。負荷が掛かり切っていないようなら、「-num_disks」オプションで指定する値を増やしてみて下さい。

Large/Small,      0,      1,      2,      4,      6,      8,     10,     12,     14,     16,     18,     20,     22,     24,     26,     28,     30,     32,     34,     36,     38,     40,     42,     44,     46,     48,     50
          1,  67.84
          2,  72.45
          3,  74.95
          4,  72.53
          5,  75.69
          6,  74.65
          7,  77.55
          8,  76.02
          9,  75.05
         10,  76.24
         11,  77.05
         12,  77.94
         13,  75.23
         14,  78.11
         15,  78.02
         16,  77.21
         17,  78.12
         18,  77.57
         19,  78.03
         20,  76.32

 

iops ファイル

iopsファイルには、「Small IO」時のIO回数(IOPS)が記録されています。
ORIONが「Small IO」の負荷レベルを段階的に上げながら測定していることが分かります。この実行結果では「50」までの測定を行っています。

Large/Small,      1,      2,      4,      6,      8,     10,     12,     14,     16,     18,     20,     22,     24,     26,     28,     30,     32,     34,     36,     38,     40,     42,     44,     46,     48,     50
          0,    199,    197,    201,    201,    198,    204,    200,    197,    201,    199,    196,    198,    196,    198,    196,    200,    199,    200,    201,    200,    197,    197,    201,    197,    197,    197
          1
          2
(以下、略)

 

lat ファイル

latファイルには、「Small IO」時の応答遅延時間(msec)が記録されています。

Large/Small,      1,      2,      4,      6,      8,     10,     12,     14,     16,     18,     20,     22,     24,     26,     28,     30,     32,     34,     36,     38,     40,     42,     44,     46,     48,     50
          0,   5.02,  10.12,  19.88,  29.78,  40.37,  48.94,  59.97,  70.71,  79.26,  90.32, 101.51, 110.66, 121.99, 131.30, 142.46, 149.70, 160.18, 169.88, 179.00, 189.30, 202.47, 213.14, 218.07, 233.39, 242.60, 252.56
          1
          2
(以下、略)

ORION の色々な使い方

負荷レベルを指定して「Small IO」のみを計測する(-num_smallオプション)

「Small IO」時のIOPS性能と応答遅延時間(msec)を重点的に確認したい時には、「-num_small」オプションが役立ちます。この例では「Small IO」のみのワークロードを指定して、負荷レベルを段階的に上げながら負荷レベル「1~20」の計測を行っています。

$ ./orion_linux_x86-64 -run advanced -testname orion-test -write 20 -matrix max -num_small 20 -num_large 0
「Small IO」のI/Oサイズを指定して計測する(-size_smallオプション)

「Small IO size」のデフォルト値は「8KB」です。これはOracleデータベースのI/Oリクエストサイズのデフォルト値であり、ORION実行時も多くの場合は「Small IO size」を変更する必要はありません。

特別な要件があり「Small IO size」を変更して計測する場合は、「-size_small」オプション(単位:KB)を使用します。この例では「Small IO size」を「4KB」に指定して計測を行っています。

$ ./orion_linux_x86-64 -run advanced -testname orion-test -write 20 -matrix max -num_small 20 -num_large 0 -size_small 4
負荷レベルを指定して「Large IO」のみを計測する(-num_largeオプション)

「Large IO」時のデータ転送帯域(MB/sec)を重点的に確認したい時には、「-num_large」オプションが役立ちます。この例では「Large IO」のみのワークロードを指定して、負荷レベルを段階的に上げながら負荷レベル「1~10」の計測を行っています。

$ ./orion_linux_x86-64 -run advanced -testname orion-test -write 20 -matrix max -num_small 0 -num_large 10
ORION 実行オプション一覧
$ ./orion_linux_x86-64 -help
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
ORION runs IO performance tests that model Oracle RDBMS IO workloads.
It measures the performance of small (2-32K) IOs and large (128K+) IOs
at various load levels.  Each Orion data point is done at a specific
mix of small and large IO loads sustained for a duration.  Anywhere
from a single data point to a two-dimensional array of data points can
be tested by setting the right options.
An Orion test consists of data points at various small and large IO
load levels.  These points can be represented as a two-dimensional
matrix: Each column in the matrix represents a fixed small IO load.
Each row represents a fixed large IO load.  The first row is with no
large IO load and the first column is with no small IO load.  An Orion
test can be a single point, a row, a column or the whole matrix.
The 'run' parameter is the only mandatory parameter. Defaults
are indicated for all other parameters.  For additional information on
the user interface, see the Orion User Guide.
 is a filename prefix.  By default, it is "orion".  It can be
specified with the 'testname' parameter.
.lun should contain a carriage-return-separated list of LUNs
The output files for a test run are prefixed by _ where
date is "yyyymmdd_hhmm".
The output files are:
__summary.txt -  Summary of the input parameters along with
				 min. small latency, max large MBPS
				 and/or max. small IOPS.
__mbps.csv - Performance results of large IOs in MBPS
__iops.csv - Performance results of small IOs in IOPS
__lat.csv - Latency of small IOs
__tradeoff.csv - Shows large MBPS / small IOPS
				 combinations that can be achieved at
				 certain small latencies
_trace.txt - Extended, unprocessed output
WARNING: IF YOU ARE PERFORMING WRITE TESTS, BE PREPARED TO LOSE ANY DATA STORED
ON THE LUNS.
Mandatory parameters:
run			Type of workload to run (simple, normal, advanced, dss, oltp)
			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
Optional parameters:
testname		Name of the test run
num_disks			Number of disks (physical spindles). Default is
			the number of LUNs in .lun
size_small		Size of small IOs (in KB) - default 8
size_large		Size of large IOs (in KB) - default 1024
type			Type of large IOs (rand, seq) - default rand
			  rand - Random large IOs
			  seq -  Sequential streams of large IOs
num_streamIO		Number of concurrent IOs per stream (only if type is
			seq) - default 4
simulate		Orion tests on a virtual volume formed by combining the
			provided volumes in one of these ways (default concat):
			  concat - A serial concatenation of the volumes
			  raid0 - A RAID-0 mapping across the volumes
write			Percentage of writes (SEE WARNING ABOVE) - default 0
cache_size		Size *IN MEGABYTES* of the array's cache.
			Unless this option is set to 0, Orion does a number
			of (unmeasured) random IO before each large sequential
			data point.  This is done in order to fill up the array
			cache with random data.  This way, the blocks from one
			data point do not result in cache hits for the next
			data point.  Read tests are preceded with junk reads
			and write tests are preceded with junk writes.  If
			specified, this 'cache warming' is done until
			cache_size worth of IO has been read or written.
			Default behavior: fill up cache for 2 minutes before
			each data point.
duration		Duration of each data point (in seconds) - default 60
num_small		Number of outstanding small IOs (only if matrix is
			point, col, or max) - no default
num_large		For random, number of outstanding large IOs.
			For sequential, number of streams (only if matrix is
			point, row, or max) - no default
matrix			An Orion test consists of data points at various small
			and large IO load levels.  These points can be
			represented as a two-dimensional matrix: Each column
			in the matrix represents a fixed small IO load.  Each
			row represents a fixed large IO load.  The first row
			is with no large IO load and the first column is with
			no small IO load.  An Orion test can be a single point,
			a row, a column or the whole matrix, depending on the
			matrix option setting below (default basic):
			  basic - test the first row and the first column
			  detailed - test the entire matrix
			  point - test at load level num_small, num_large
			  col - varying large IO load with num_small small IOs
			  row - varying small IO load with num_large large IOs
			  max - test varying loads up to num_small, num_large
verbose			Prints tracing information to standard output if set.
			Default -- not set
Examples
For a preliminary set of data
	-run simple
For a basic set of data
	-run normal
To evaluate storage for an OLTP database
	-run oltp
To evaluate storage for a data warehouse
	-run dss
To generate combinations of 32KB and 1MB reads to random locations:
	-run advanced
	-size_small 32 -size_large 1024 -type rand	-matrix detailed
To generate multiple sequential 1MB write streams, simulating 1MB RAID0 stripes
	-run advanced
	-simulate RAID0 -stripe 1024 -write 100 -type seq
	-matrix col -num_small 0

240GB級SSDベンチマーク結果

東芝SSD HG5d 256GB 高負荷ベンチマーク速度比較結果
Intel SSD DC S3500 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 730 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 530 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 520 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 335 Series 240GB 高負荷ベンチマーク速度比較結果
PLEXTOR PX-256M5P 256GB 高負荷ベンチマーク速度比較結果
Samsung SSD 840 PRO 256GB 高負荷ベンチマーク速度比較結果
SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
SSD I/Oブロックサイズの調整によるチューニング効果検証 (東芝THNSNS240GBSP編)

関連記事

Oracle ORIONの使用方法 (Windowsディスクベンチマーク)
ORION高負荷ベンチマーク実行手順 – SSD 240GB級
HDDベンチマーク手順+性能測定結果一覧 (hdparm,dd,bonnie++)
Linux Tips – bonnie++の使用方法

「Linux」カテゴリーの記事一覧

参考になるサイト

Oracle Databaseパフォーマンス・チューニング・ガイド – I/O構成および設計
Oracle社公式のORIONの日本語ガイド。「8.4 Oracle Orion測定ツールによるI/O測定」を参照。

Oracle ORIONでAmazon EBSの性能を測る
Amazon EBSのブロックデバイスに対してEC2のサーバから性能計測した結果が掲載されている。