前へ | 次へ | 目次 | 索引 |
ファイル・システムがデータをデータベース・ボリュームなど特定のボリュームにキャッシュするのを禁止するには, MOUNT /NOCACHE コマンドを使用して,キャッシングを禁止した状態でボリュームをマウントします。
OpenVMS Cluster で XFC を使用している場合には,ボリュームを /NOCACHE でマウントした方が, SET FILE /CACHING_ATTRIBUTE を使用し,ボリューム内のすべてのファイルのキャッシング属性を,キャッシングしないように設定するよりも簡単です ( 第 18.5.3 項 を参照してください)。 MOUNT /NOCACHE を使用すると,キャッシングのオーバヘッドが最少になります。 MOUNT/NOCACHE コマンドを使用すると, XQP キャッシングも使用不可能になることに注意してください。
この例では, ORACLE_VOL1 というラベルのデータベース・ボリュームを,キャッシングを禁止してマウントしています。
$ MOUNT DUA100: ORACLE_VOL1 /NOCACHE /SYSTEM |
この節では, OpenVMS Alpha でのみ使用可能な XFC を管理する方法について説明します。次の作業について説明します。
作業 | 参照箇所 |
---|---|
キャッシュのサイズの管理 | 第 18.5.1 項 |
最大キャッシュ I/O サイズの管理 | 第 18.5.2 項 |
ファイルのキャッシングの禁止 | 第 18.5.3 項 |
先読みキャッシングの禁止 | 第 18.5.4 項 |
性能の監視 | 第 18.5.5 項 |
複合アーキテクチャ OpenVMS Cluster での使用 | 第 18.5.6 項 |
この節では, XFC の最小サイズおよび最大サイズを管理する方法について説明します。
XFC は,S2 空間の仮想メモリに保持され, I/O 負荷およびシステムで使用可能な共用メモリ量によって,自動的に縮小したり拡張したりします。 S2 空間は 64 ビットのアドレス空間であるため,必要な場合には,キャッシュを非常に大きいサイズまで拡張することができます。
I/O 負荷が増えるに連れてキャッシュも自動的に拡張しますが,最大サイズより大きくなることはありません。アプリケーションでメモリが必要になると,キャッシュは自動的に縮小しますが,最小サイズより小さくなることはありません。
18.5.1.1 最小キャッシュ・サイズの制御
XFC の最小サイズは,予約メモリ・レジストリの VCC$MIN_CACHE_SIZE エントリの値によって制御します。 VCC$MIN_CACHE_SIZE では,システム・スタートアップ時に XFC に割り当てられたメモリの量を,メガバイト (MB) 単位で指定します。キャッシュは,このサイズを超えて縮小することはありません。このメモリが解放されることは絶対にありません。
XFC の最小サイズをチェックするには, Sysman ユーティリティ・コマンド RESERVED_MEMORY /SHOW または DCL コマンド SHOW MEMORY /RESERVED を使用します。次に例を示します。
$ SHOW MEMORY /RESERVED System Memory Resources on 11-MAY-2000 15:50:25.64 Memory Reservations (pages): Group Reserved In Use Type VCC$MIN_CACHE_SIZE --- 1536 1536 Allocated Total (400.00 Mb reserved) 1536 1536 |
省略時の設定では,予約メモリ・レジストリには VCC$MIN_CACHE_SIZE のエントリが含まれていないため,システム・スタートアップ時に XFC に割り当てられるメモリはありません。ただし,XFC は,システム全体のスループットを保守するために,ごくわずかの量のメモリを割り当てます。このとき割り当てられるメモリの量は,使用しているコンピュータのサイズによって異なります。
最小サイズを設定するには,次の手順に従ってください。
$ RUN SYS$SYSTEM:SYSMAN SYSMAN> RESERVED_MEMORY ADD VCC$MIN_CACHE_SIZE /SIZE=300 /ALLOCATE - _SYSMAN> /NOGLOBAL_SECTION /NOZERO /NOPAGE_TABLE |
この例で示されている修飾子は,すべて使用しなければならない。最大限の性能を実現するには,最小サイズを 4 MB の倍数に設定する。
この作業を,予約メモリを異なった RAD に割り当てようとしている NUMA タイプのコンピュータで実行している場合に最小サイズを設定するには, (先の例のコマンドではなく) 次のコマンドを使用する。
$ RUN SYS$SYSTEM:SYSMAN SYSMAN> RESERVED_MEMORY ADD VCC$MIN_CACHE_SIZE /SIZE=300 /ALLOCATE - _SYSMAN> /NOGLOBAL_SECTION /NOZERO /NOPAGE_TABLE/RAD=0 SYSMAN> RESERVED_MEMORY EXTEND VCC$MIN_CACHE_SIZE /SIZE=500 /ALLOCATE - _SYSMAN> /NOGLOBAL_SECTION /NOZERO /NOPAGE_TABLE/RAD=1 |
XFC の最小サイズを変更するには,次の手順に従ってください。
$ RUN SYS$SYSTEM:SYSMAN SYSMAN> RESERVED_MEMORY MODIFY VCC$MIN_CACHE_SIZE /SIZE=360 /ALLOCATE - _SYSMAN> /NOGLOBAL_SECTION /NOZERO |
この例で示されている修飾子は,すべて使用しなければならない。最大限の性能を実現するには,最小サイズを 4 MB の倍数に設定する。
XFC の最大サイズを制御するには,ダイナミック・システム・パラメータ VCC_MAX_CACHE を使用します。サイズをメガバイト単位で指定します。
省略時の設定では,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 の最大サイズを 50 MB に変更する例を次に示します。
$ RUN SYS$SYSTEM:SYSGEN SYSGEN> USE CURRENT SYSGEN> SET VCC_MAX_CACHE 50 SYSGEN> WRITE ACTIVE |
より大規模なコンピュータでは, XFC は変更ページ・リストの省略時のサイズによって,多少制限されることがあります。通常,変更ページ・リストは, 1 対 1 対応のデータ・キャッシュと考えられます。 XFC は多対 1 対応のキャッシュであるため,通常, 1 つのキャッシュ・ページが多数のユーザによってアクセスされます。大規模なメモリ・システムでは,AUTOGEN は通常, MPW_HILIMIT を非常に大きい値に設定します。このため,メモリ・サブシステムが XFC に与えるための空きメモリが十分にないことも考えられます。
XFC の最小ページ数は, 最小サイズの設定 で指定されたとおりに強制的に設定することができます。さらに,XFC 専用のメモリを永久的に割り当てて,動的な割り当てルーチンおよび割り当て解除ルーチンによってオーバヘッドが発生するのを防ぐこともできます (VIOC に対する操作と似ています)。このようにするには,システム・パラメータ VCC_MAX_CACHE を, VCC$MIN_CACHE_SIZE によって指定されるメモリ予約と等しくなるように設定します。
たとえば,システムのメモリが 128 GB ある場合には, 8 GB のメモリを XFC に占有させることによって,キャッシュのヒット率および全体の応答時間は,常に良くなります。次に例を示します。
$ RUN SYS$SYSTEM:SYSGEN SYSGEN> USE CURRENT SYSGEN> SET VCC_MAX_CACHE 8000 SYSGEN> WRITE ACTIVE $ RUN SYS$SYSTEM:SYSMAN SYSMAN> RESERVED_MEMORY ADD VCC$MIN_CACHE_SIZE /SIZE=8000 /ALLOCATE - _SYSMAN> /NOGLOBAL_SECTION /NOZERO /NOPAGE_TABLE/RAD=0 |
ダイナミック・システム・パラメータ VCC_MAX_IO_SIZE は, XFC でキャッシュできる I/O の最大サイズを制御します。このパラメータでは,サイズをブロック単位で指定します。省略時の値は 128 です。
この例では, XFC でキャッシュできる I/O の最大サイズを,1000 ブロックに変更します。
$ RUN SYS$SYSTEM:SYSGEN SYSGEN> USE CURRENT SYSGEN> SET VCC_MAX_IO_SIZE 1000 SYSGEN> WRITE ACTIVE |
この一連のコマンドは,将来マウントされるボリュームだけでなく,現在ローカル・ノードにマウントされているボリュームへの I/O にも影響を与えます。これらのコマンドを入力した後,XFC は 1000 ブロックより大きい I/O をキャッシュしなくなります。 SHOW MEMORY /CACHE /FULL コマンドを実行すると,効率的なパラメータの設定のためのガイドラインとなる,I/O サイズの棒グラフが表示されます。
18.5.3 ファイルのキャッシングの禁止
XFC が,データベース・ファイルなど特定のファイルをキャッシングするのを禁止するには,対象となるファイルのキャッシング属性を NO_CACHING に設定します。
ファイルのキャッシング属性とは,アプリケーションが使用するキャッシング・オプションを指定せずにファイルにアクセスした場合に,XFC が使用する省略時のキャッシング・オプションです。このキャッシング・オプションは, WRITETHROUGH または NO_CACHING です。
ファイルをキャッシュするには,そのキャッシング属性を WRITETHROUGH (省略時の設定) に設定します。ファイルをキャッシュしないようにするには,そのキャッシング属性を NO_CACHING に設定します。
属性 | 説明 |
---|---|
SET FILE /CACHING_ATTRIBUTE=keyword + | ファイルまたはディレクトリにキャッシング属性を設定する。 |
DIRECTORY /CACHING_ATTRIBUTE または
DIRECTORY /FULL |
ファイルまたはディレクトリのキャッシング属性を表示する。 |
DIRECTORY /SELECT=CACHING_ATTRIBUTE=(keyword[,...]) + | 特定のキャッシング属性を持つすべてのファイルおよびディレクトリを表示する。 |
XFC はディレクトリをキャッシュしません。ディレクトリのキャッシング属性は,そのディレクトリ内に新たに作成されるファイルやサブディレクトリに,どのようにキャッシング属性が継承されるかのみを制御します。
$ SET FILE DISK$USERS:[SMITH]BORING.DIR;1 /CACHING_ATTRIBUTE=NO_CACHING $ SET FILE DISK$USERS:[SMITH.BORING...]*.*;* /CACHING_ATTRIBUTE=NO_CACHING |
$ DIRECTORY MYFILE.TXT /CACHING_ATTRIBUTE Directory DISK$USERS:[SMITH] MYFILE.TXT;1 Write-through Total of 1 file. |
$ DIRECTORY DISK$USERS:[000000...]*.* /SELECT=CACHING_ATTRIBUTE=NO_CACHING |
XFC は,データを順に読み込むアプリケーションの性能を向上させるために, 先読みキャッシング と呼ばれるテクニックを使用します。ファイルがサイズの等しい I/O に順に読み込まれると,これを検出し,現在の読み込みよりも先にデータをフェッチして,次の読み込み命令がキャッシュから満たされるようにします。
ローカル・ノードでの先読みキャッシングを禁止するには,ダイナミック・システム・パラメータ VCC_READAHEAD を 0 に設定します。省略時の設定ではこのパラメータは 1 で,ローカル・ノードが先読みキャッシングを実行できます。
この例では,ローカル・ノードでの先読みキャッシングを禁止します。
$ RUN SYS$SYSTEM:SYSGEN SYSGEN> USE CURRENT SYSGEN> SET VCC_READAHEAD 0 SYSGEN> WRITE ACTIVE |
この一連のコマンドは,将来マウントされるボリュームだけでなく,現在ローカル・ノードにマウントされているボリュームへの I/O にも影響を与えます。これらのコマンドを入力した後,先読みキャッシングはローカル・ノードでは使用されなくなります。
18.5.5 性能の監視
XFC は VIOC よりも多くの情報を提供します。たとえば,システム全体,ボリューム全体,またはファイル単位でも情報を取得することができます。ディスク I/O 応答時間も取得可能です。 SHOW MEMORY コマンドについては,『Compaq OpenVMS DCL ディクショナリ: N--Z』を参照してください。
18.5.5.1 システム全体の統計情報
SHOW MEMORY /CACHE を使用すると, XFC のシステム全体での性能を監視することができます。次に例を示します。
$ SHOW MEMORY /CACHE System Memory Resources on 26-JAN-2001 15:58:18.71 Extended File Cache (Time of last reset: 24-JAN-2001 15:03:39.05) Allocated (Mbytes) (1) 3000.00 Maximum size (Mbytes) (11) 5120.00 Free (Mbytes) (2) 2912.30 Minimum size (Mbytes) (12) 3000.00 In use (Mbytes) (3) 87.69 Percentage Read I/Os (13) 98% Read hit rate (4) 92% Write hit rate (14) 0% Read I/O count (5) 178136 Write I/O count (15) 1867 Read hit count (6) 165470 Write hit count (16) 0 Reads bypassing cache (7) 2802 Writes bypassing cache (17) 39 Files cached open (8) 392 Files cached closed (18) 384 Vols in Full XFC mode (9) 0 Vols in VIOC Compatible mode (19) 4 Vols in No Caching mode (10) 1 Vols in Perm. No Caching mode (20) 0 |
(1) Allocated | このキャッシュに現在割り当てられているメモリの量。 |
(2) Free | 使用されていないキャッシュに現在割り当てられているメモリの量。 |
(3) In Use | 使用されているキャッシュに現在割り当てられているメモリの量。これは, Allocated の値と Free の値の差に相当する。 |
(4) Read hit rate | Read hit count フィールドを Read I/O count フィールドで除算して生じる数値 (率)。 |
(5) Read I/O count | システム・スタートアップ以降,キャッシュによって確認された読み込み I/O の総数。 |
(6) Read hit count | システム・スタートアップ以降の読み込みヒットの総数。読み込みヒットとは,データがキャッシュで見つかったため,ディスクへの物理 I/O が必要なかった読み込み I/O である。 |
(7) Reads bypassing cache | システム・スタートアップ以降,キャッシュによって確認されたが,キャッシュされなかった読み込み I/O の総数。その理由としては,大きすぎる/NOCACHE を使用してマウントされたボリュームに対するものである,QIO 修飾子 IO$M_DATACHECK,IO$M_INHRETRY,または IO$M_NOVCACHE のいずれかを使用して指定されているなどが挙げられる。 |
(8) Files cached open | 現在キャッシュされているオープンされたファイルの数。 |
(9) Volumes in Full XFC mode | Compaq により予約済み。0 になる。 |
(10) Volumes in No Caching mode | ローカル・ノードまたは OpenVMS Cluster の別のノードのいずれかでキャッシングが禁止されている場合に,この値は,ローカルノードに現在マウントされているボリュームの数になる。それ以外の場合は 0。 |
(11) Maximum size | キャッシュが拡張できる最大サイズ。 |
(12) Minimum size | キャッシュが縮小できる最小サイズ。これは,予約メモリ・レジストリの VCC$MIN_CACHE_SIZE エントリによって制御される。 |
(13) Percentage Read I/Os | 読み込まれる I/O のパーセント。 |
(14) Write hit rate | このフィールドは,将来使用するために予約されている。 |
(15) Write I/O count | システム・スタートアップ以降,キャッシュによって確認された書き込み I/O の総数。 |
(16) Write hit count | このフィールドは,将来使用するために予約されている。 |
(17) Writes bypassing cache | システム・スタートアップ以降,キャッシュによって確認されたが,キャッシュされなかった書き込み I/O の総数。その理由としては,大きすぎる /NOCACHE を使用してマウントされたボリュームに対するものである, QIO 修飾子 IO$M_DATACHECK,IO$M_ERASE,IO$M_INHRETRY,または IO$M_NOVCACHE のいずれかを使用して指定されているなどが挙げられる。 |
(18) Files cached closed | 有効なデータがまだキャッシュに入っている,閉じられたファイルの数。 |
(19) Volumes in VIOC compatible mode | VCC キャッシング・プロトコルを使用している XFC によってキャッシングされるボリュームの数。OpenVMS バージョン 7.3 以降, XFC が使用するのは VCC キャッシング・プロトコルだけである。 |
(20) Vols in Perm. No Caching mode | このフィールドは 0 でなければならない。 0 以外の数字である場合には, XFC がこの装置への不正な書込み操作を検出して,この装置へのキャッシングを禁止したことを意味する。 |
前へ | 次へ | 目次 | 索引 |