Pervasive PSQL Xtreme I/O

Pervasive PSQL Xtreme I/O
32 ビット アプリケーションのパフォーマンス向上
Pervasive Software ホワイト ペーパー
2009 年 12 月
目次
技術的な概要 …..……………………………………………………………………..………………………… 1
XIO の概要 …………………………………………………………………………………………………….. 1
キャッシング ………………………………………………………………………….…………………..……… 1
インテリジェント圧縮 ………………………………………………………………….………………….……… 2
データの書き込み …………………………………………………………………….………………………… 2
対称型マルチプロセッシング(SMP) ………………………………………………….…………………..…… 3
カスタマイズ …………………………………………………………………………….…………………….… 3
XIO の使用に適した状況 …………………………………………………………….……………………..… 3
XIO の PSQL v10 への統合方法 …………………………………………………….…………………….... 3
XIO 統計情報 ………………………………………………………………………….……………………… 5
XIO Manager …………………………………………………………………………….……………………… 6
結論 ………………………………………………………………………………………..……………………. 6
問い合わせ先/商標情報 ………………………………………………………………….…..……..…………..7
技術的な概要
アプリケーションが、基盤となるハードウェアやオペレーティング システムによって制限されることはよくあることです。
たとえば、データベースなどのディスクを大量に消費するアプリケーションは、構成している記憶装置のハードウェ
ア速度(RAM-DISK のギャップ)によって制限されることがあります。記憶サブシステムへのアクセスは、ランダム
アクセス メモリへのアクセスよりはるかに遅いです。実際、私たちは記憶域へのアクセスをミリ秒単位で記述してい
るのに対し、RAM アクセスについてはナノ秒単位で記述しています。
アプリケーションのパフォーマンスを向上させるための典型的な方法は、システムにメモリを増設することです。この
方法は効き目がありますが、オペレーティング システムの制限を受けます。たとえば、Windows Server 2003
Standard Edition(x86)は、すべてのアプリケーションのアドレス可能(仮想)メモリを 2 GB に制限していて、実行
可能イメージおよびその一部もこの制限に含まれます。したがって、2 GB 制限が効力を持ち続けるため、メモリを
増設することが必ずしもアプリケーションの向上に直接つながるとは限りません。Windows の /3GB スイッチを使
用すれば、この制限を乗り越えられ、アプリケーションでもっと多くのメモリを使用できるようになります。ただし、この
方法は、しばしばオペレーティング システムのほかの部分に影響を与えることがあり、Windows やドライバのため
の領域が小さくなるなど、そのメリットは限られます。
パフォーマンスを向上させるための 3 つ目の方法は、汎用のキャッシュ製品をインストールすることです。この場
合もやはり、かかる方法は次善の策と言えます。なぜなら、キャッシュ製品はすべてのものをキャッシュする傾向に
あり、特定のアプリケーションおよびそのデータ用には設計されていないからです。
最後の方法は、64 ビット バージョンの Windows 上でデータベース アプリケーションを実行することです。この
方法では、アプリケーションは 2 GB を超えるメモリのアドレスが可能になりますが、オペレーティング システムの
パフォーマンスおよび I/O によって、データのページングなどが制約されます。
もう 1 つの制限は、CPU と RAM 間で利用可能な帯域幅(CPU-RAM のギャップ)です。これは、CPU-RAM
の帯域幅を消費し、システム パフォーマンスを制限する、メイン メモリから CPU のキャッシュへ転送されるデータ
の量が要因となります。Pervasive PSQL Xtreme I/O(XIO)は、さまざまなハードウェア コンポーネント間の I/O を
合理化することによって、RAM-DISK および CPU-RAM のギャップをなくそうと努めます。
XIO の概要
Pervasive PSQL Xtreme I/O は、Pervasive PSQL のデータベース アプリケーションのパフォーマンス向上に取り
組む、専用のシステム アクセラレータです。これは、4 GB 以上の RAM を搭載した 32 ビット(x86)バージョン
Microsoft Windows のデバイス ドライバとして実装されます。
XIO はいくつかの技術を駆使して、サーバーの記憶装置、メモリ、およびプロセッサのサブシステムが最大許容量
で機能するよう、これらの間におけるデータの流れを改善します。例として、多数のレコードをテーブルに挿入する
Pervasive PSQL アプリケーションを考えてみましょう。これは、テーブルを提供するデータベース ファイルのさまざ
まな領域へのランダム I/O 要求を招きます。XIO はこの要求を合理化することによって、記憶域への I/O 要求
の総数を減らし、結果的に負荷を軽減します。記憶域コントローラおよび PCI バスにかかる負荷が減るということ
は、結果的に、ほかのトラフィック用の帯域幅が大きくなるということです。
同様に、XIO はメイン メモリとプロセッサ間のデータの流れを改善します。メモリに格納されたデータは圧縮され
ているため、データはプロセッサによって FSB(Front Side Bus)を通じて転送され、プロセッサの L2(または L3)
キャッシュに直接解凍されます。これが、FSB 帯域幅の効率的利用です。Pervasive PSQL に付属する XIO で
は、PSQL アプリケーションのみが、このようなパフォーマンス向上技術から利益を得られます。
このホワイト ペーパーでは、Pervasive PSQL アプリケーションのパフォーマンスを向上させるために XIO が利用
するさまざまな技術について説明します。
キャッシング
キャッシングは、通常はハード ディスクなどの記憶域に存在するデータへのアクセス時間を短縮するための、よく
知られた手法です。キャッシュは DRAM 内にあるため、データへのアクセスが大幅に速くなります。XIO がキャッ
シングをフル活用して、キャッシュされたデータのディスク I/O を排除すれば、PCI バスのトラフィックと記憶域コン
トローラおよびハード ドライブへのトラフィックが減少します。この減少によってリソースが解放され、ほかの要求を
Pervasive PSQL Xtreme I/O
1
処理できるようになるため、待ち時間が減り、帯域幅が増えることになります。
多くのキャッシング サブシステムは、何が格納されるかについては知り得ません。対照的に、XIO は Pervasive
PSQL データベース ファイルのみを格納します。XIO のすべてのキャッシュがデータベース エンジンのサービス
へ引き渡されます。たとえば、1 GB の XIO キャッシュは PSQL のキャッシュを同じ量だけ拡張します。これには、
Pervasive PSQL データベース ファイルの専用記憶域が用いられます。
前述のとおり、32 ビット バージョンの Windows は、アプリケーションにアドレス可能なメモリを 2 GB しか提供し
ません。この 2 GB のメモリ範囲には実行可能なコード セグメントも含まれるため、XIO がない場合、データベー
ス エンジンのキャッシュは 2 GB まで達しません。XIO がある場合には、データベース エンジンのキャッシュは
XIO キャッシュによって、Windows が許可する物理メモリまで拡張されるため、2 GB の障壁は問題になりません。
たとえば、Windows 2000 Advanced Server(/PAE)では、最高 8 GB まで物理メモリを利用できます。XIO があれ
ば、データベース エンジンのキャッシュは、Windows 2000 で利用できるどのような物理メモリによっても拡張され
ます。
64 ビットのアドレス指定を使用すれば、XIO は拡張メモリにアクセスすることができ、32 ビット システムにおける
4 GB 物理メモリの障害を乗り越えられます。総括すれば、32 ビット オペレーティング システム上で動作する 32
ビットデータベース アプリケーションが拡張メモリの恩恵を受けられるようになる、ということです。唯一の制約は、
オペレーティング システムがこのメモリを利用できるようにしなければならないということです(一部の Windows バ
ージョンは、4 GB 以上のメモリが存在しても、使用可能なメモリ量を 4 GB に制限します。さまざまな Windows リ
リースにおけるメモリ制限の詳細については、http://msdn2.microsoft.com/en-gb/library/aa366778.aspx をご覧くだ
さい)。
XIO キャッシュのもう 1 つの特徴は、動的であるということです。XIO はシステム パフォーマンスの多くの局面
(RAM や CPU 使用率など)を監視して、RAM の必要量とシステムの残量のバランスが保たれるよう、XIO キャ
ッシュを増減できるようにしています。この結果、管理者はキャッシュ サイズを選択する必要がなくなります。また、
XIO は物理メモリの使い方にも注意を払っており、物理メモリが不要である場合には、これを保持しません。たとえ
ば、データベース アプリケーションのデータ セットがデータベース エンジンのキャッシュ内に収まるときは、XIO
はどのキャッシュも使用しません。
最後に、拡張メモリを使用する XIO の部分は固定です。4 GB のアドレス境界に満たないメモリとは対照的に、
XIO は拡張メモリがアンロードされない限り、拡張メモリを解放しません。たとえば、8 GB の物理メモリが搭載され
たサーバーと、8 GB のメモリをサポートする Windows バージョンについて考えてみましょう。XIO がインストール
されていれば、データベース エンジンのキャッシュは RAM(拡張メモリ)を最低でも 4 GB まで、あるいは、それ
以上のキャッシュ サービス要求を XIO が検出した場合には 4 GB 以上に拡張します。
インテリジェント圧縮
インテリジェント圧縮は、XIO キャッシュの中心的な役割を果たします。それは、キャッシュする必要のあるデータ
セットに対して、キャッシュの「及ぶ範囲」、つまり有効性を拡大します。たとえば、2 : 1 の圧縮率を使用すれば、
XIO が達することのできるキャッシュの範囲は 2 倍になります。
XIO には、異なるデータ型それぞれに適した多数の圧縮アルゴリズムが含まれています。圧縮はキャッシュの及
ぶ範囲を広げるだけでなく、FSB の負荷も減らします。たとえば、2 : 1 の圧縮率を用いた場合、圧縮されたバッフ
ァを FSB 経由で転送するコストは、圧縮されていないバッファを転送する場合の半分になります。XIO には 8 : 1
比率でデータを圧縮する能力があります。
XIO は受信データすべてに対して 単一の圧縮アルゴリズムを適用しない(つまり、1 種類で全てを賄わない)で、
前方参照的にアルゴリズムをデータに適用します。これにより、試行錯誤しなくても、特定のデータに対して適切な
圧縮プログラムを選択することができます。
データの書き込み
XIO はまた、パフォーマンスをさらに向上させるために、書き込み操作の合理化も行います。現在のストレージ ア
ーキテクチャの効率の悪さを考慮に入れて、書き込みの集約と書き込みの順序付けという 2 つの技術によって、
効率の悪さを軽減しています。
Pervasive PSQL Xtreme I/O
2
多数の書き込み要求の結果を集め、それらを 1 つの大きな要求にまとめることで、XIO は格納を要求する件数を
減らし、ディスク コントローラおよび PCI バスの負荷を効果的に軽減します。その結果、帯域幅が改善されて待ち
時間が減ります。
現在のストレージ アーキテクチャで I/O パフォーマンスを制限している最大のものの 1 つは、ハード ドライブの
ヘッドの動きです。それは、媒体へ書き込みを行う前に、その円盤上の正しい位置へヘッドが移動するからです。
ヘッドがある位置から別の位置へ移動するのにかかる時間をシーク時間と言います。シーク時間はディスクの性能
に直接影響を与えます。順序付けられていない書き込み操作がディスク コントローラへ送られたときの、円盤上を
あちこちへと移動するヘッドと、その移動にかかる時間を想像してみてください。XIO は、転送の効率性が最大に
なるよう書き込み要求を順序付けることによって、この問題を軽減します。
強調すべき重要な点は、たとえ XIO が最大スループットの書き込み要求の順序付けをし直しても、データの整合
性は損なわれないということです。
対称型マルチプロセッシング(SMP)
対称型マルチプロセッシング(SMP)アーキテクチャにおける一般的な問題は、CPU の競合です。この問題は、複
数のプロセッサが物理メモリの同一ブロックへのアクセスを必要とする場合に発生します。一般に、プロセッサを増
設すればサーバーのパフォーマンスは向上しますが、OS およびアプリケーションが SMP アーキテクチャを利用
できるように設計されていなければなりません。そうでなければ、(共有メモリの)プロセッサ間の同期の欠如によっ
て、このアーキテクチャの利点が減少します。XIO は SMP プラットフォームを利用するように設計されています。
つまり、さらにスループットを増やせるよう、XIO の内部構造は x86 プロセッサを活用できるようになっています。
カスタマイズ
XIO は異なるアプリケーション ファイルに合わせて調整することもできます。たとえば、データベースに格納されて
いる圧縮イメージが高い圧縮率をもたらさない場合、そのイメージを保持しているデータベース ファイルについて
は、XIO アクセラレーションを無効にする方が適切であるかもしれません。XIO には除外フィルタが付属しており、
テキスト ファイルに保存されているファイル名およびディレクトリの一覧が、起動時にデータベース エンジンによっ
て読み込まれます。管理者は一覧を作成し、その一覧に指定されている名前を XIO のアクセラレーションから除
外するようエンジンに指示することができます。それにより、特定のファイルが XIO によってキャッシュされなくなり
ます。
XIO の使用に適した状況
XIO は、ディスク使用率の高い大きなデータベースに最適です。たとえば、次のような場合です。



