日本−日本語 |
|
|
HP OpenVMS: システム管理者マニュアル (下巻)第4章 ファイル・システムのデータ・キャッシュの管理 |
|
目次 この章では,XFC (Alpha および I64) および Virtual I/O Cache (VIOC) を管理する方法について説明します。 これらは,Files-11 ファイル・システムが ODS-2 および ODA-5 ボリュームのデータをキャッシュするときに使用します。 この章の内容この章では,次の作業について説明します。
この章では,次の概念について説明します。
Files-11 ファイル・システムは,性能を向上させるために,キャッシング と呼ばれるテクニックを使用します。 Files-11 ファイルは,ディスクから最近読み込んだり,ディスクに書き込んだりしたデータのコピーを,キャッシュ と呼ばれる,メモリの領域に保持しています。 アプリケーションがデータを読み込むときに,ファイル・システムはデータがキャッシュにあるかどうかをチェックします。 データがキャッシュにない場合には,I/O を実行して,ディスクからデータを読み込みます。 キャッシングは,読み込み性能を向上させます。 メモリ (キャッシュ) からデータを読み込む方が,ディスクから読み込むよりもはるかに速いためです。 ハードウェア I/O サブシステムおよび OpenVMS には,キャッシングのいくつかのレベルがあります。 一般的に,キャッシングのレベルが多いほど,データにアクセスする応答時間が短くなります。 ODS-2 ボリュームと ODS-5 ボリュームの場合には,Files-11 ファイル・システムに複数のキャッシュがあります。 ファイル・ヘッダなどファイルのメタデータのためのメタデータ・キャッシュと,ファイル・データのためのデータ・キャッシュです。 Files-11 は,次に示す 2 つのシステム全体のデータ・キャッシュのうち,いずれか 1 つを使用できます。
この章では,データ・キャッシュを管理する方法について説明します。 メタデータ・キャッシュの管理方法については,『OpenVMS Performance Management』を参照してください。 RMS は,データ・キャッシングを実行できるローカル・バッファおよびグローバル・バッファを利用することに注意してください。 省略時の設定では,このキャッシングは許可されていません。 RMS のローカル・バッファおよびグローバル・バッファを操作すると,I/O 性能に影響を与える恐れがあるためです。 RMSの ローカル・バッファ およびグローバル・バッファの管理方法については,『Guide to OpenVMS File Applications』を参照してください。 また,変更ページ・リストは,キャッシュの一種であるため,ページはプロセスのワーキング・セットに戻され,ディスクには出力されないことにも注意してください。 XFC および VIOC はともに,OpenVMS Cluster 内で一貫性のあるデータを保守する仮想ブロック・キャッシュです。 これらは,データ・ファイルとイメージ・ファイルの両方をキャッシュします。 データ・キャッシュは,ライトスルー・キャッシュです。 アプリケーションがデータをファイルに書き込むと,データは直接ディスクに書き込まれます。 アプリケーションは,ディスク I/O が完了し,データがディスクに書き込まれるまで,待たなければなりません。 OpenVMS Cluster では,さまざまなノードがさまざまなデータ・キャッシュを使用することができます。 このため,混合アーキテクチャ・クラスタの場合には,XFC による利点が生じます。 OpenVMS Alpha ノードおよび I64 ノードは,XFC または VIOC を使用することができます。 OpenVMS VAX ノードは,4.5.6.2 項 「複合アーキテクチャ OpenVMS Cluster での XFC の使用」で説明しているように,VIOC だけを使用することができます。 XFC は,I/O 性能を向上させ,VIOC では 使用不可能な次のような機能を持っています。
システム・スタートアップ時に,スタティック・システム・パラメータは,ファイル・システムがデータ・キャッシュを使用するかどうか,使用する場合には,どちらのデータ・キャッシュ (XFC または VIOC) を使用するかを制御します。 システム・パラメータは,次の表に示すようにオペレーティング・システムによって異なります。
OpenVMS Cluster では,ファイル・システムのデータ・キャッシングを 1 つのノードで使用不可に設定すると,クラスタ全体でも使用不可になります。 クラスタの他のノードは,そのノードがクラスタから離脱するか,VCC_FLAGS または VBN_CACHE_S を 0 以外の値に設定してリブートしないと,XFC または VIOC を使用できません。 DCL コマンド SHOW MEMORY を使用すると,キャッシングが使用可能になっているかどうかを確認することができます。 クラスタ全体でキャッシングを禁止するには,OpenVMS Cluster のいずれかのノードで次の手順を実行します。
ファイル・システムがデータをデータベース・ボリュームなど特定のボリュームにキャッシュするのを禁止するには,MOUNT /NOCACHE コマンドを使用して,キャッシングを禁止した状態でボリュームをマウントします。 OpenVMS Cluster で XFC を使用している場合には,ボリュームを /NOCACHE でマウントした方が,SET FILE /CACHING_ATTRIBUTE を使用し,ボリューム内のすべてのファイルのキャッシング属性を,キャッシングしないように設定するよりも簡単です (4.5.4 項 「ファイルのキャッシングの禁止」を参照してください)。 MOUNT /NOCACHE を使用すると,キャッシングのオーバヘッドが最少になります。 MOUNT/NOCACHE コマンドを使用すると,XQP キャッシングも使用不可能になることに注意してください。 例この例では,ORACLE_VOL1 というラベルのデータベース・ボリュームを,キャッシングを禁止してマウントしています。
この節では,OpenVMS Alpha および I64 システムでのみ使用可能な XFC を管理する方法について説明します。 次の作業について説明します。
以前のバージョンの OpenVMS Alpha または OpenVMS VAX を含む OpenVMS Cluster システムで,OpenVMS バージョン 7.3 以降または I64 システムの XFC を使用する場合は,以前のバージョンの OpenVMS を実行しているシステム上に,修正キットをインストールしなければなりません。
この節では,XFC の最小サイズおよび最大サイズを管理する方法について説明します。 XFC は,S2 空間の仮想メモリに保持され,I/O 負荷およびシステムで使用可能な共用メモリ量によって,自動的に縮小したり拡張したりします。 S2 空間は 64 ビットのアドレス空間であるため,必要な場合には,キャッシュを非常に大きいサイズまで拡張することができます。 I/O 負荷が増えるに連れてキャッシュも自動的に拡張しますが,最大サイズより大きくなることはありません。 アプリケーションでメモリが必要になると,キャッシュは自動的に縮小しますが,最小サイズより小さくなることはありません。 XFC の最小サイズは,予約メモリ・レジストリの VCC$MIN_CACHE_SIZE エントリの値によって制御します。 VCC$MIN_CACHE_SIZE では,システム・スタートアップ時に XFC に割り当てられたメモリの量を,M バイト (MB) 単位で指定します。 キャッシュは,このサイズを超えて縮小することはありません。 このメモリが解放されることは絶対にありません。 最小サイズのチェックXFC の最小サイズをチェックするには,Sysman ユーティリティ・コマンド RESERVED_MEMORY /SHOW または DCL コマンド SHOW MEMORY /RESERVED を使用します。 次に例を示します。
最小サイズの設定省略時の設定では,予約メモリ・レジストリには VCC$MIN_CACHE_SIZE のエントリが含まれていないため,システム・スタートアップ時に XFC に割り当てられるメモリはありません。 ただし,XFC は,システム全体のスループットを保守するために,ごくわずかの量のメモリを割り当てます。 このとき割り当てられるメモリの量は,使用しているコンピュータのサイズによって異なります。 最小サイズを設定するには,次の手順に従ってください。
最小サイズの変更XFC の最小サイズを変更するには,次の手順に従ってください。
XFC の最大サイズを制御するには,ダイナミック・システム・パラメータ VCC_MAX_CACHE を使用します。 サイズを M バイト単位で指定します。 省略時の設定では,VCC_MAX_CACHE は –1 で,これは,システム・スタートアップ時に,XFC の最大サイズがシステム上の物理メモリの 50 パーセントに設定されることを意味します。 たとえば,システムの物理メモリが 2 GB である場合には,その最大サイズは 1 GB です。 VCC_MAX_CACHE によって指定される最大サイズには,XFC が OpenVMS ロック・マネージャを介して間接的に消費するメモリが含まれていないことに注意してください。 システム・スタートアップ時の VCC_MAX_CACHE の値によって,XFC の最大サイズが決まります。 この値を超えて最大サイズを増やすことはできません。 たとえば,システム・スタートアップ時に VCC_MAX_CACHE の値が 60 である場合には,最大サイズは最初 60 MB に設定されます。 その後,VCC_MAX_CACHE の値を 40 に設定すると,最大サイズは縮小し,40 MB になります。 XFC のサイズが 40 MB より大きい場合には,そのサイズは徐々に縮小し,40 MB になります。 次に VCC_MAX_CACHE の値を 80 に設定しても,最大サイズは,システム・スタートアップ時に設定された値である 60 MB までしか拡張しません。 システム・スタートアップ時に設定された値を超えて最大サイズを増やすことはできないためです。 VCC_MAX_CACHE が,予約メモリ・レジストリの VCC$MIN_CACHE_SIZE エントリの値によって指定された最小サイズより小さい場合には,システム・スタートアップ時に VCC_MAX_CACHE は無視され,XFC は,この最小サイズと同じ値に設定されます。 この場合には,XFC は固定サイズになり,縮小も拡大もできません。 例アクティブなシステム上の XFC の最大サイズを,60 MB から 40 MB に減らす例を次に示します。
現在のパラメータ・セットを変更することにより,リブートを行っても変更が有効なままとする例を次に示します。
この変更を永続的なものにするには,変更内容をMODPARAMS.DAT に入力しなければなりません。 この変更は,次回のリブート後に有効になります。 より大規模なコンピュータでは,XFC は変更ページ・リストの省略時のサイズによって,多少制限されることがあります。 通常,変更ページ・リストは,1 対 1 対応のデータ・キャッシュと考えられます。 XFC は多対 1 対応のキャッシュであるため,通常,1 つのキャッシュ・ページが多数のユーザによってアクセスされます。 大規模なメモリ・システムでは,AUTOGEN は通常,MPW_HILIMIT を非常に大きい値に設定します。 このため,メモリ・サブシステムが XFC に与えるための空きメモリが十分にないことも考えられます。 XFC の最小ページ数は,4.5.2.1 項 「最小キャッシュ・サイズの制御」の最小サイズの設定で指定されたとおりに強制的に設定することができます。 さらに,XFC 専用のメモリを永久的に割り当てて,動的な割り当てルーチンおよび割り当て解除ルーチンによってオーバヘッドが発生するのを防ぐこともできます (VIOC に対する操作と似ています)。 このようにするには,システム・パラメータ VCC_MAX_CACHE を,VCC$MIN_CACHE_SIZE によって指定されるメモリ予約と等しくなるように設定します。 たとえば,システムのメモリが 128 GB ある場合には,8 GB のメモリを XFC に占有させることによって,キャッシュのヒット率および全体の応答時間は,常に良くなります。 次に例を示します。
VCC_MAX_CACHE への変更を永続的なものにするには,変更内容を MODPARAMS.DAT に入力しなければなりません。 この変更は,次回のリブート後に有効になります。 AUTOGEN を実行して,他のシステム・パラメータが新しい値を許すか確認することをお勧めします。 ダイナミック・システム・パラメータ VCC_MAX_IO_SIZE は,XFC でキャッシュできる I/O の最大サイズを制御します。 このパラメータでは,サイズをブロック単位で指定します。 省略時の値は 127 です。 例この例では,XFC でキャッシュできる I/O の最大サイズを,1000 ブロックに変更します。
この一連のコマンドは,将来マウントされるボリュームだけでなく,現在ローカル・ノードにマウントされているボリュームへの I/O にも影響を与えます。 これらのコマンドを入力した後,XFC は 1000 ブロックより大きい I/O をキャッシュしなくなります。 SHOW MEMORY /CACHE /FULL コマンドを実行すると,効率的なパラメータの設定のためのガイドラインとなる,I/O サイズの棒グラフが表示されます。 XFC が,データベース・ファイルなど特定のファイルをキャッシングするのを禁止するには,対象となるファイルのキャッシング属性を NO_CACHING に設定します。 ファイルのキャッシング属性とは,アプリケーションが使用するキャッシング・オプションを指定せずにファイルにアクセスした場合に,XFC が使用する省略時のキャッシング・オプションです。 このキャッシング・オプションは,WRITETHROUGH または NO_CACHING です。 ファイルをキャッシュするには,そのキャッシング属性を WRITETHROUGH (省略時の設定) に設定します。 ファイルをキャッシュしないようにするには,そのキャッシング属性を NO_CACHING に設定します。
XFC はディレクトリをキャッシュしません。 ディレクトリのキャッシング属性は,そのディレクトリ内に新たに作成されるファイルやサブディレクトリに,どのようにキャッシング属性が継承されるかのみを制御します。
例
XFC は,データを順に読み込むアプリケーションの性能を向上させるために,先読みキャッシングと呼ばれるテクニックを使用します。 ファイルがサイズの等しい I/O に順に読み込まれると,これを検出し,現在の読み込みよりも先にデータをフェッチして,次の読み込み命令がキャッシュから満たされるようにします。 ローカル・ノードでの先読みキャッシングを禁止するには,ダイナミック・システム・パラメータ VCC_READAHEAD を 0 に設定します。 省略時の設定ではこのパラメータは 1 で,ローカル・ノードが先読みキャッシングを実行できます。 例この例では,ローカル・ノードでの先読みキャッシングを禁止します。
この一連のコマンドは,将来マウントされるボリュームだけでなく,現在ローカル・ノードにマウントされているボリュームへの I/O にも影響を与えます。 これらのコマンドを入力した後,先読みキャッシングはローカル・ノードでは使用されなくなります。 XFC は VIOC よりも多くの情報を提供します。 たとえば,システム全体,ボリューム全体,またはファイル単位でも情報を取得することができます。 ディスク I/O 応答時間も取得可能です。 SHOW MEMORY コマンドについては,『OpenVMS DCL ディクショナリ: N--Z』を参照してください。 SHOW MEMORY /CACHE を使用すると,XFC のシステム全体での性能を監視することができます。 次に例を示します。
SHOW MEMORY コマンドについては,『OpenVMS DCL ディクショナリ: N--Z』を参照してください。 OpenVMS Cluster では,XFC を使用できるノードもあれば,VIOC を使用できるノードもあります。 このため,混合アーキテクチャ・クラスタの場合には,XFC による利点が生じます。 VIOC を使用しているノード上にボリュームがマウントされている場合には,XFC を使用しているノードは,書き込みのために共有されているボリュームにあるどのファイルについても,キャッシュできません。 書き込みのために共有されているファイルとは,OpenVMS Cluster 内の複数のノードによってアクセスされているファイルで,これらのノードのうち少なくとも 1 つが,書き込みアクセスのために開いているファイルのことです。 この節では,VIOC の管理方法について説明します。 次の作業について説明します。
Virtual I/O Cache とは,クラスタ全体を対象にした,ライトスルーの,ファイル指向のディスク・キャッシュです。 ディスク I/O 操作の数を低減し,性能を向上させることができます。 Virtual I/O Cache の目的は,I/O 応答時間を最小限のオーバヘッドに抑えることによって,システム・スループットを向上させることです。 Virtual I/O Cache は,システム管理およびアプリケーション・ソフトウェアからは透過的に動作し,仮想ディスク I/O の読み込み性能を非常に向上させながら,システムの信頼性を維持します。 Virtual I/O Cache は,データ・ファイルおよびイメージ・ファイルを格納することができます。 たとえば,ODS-2 ディスク・ファイルのデータ・ブロックは,最初にアクセスされるときに Virtual I/O Cache にコピーされます。 その後,同じデータ・ブロックの読み込み要求は,この Virtula I/O Cache で満たされ (ヒット),本来必要な物理ディスク I/O の操作 (ミス) は不要になります。 システムの負荷によって,アプリケーションのスループットが向上したり,会話型応答が向上したり,I/O 負荷が低減したりします。
キャッシュがデータを操作する方法について,次のいくつのポリシーが適用されます。
何らかの理由により,Alpha システムまたは I64 システムで XFC ではなく VIOC を使用する必要がある場合には,次の手順に従います。
ステップ 1 で予約メモリ・レジストリから VCC$MIN_CACHE_SIZE エントリを削除するのを忘れた場合には,XFC がロードされていないにもかかわらず,XFC にメモリが割り当てられます。 このメモリは使用されません。 このような状態になった場合には,Sysman ユーティリティの RESERVED_MEMORY FREE コマンドを使用して,このメモリを解放します。
VIOC のサイズを管理する方法は,使用しているシステムが OpenVMS Alpha か,I64 か,VAX かによって異なります。 OpenVMS Alpha システムまたは I64 システムOpenVMS Alpha システムおよび I64 システムの場合には,VIOC のサイズは,システム・スタートアップ時に固定されます。 キャッシュは縮小も拡張もできません。 スタティック・システム・パラメータ VCC_MAXSIZE の値により,キャッシュのサイズがブロック単位で指定されます。 省略時の値は,6400 ブロック (3.2 MB) です。 OpenVMS Alpha システムまたは I64 システムで VIOC のサイズを変更するには,次の手順に従います。
OpenVMS VAX システムOpenVMS VAX システムでは,スタティック・システム・パラメータ VCC_PTES を使用して,VIOC の最大サイズを指定することができます。 このパラメータにより,サイズがページ単位で指定されます。 省略時の値は 2,000,000,000 です。 使用しているシステムでの I/O 負荷および使用可能なメモリ量の残りに応じて,VIOC は自動的に縮小したり,拡張したりします。 I/O 負荷が増加すると,キャッシュも自動的に拡張しますが,最大サイズを超えることはありません。 アプリケーションでメモリが必要な場合には,キャッシュは自動的に縮小します。 OpenVMS VAX システムで VIOC のサイズを変更するには,次の手順に従います。
DCL コマンド SHOW MEMORY/CACHE/FULL を使用すると,Virtual I/O Cache に関する統計情報を表示することができます。 次に例を示します。
省略時の設定では,Virtual I/O Cache によるキャッシングは許可されています。 キャッシングを許可したり禁止するには,次のシステム・パラメータを使用します。 MODPARAMS.DAT のパラメータの値を,次のように変更します。
MODPARAMS.DAT を更新して,必要なパラメータの値を変更した後,AUTOGEN を実行して,キャッシングを許可または禁止する 1 つまたは複数のノードをリブートしなければなりません。 キャッシングは,システムの初期化中に自動的に許可または禁止されます。 ユーザによる操作は不要です。 SHOW MEMORY/CACHE を使用すると,実行中のシステムで VIOC キャッシングがオンであるかオフであるかが表示されます。 (SYSGEN を使用するよりもはるかに簡単です。) SYSGEN を使用すると,システムがブートされる前にパラメータを調べることができます。 たとえば,システム・パラメータ VCC_FLAGS (Alpha または I64) または VBN_CACHE_S (VAX) をチェックすると,SYSGEN を使用することにより,Virtual I/O Cache によるキャッシングが許可されているかどうかを知ることができます。 次に Alpha システムの例を示します。
値が 0 の場合には,キャッシングが禁止されています。 値が 1 の場合には,キャッシングが許可されています。 キャッシングに割り当てられるメモリは,未使用ページ・リストのサイズによって決まります。 次の条件のうちいずれか 1 つがあてはまる場合には,Virtual I/O Cache のサイズは,拡張することがあります。
キャッシュ・サイズは,次のような条件によっても制限されます。
キャッシュからのメモリ再生はどのように行われるのでしょうか。 スワッパは,第 1 レベルのトリミングを使用して,Virtual I/O Cache に割り当てられているメモリを再生することができます。 さらに,ヒューリスティック・プリミティブがキャッシュを縮小し,メモリを小規模な増分単位で戻します。 Virtual I/O Cache のサイズは,システム・パラメータ VCC_MAXSIZE によって決まります。 このパラメータによって指定されるメモリの量がシステムの初期化時に静的に割り当てられ,Virtual I/O Cache によって引き続き所有されます。 キャッシュのサイズを増やしたり減らすには,VCC_MAXSIZE を変更し,システムをリブートします。 キャッシュは,単一ノード・システムから大規模な混合インターコネクト OpenVMS Cluster システムにいたるまで,サポートされているすべての構成で動作します。 Virtual I/O Cache は,中心点に相当します。 つまり,キャッシュはそれぞれの OpenVMS Cluster メンバに対してローカルな存在です。 どのような基本システムも,Virtual I/O Cache によるキャッシングをサポートすることができます。 このキャッシング機能を使用するために,OpenVMS Cluster のライセンスは必要ではありません。
ロック・マネージャは,キャッシュを密接に管理します。 1 つのノードが OpenVMS Cluster を離れると,キャッシュはフラッシュされます。 複数のノードで書き込みアクセスを持ち,複数のノードで開かれているファイルは,キャッシュされません。 |
|