データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracle 11gのI/Oキャリブレーション概要:ストレージ性能評価の基本と実行手順

Oracle Databaseがディスクに対してデータの読み書きを行うたびに、データベースはディスク入出力(I/O)操作を発生させます。多くのソフトウェアアプリケーションのパフォーマンスはディスクI/Oによって制約を受けており、CPU時間の大部分をI/O処理の完了待ちに費やすアプリケーションは「I/Oバウンド(I/O律速)」状態にあると言われます。こうした問題への対策として有効なのが、I/Oキャリブレーションです。

はじめに

堅牢なI/Oサブシステムの構築は、アプリケーション基盤を整備するうえで不可欠な要素です。I/Oスタック内のどれか一つのコンポーネントでもスループットが制限されていると、それがI/Oフロー全体の弱点(ボトルネック)となります。しかし、実際のワークロードを正確に再現することは容易ではなく、I/Oサブシステムの検証は従来から難しい課題とされてきました。

Oracle DatabaseのI/Oキャリブレーション機能を使用すると、ストレージサブシステムの性能を評価し、I/Oパフォーマンスの問題がデータベース側にあるのか、それともストレージサブシステム側にあるのかを切り分けることができます。外部ツールの中にはI/O操作を順次発行するものもありますが、Oracle DatabaseのI/OキャリブレーションはOracleデータファイルを使用してストレージメディアへランダムにI/Oを発行します。そのため、実際のデータベースの動作により近い測定結果が得られる点が大きな特徴です。

I/Oキャリブレーション(Calibrate I/O)機能は、DBMS_RESOURCE_MANAGER.CALIBRATE_IO()というPL/SQLプロシージャをベースにしています。このプロシージャを実行すると、以下の特徴を持つワークロードが生成されます。

  • I/O負荷の高い、読み取り専用のランダムI/O(db_block_size単位)
  • 大きなブロック(1MB)によるシーケンシャル(順次)I/Oワークロード

キャリブレーションの結果はモニタリングし、期待されるスループット率(I/Oサブシステムの最大総スループット)と比較する必要があります。I/Oキャリブレーションを活用すれば、ストレージサブシステムの性能評価や、I/O性能問題の原因がデータベースホスト側かストレージサブシステム側かの判定が可能になります。

本記事では、以下のトピックについて解説します。

  • I/Oキャリブレーションの前提条件
  • I/Oキャリブレーションの実行方法
  • キャリブレーション実行時の留意点

I/Oキャリブレーションの前提条件

I/Oキャリブレーションを実行する前に、以下の要件が満たされていることを確認してください。

  • ユーザーにSYSDBA権限が付与されていること
  • TIMED_STATISTICS初期化パラメータがTRUEに設定されていること
  • 非同期I/Oが有効になっていること

ファイルシステムを使用している場合、非同期I/Oは初期化パラメータFILESYSTEMIO_OPTIONSSETALLに設定することで有効化できます。

同期I/Oでは、I/O要求がOSに発行されると、その操作が完了するまで書き込みプロセスがブロックされます。一方、非同期I/Oでは呼び出し元プロセスがブロックされず、実行中の他の要求を妨げることなく処理を継続できます。

以下のSQLクエリを実行して、データファイルに対して非同期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';

下記の画像は、クエリの実行例とその結果を示しています。

Oracle 11gのI/Oキャリブレーション概要:ストレージ性能評価の基本と実行手順

注意: 1つのデータベースインスタンス上で同時に実行できるキャリブレーションは1つだけです。

I/Oキャリブレーションの実行方法

Oracle DatabaseのI/Oキャリブレーション機能は、DBMS_RESOURCE_MANAGER.CALIBRATE_IOプロシージャを使って利用します。このプロシージャは、データベースファイルに対してI/O負荷の高い読み取り専用ワークロード(1MBのランダムI/Oで構成)を発行し、ストレージサブシステムが持続できる最大IOPS(1秒あたりのI/O要求数)および最大MBPS(1秒あたりのI/Oメガバイト数)を測定します。