データベース サイズ(データ セット)が、PSQL の L1 キャッシュと Windows システム キャッシュを合
わせたサイズよりも大きい。
データ要求のパターンがランダムである(シーケンシャルではない)。
アプリケーションがディスク I/O を集中的に行う。つまり、多数のディスク要求を生成する。
XIO の PSQL v10 への統合方法
XIO は PSQL によって、ユーザーおよびカーネル モードの OS レイヤにインストールされます。ユーザー モー
ド レベルで、2 つのユーティリティ(xiomgr.exe、xiostats.exe)とインターフェイス モジュール(xioifc.dll)が、共通の
ビューおよびコントロール インターフェイスを XIO に提供します。下の 2 つの図は、XIO がインストールされて
いない PSQL とインストールされている PSQL を示しています。
XIO がインストールされていない場合、PSQL は L1 および L2 キャッシュを使用します。L2 キャッシュは、圧縮
を使用して格納されるデータの量を増やしますが、Windows の 2 GB 制限は残っています。PSQL の標準の 32
ビット インストールでは、L1 キャッシュは使用可能メモリの 20% を消費し、L2 キャッシュは使用可能メモリの最
大 60% まで消費することができます。
Pervasive PSQL Xtreme I/O
3
XIO がインストールされている場合は、標準の PSQL L2 キャッシュを「オフ」にして XIO が PSQL L2 キャッシ
ュの役割を担うことができるようにしておくことで、より多くのメモリ、より速い圧縮を提供します。ユーザー モデル
レベルではインターフェイス モジュールを通して連結し、カーネル モード レベルでは 3 つの XIO ドライバ
(XIO ファイル システム フィルタ、XIO ディスク フィルタ、および XIO キャッシュ)が追加されていることに注目
してください。XIO に PSQL データベース ファイル専用のシステム メモリをさらに与えるため、OS のレジストリ
設定 "large system cache" はオフにします。
Pervasive PSQL Xtreme I/O
4
XIO 統計情報
XIO 統計情報は GUI アプリケーションで、XIO のキャッシュ パラメータと主要なパフォーマンス値に関する統
計情報をリアルタイムに表示します。ユーティリティが提供するのは基本的な統計情報ですが、これは上級ユーザ
ー向けであるため、さまざまな統計要素および統計値の理解が必要になります。情報は、このユーティリティのメイ
ン ウィンドウにマトリックスとして表示されます。
Pervasive PSQL Xtreme I/O
5
XIO Manager
XIO Manager は、XIO ドライバの開始モードおよび状態を制御するコンソール アプリケーション(xiomgr.exe)で
す。これを使用すれば、保守やトラブルシューティングのために、ドライバの状態を変更することができます。XIO
Manager は以下に示すコマンド スイッチをサポートしています。
結論
XIO は、Pervasive PSQL データベースの 32 ビット ベース アプリケーションのパフォーマンス向上のみを目的と
して用いられます。これは、4 GB 以上の RAM を搭載した 32 ビット(x86)バージョンの Microsoft Windows オ
ペレーティング システムのデバイス ドライバとして実装されます。
この高度な I/O アクセラレータは、メモリを拡張し、Pervasive PSQL Summit v10(TM) データベース エンジンの
パフォーマンス能力を高めます。多様な技術およびアルゴリズムを使用して、ランダムなデータベース要求を引き
起こす大きなデータベース アプリケーションのパフォーマンス向上を実現するとともに、物理メモリにデータを読み
込むことで、より速いアクセスのための恩恵を受けられます。
Pervasive PSQL Xtreme I/O
6
問い合わせ先
株式会社エージーテック
東京都千代田区神田錦町1-21-1
昭栄神田橋ビル3F
TEL:03-3293-5300
FAX:03-3293-5270
カスタマーセンター
TEL:03-3293-5283
[email protected]
2009 Pervasive Software Inc. All rights reserved. Pervasive の社名および製品名はすべて、米国お
よびその他の国における Pervasive Software Inc. の商標または登録商標です。その他の商標は、各所
有者が保有するものです。
Pervasive PSQL Xtreme I/O
7