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++の使用方法
参考になるサイト
Oracle Databaseパフォーマンス・チューニング・ガイド – I/O構成および設計
Oracle社公式のORIONの日本語ガイド。「8.4 Oracle Orion測定ツールによるI/O測定」を参照。
Oracle ORIONでAmazon EBSの性能を測る
Amazon EBSのブロックデバイスに対してEC2のサーバから性能計測した結果が掲載されている。