DBMS_RESOURCE_MANAGER.CALIBRATE_IOプロシージャによるI/Oキャリブレーションは、主に以下のステップで構成されます。

  1. ランダムなDBブロックサイズ読み取り:すべてのデータベースインスタンスから全データファイルに対して、ランダムなデータベースブロックサイズ(デフォルト8KB)の読み取りを発行します。このステップにより、データベースが持続できる1秒あたりの最大I/O操作数が出力パラメータmax_iopsとして返されます。max_iopsは、オンライントランザクション処理(OLTP)データベースにとって重要な指標です。また、出力パラメータactual_latencyにはこのワークロードの平均レイテンシが返されます。入力パラメータmax_latencyを使用すれば、データベースブロックサイズのI/O要求に対して許容できる最大レイテンシ(ミリ秒単位)を指定することもできます。
  2. 1MBのランダム読み取り:すべてのデータベースインスタンスから全データファイルに対して、1MBのランダム読み取りを発行します。このステップでは、データベースが持続できる最大MBPS(1秒あたりのメガバイト数)が出力パラメータmax_mbpsとして返されます。これはデータウェアハウスにとって重要な指標です。

ユーザーが入力パラメータnum_physical_disks(データベースストレージシステム内のおおよその物理ディスク数)を指定すると、キャリブレーションはより高速かつ正確に実行されます。

I/Oワークロードの実行にはオーバーヘッドが伴うため、通常のデータベースワークロードへの影響を最小限に抑えるために、I/Oキャリブレーションはデータベースがアイドル状態のとき、あるいはピーク時間帯を避けて実行すべきです。

下記の画像は、DBMS_RESOURCE_MANAGER.CALIBRATE_IOプロシージャの出力例です。

Oracle 11gのI/Oキャリブレーション概要:ストレージ性能評価の基本と実行手順

キャリブレーション実行時の留意点

I/Oキャリブレーションを実行する前に、以下の点を考慮しておきましょう。

  • 同じストレージサブシステムを使用するデータベースでは、一度に1つのキャリブレーションのみ実行してください。同一ストレージサブシステムを共有する複数のデータベースで同時にキャリブレーションを実行すると、失敗します。
  • インスタンスへのI/Oを最小限に抑えるため、データベースを静止(クワイエス)状態にしてください。
  • Oracle Real Application Clusters(RAC)環境では、ノード間でストレージサブシステムをキャリブレーションできるよう、すべてのインスタンスが起動(オープン)していることを確認してください。
  • Oracle RACデータベースの場合、ワークロードはすべてのインスタンスから同時に生成されます。
  • 入力パラメータnum_physical_disksは任意です。データベースのストレージシステム内のおおよその物理ディスク数を設定することで、キャリブレーションはより高速かつ正確になります。

I/Oキャリブレーションの進行中は、いつでもV$IO_CALIBRATION_STATUSビューでキャリブレーション状況を照会できます。また、キャリブレーションが正常に完了した後は、DBA_RSRC_IO_CALIBRATE表で結果を確認できます。以下に結果の例を示します。

列名
START_TIME 31-AUG-17 04.40.09.920679 AM
END_TIME 31-AUG-17 04.47.41.210939 AM
MAX_IOPS 39
MAX_MBPS 60
MAX_PMBPS 69
LATENCY 24
NUM_PHYSICAL_DISKS 1

まとめ

I/Oリソース管理(IORM)とCalibrate I/O機能は、現在のI/Oアーキテクチャの限界を把握するうえで非常に有用です。キャリブレーション完了後には、その結果情報を活用して適切なI/O設計やサイジングを行うことができます。ご意見やご質問がある場合は、フィードバックタブからお知らせください。

  1. Windows 10で外付けハードディスクのI/Oデバイスエラーを解決する方法

    Windows 10で外付けハードディスクのエラーに悩まされていませんか?ドライブやその中に保存されたデータにアクセスできない状態が続いているなら、早めの対処が必要です。放置すれば、外付けハードドライブ上のファイルやデータをすべて失うリスクもあります。 ご安心ください。いくつかの簡単なトラブルシューティング手順を実行するだけで、このエラーは迅速に解決できます。 本記事では、Windows 10 PCで発生するI/Oデバイスエラーを修正するための効果的な解決策をご紹介します。その前に、まずこの問題が発生する主な原因について理解しておきましょう。 I/Oデバイスエラーが発生する主な原因 ドライバ

  2. Google I/O 2018徹底解説:AIで進化したGoogleの注目新機能11選

    「Google I/O」は毎年開催される、世界中の開発者が待ち望む大型開発者会議です。2018年の開催は、5月8日から11日にかけてカリフォルニア州マウンテンビューで行われました。あらゆる業界がAI(人工知能)の導入を進める中、Googleもその流れに本格的に参入。同社はAIを活用した製品やアプリを軸に、業界をリードする企業の一つになろうとしていることが、今回の会議全体から感じられました。 年次開発者会議であるGoogle I/Oでは、新機能の発表や既存製品の改善、今後のロードマップに関するアナウンスが数多く行われます。本記事では、Google I/O 2018で発表された注目トピックを詳しく