前へ | 次へ | 目次 | 索引 |
DECram とは,システム管理者がメモリ内に論理ディスクを作成して,I/O のパフォーマンスを向上することができるディスク・デバイス・ドライバです。メモリ内の DECram ディスクに書き込まれたデータは,ハードウェア・ディスクのデータより高速にアクセスできます。DECram バージョン 3.1 は,Galaxy 構成も含めて,OpenVMS Alpha バージョン 7.2-1H1 以上が稼動する OpenVMS Alpha システムで動作します。
DECram バージョン 3.1 では,Galaxy 共用メモリなど,最新の Alpha システムの高度な機能を利用しています。さらに,第 4.8 節 で説明している I/O 後処理の変更により,パフォーマンスが大幅に向上しています。バージョン 3.1 では,複数の RAD(Resource Affinity Domain)間でメモリが割り当てられます。仮想デバイス・アドレッシングが S1 アドレス空間から S2 アドレス空間に移動されるため,2 GB より大きいデバイスの作成とアドレッシングが可能になります。
Alpha ベースのシステムは DECram バージョン 3.1 に簡単にアップグレードできます。バージョン 3.1 では,DECram ディスクの作成,初期化,マウントのために,強化された新しい DECram コマンド・インタフェースを使用することができ,これまで使い慣れている SYSMAN コマンドを引き続き使用することもできます。
DECram バージョン 3.1 のディスクは,DECRAM> プロンプトで作成およびフォーマットし,DCL INITIALIZE(INIT)コマンドを使用して初期化します。OpenVMS Alpha で DECram バージョン 3.1 を構成する場合は,DECram スタートアップ・プロシージャを作成して,ディスクをセットアップしたり,必要なファイルをコピーすることができます。このプロシージャは通常,システム・スタートアップ・プロシージャ SYS$MANAGER:SYSTARTUP_VMS.COM から呼び出します。
DECram ディスクは,割り当てられるディスク空間のブロック(512 バイト)当たりに,未使用ページ・リストとして,516 バイトが必要です。 |
DECram バージョン 3.1 およびそのドキュメントは,Software Products Library および Online Documentation Library CD-ROM に格納されています。
4.8 DECram,Mailbox ドライバ,Volume Shadowing のパフォーマンスの向上
DECram for OpenVMS バージョン 3.1 およびバージョン 2.5,Mailbox ドライバ,Volume Shadowing for OpenVMSは,マルチプロセッサ・システムでパフォーマンスを向上できるように変更されました。OpenVMS Alpha バージョン 7.3-1 では,デバイス・ドライバがローカル CPU で I/O 後処理を実行することを指定できるようになりました。DECram,Mailbox ドライバ,Volume Shadowing はすべてこのパフォーマンス向上機能を使用するように変更されました。パフォーマンスが最も向上しているのは DECram の場合で,Mailbox ドライバの場合もかなり向上しています。Volume Shadowing を使用する構成の場合,プライマリ CPU が飽和状態になると,このようなシステムである程度パフォーマンスが向上します。
この機能が導入される前は,入出力(I/O)操作を完了するために,IOC$REQCOM と IOC$ALTREQCOM という 2 つのルーチンが呼び出されていました。これらのルーチンでは,プライマリ CPU で non-fast-path I/O が実行されていたため,パフォーマンスが低下する可能性がありました。
バージョン 7.3-1 では,デバイス・ドライバの作成者は UCB(unit control block)の初期化ルーチンで,I/O 後処理をローカル CPU で実行するためのビットをセットして,パフォーマンスを向上できます。このビットは UCB$L_STS フィールドにあり,UCB$[V,M]_IOPOST_LOCAL という名前です。このビットをセットすると,IOC$REQCOM および IOC$ALTREQCOM は,IRP を CPU 固有の後処理キューに登録し,必要に応じて SOFTINT #IPL$_IOPOST を実行します。
順序の要件を満たすために,ネットワーク・ドライバで IOPOST_LOCAL 機能を利用してはいけません。 |
OpenVMS Alpha バージョン 7.3-1 より前のバージョンでは,ハードウェア割り込みはすべてプライマリ CPU を使用していました。Fast Path 対応デバイスからの割り込みは,プライマリ CPU から "優先" CPU にリダイレクトする必要があります。このリダイレクトにもプライマリ CPU が関係し,プロセッサ間オーバーヘッドも発生していました。さらに,優先 CPU をポートに割り当てるためのアルゴリズムでは,RAD(Resource Affinity Domain)のパフォーマンスに与える影響が考慮されていませんでした。
4.9.1 分散割り込み
OpenVMS Alpha バージョン 7.3-1 以降,Fast Path ポートのハードウェア割り込みは割り込み CPU にダイレクトできるようになりました。この割り込みではプライマリ CPU を必要としません。Fast Path ポートの優先 CPU がそのポートの割り込み CPU でもある場合は,Fast Path のパフォーマンスは大幅に向上します。この場合,割り込みは割り込み CPU に直接送られるため,プライマリ CPU ではまったく I/O 処理が不要になります。この Fast Path のパフォーマンスの大幅な向上を分散割り込みと呼びます。
Fast Path ポートの割り込み CPU ID を表示するには,SHOW DEVICES/FULL を使用します(システムで分散割り込みをサポートしない場合は,割り込み CPU はプライマリ CPU であり,SHOW DEVICES の出力に表示されません)。
分散割り込みは AlphaServer DS20,ES40/45,GS シリーズ・システムの Fibre Channel,CI,および一部の SCSI ポートでサポートされます。 |
Fast Path のコードでは,優先 CPU と割り込み CPU を割り当てるときに,ポートの RAD(Resource Affinity Domain)がパフォーマンスに与える影響が考慮されるようになりました。RAD のないシステムは,1 つの RAD で構成されるシステムとして取り扱われます。分散割り込みをサポートする一部のシステムでは,すべての CPU が分散割り込みを処理できるわけではありません。割り込み CPU はプライマリ CPU であるか,またはポートの RAD に含まれていなければなりません。
Fast Path のコードでは,優先 CPU を割り当てるときにこれらのことをすべて考慮しようとしますが,SET DEVICE/PREFERRED_CPUS コマンドを使用して,この動作の対象を,使用できる CPU の一部に制限することができます。Galaxy 構成では,インスタンス間で CPU を移動することにより,選択を無効にすることができます。PREFERRED_CPUS のデフォルト値は NOPREFERRED_CPU であり,この場合,Fast Path コードはパフォーマンスを最大限向上します。
詳細情報 | ドキュメント |
---|---|
Fast Path | 『VMS I/O User's Reference Volume』 |
RAD | 『OpenVMS Alpha パーティショニングおよび Galaxy ガイド』 |
Fibre Channel,SCSI,CI 構成 | 『OpenVMS Cluster 構成ガイド』 |
OpenVMS バージョン 7.2 で拡張ファイル指定がインプリメントされました。OpenVMS バージョン 7.3-1 では,POSIX の要件にさらに準拠するように,新しいファイル・システム機能が提供されるようになりました。これらの機能は ODS-5 ボリューム用にサポートされるものであり,ODS-5 ボリュームはシステム・ディスクとして使用できるようになりました。この結果,柔軟性が向上し,Windows 95,Windows NT,UNIX アプリケーションで作成されたファイルを OpenVMS Alpha システムで格納,管理,アクセスすることができるようになりました。これらのプラツトフォームおよび POSIX 準拠環境から OpenVMS Alpha に移植する際に必要になるアプリケーションの変更は,これまでより少なくなります。
ファイル・サービスの拡張機能により,次の機能がサポートされます。
ODS-5 ディスクで POSIX に準拠したファイル・タイムスタンプをサポートするために,OpenVMS Alpha バージョン 7.3-1 には次の 3 つの新しいファイル属性が含まれるようになりました。
ファイルが実際にアクセスされない限り,ファイル・ヘッダの変更は ATTDATE として記録されます。REVDATE ACP/QIO 属性は,MODDATE タイムスタンプと ATTDATE タイムスタンプのうち,新しい方の値です。新しい ACP/QIO 属性は格納されている REVDATE を返します。
ファイルをクローズしたときに,"norecord" が設定されている場合は,ACCDATE と REVDATE は変更されません。設定されていなくて,データがファイルから読み込まれた場合は,ファイルをクローズしたときに,ファイルのアクセス時刻が更新されます。データがファイルに書き込まれた場合は,ファイルをクローズしたときに,ファイルの変更時刻が更新されます。
アクセス時刻はディスクに書き込まなければならないため,これらの新しいファイル属性を使用すると,パフォーマンスに影響します。システム管理者は次のコマンドを使用してアクセス時刻のサポートを有効または無効にすることができ,アクセス時刻を変更する頻度も設定できます。
$ SET VOLUME/VOLUME_CHARACTERISTICS=([[NO]HARDLINKS,][[NO]ACCESS_DATES[=delta-time]]) |
ファイルへのアクセスが頻繁に行われるときに,パフォーマンスの影響をできるだけ少なくするには,変更がわずかなときにアクセス時刻の更新を行わないように設定できます。新しいアクセス時刻を記録しなければならないかどうかを判断するには,デルタ時間を使用します。
SETVOLUME/VOLUME_CHARACTERISTICS コマンドを使用してアクセス時刻を設定する方法の例については,
第 4.10.2 項 を参照してください。
4.10.1.1 ACP/QIO アクセス時刻
ACP/QIO のアクセス時刻の変更は,ファイルの時刻が読み取られるのか,保持されるのかに応じて異なります。
4.10.1.2 Compaq C 実行時ライブラリの日付
正しい時刻を設定する方法については,『Compaq C Run-Time Library Reference Manual for OpenVMS Systems』のutime(),stat(),fstat()関数の説明を参照してください。
4.10.2 DCL に関連するアクセス時刻
ODS-5 ボリュームでアクセス時刻の自動更新を可能にするには,SET VOLUME/VOLUME_CHARACTERISTICS コマンドを使用します。次の例を参照してください。
$ SET VOLUME/VOLUME_CHARACTERISTICS=ACCESS_DATES=[delta-time] NODE$COE1 |
delta-time のデフォルト値は 1 秒です。この値がデフォルト値になっているのは,POSIXst_atimeで要求されている "seconds since EPOCH" 時刻インタフェースに準拠するためです。1 秒刻みのような細かな設定が必要ない場合は,もっと大きなデルタ時間を選択してオーバーヘッドを削減できます。
アクセス時刻を自動的に更新するための別の方法として,INITIALIZE/VOLUME_CHARACTERISTICS=ACCESS_DATES コマンドを使用する方法があります。次の例を参照してください。
$ INITIALIZE/VOLUME_CHARACTERISTICS=ACCESS_DATES NODE$COE1 $ MOUNT NODE$COE1 |
ボリュームでアクセス時刻のサポートを無効にするには,SET VOLUME/VOLUME_CHARACTERISTICS=NOACCESS_DATES コマンドを使用します。このコマンドは,コマンドを実行したノードにのみ影響します。他のノードはボリュームをあらためてマウントするまで,この変更の影響を受けません。
DCL の DIRECTORY コマンドまたは DUMP/HEADER コマンドでは,新しいタイムスタンプがサポートされます。次の修飾子を使用します。
修飾子 | 説明 |
---|---|
/DATE=ACCESSED | 最終アクセス時刻を指定する。 |
/DATE=ATTRIBUTES | 属性の最終変更時刻を指定する。 |
/DATE=DATA_MODIFIED | データの最終変更時刻を指定する。 |
たとえば,次のコマンドは,データがファイルから読み込まれた最終時刻を表示します。
$ DIRECTORY/DATE=ACCESSED |
リンク,つまりディレクトリ・エントリは,ディレクトリ内のオブジェクトであり,ファイル名とバージョン番号を特定のファイルに関連付けます。ボリューム上のリンクはすべて,同じボリュームのファイルを示さなければなりません。
OpenVMS Alpha バージョン 7.3-1 でハード・リンクがサポートされるようになったため,OpenVMS ではプライマリ・リンク,エイリアス,ハード・リンクの 3 種類のリンクが ODS-5 ボリュームでサポートされるようになりました。
OpenVMS Alpha では,リンクが 0 以上のファイルがサポートされます。ファイルへの最初のリンクを プライマリ・リンク と呼び,ファイル・ヘッダにディレクトリ ID とリンク名を格納することで区別します。プライマリ・リンク以外のリンクは,ファイルが格納されているボリュームでハード・リンクが有効なのか無効なのかに応じて,エイリアス または ハード・リンク になります。
OpenVMS Alpha システムでは,ODS-5 ボリュームでハード・リンクを有効にすることができます。ハード・リンクが有効に設定されていないボリュームでは,プライマリ・リンク以外のリンクはエイリアスです。ハード・リンクを有効に設定した場合は,そのボリューム上のファイルに対して,OpenVMS エイリアスを作成することはできません。各ボリュームでハード・リンクとエイリアスのどちらか一方だけをサポートでき,両方をサポートすることはできません。
ハード・リンクとエイリアスの基本的な違いは,削除操作の効果です。一般に,ファイル の削除と呼んでいる操作は,正確にはそのファイルへの リンク の削除です。ファイルへのリンクを削除したときに,そのファイルも削除することができます。ファイルを削除するかどうかは,ファイルが格納されているボリュームでハード・リンクが有効に設定されているかどうかと,そのファイルへのハード・リンクが作成されているかどうかに応じて異なります。
ハード・リンクが有効に設定されている場合は,そのファイルへのリンクが存在しなくなったときに,ファイルは実際に削除されます。ハード・リンクが有効に設定されておらず,ファイルに対してエイリアスを作成していない場合は,そのファイルへのリンクは,プライマリ・リンク 1 つだけが存在します。ファイルに対してエイリアスを作成した後,そのエイリアスを削除した場合は,そのファイルへのプライマリ・リンクが削除されていないため,ファイル自体は削除されません。エイリアスはこのリンクに対するディレクトリ内の別の名前に過ぎません。プライマリ・リンクを削除すると,ファイル自体は削除されますが,エイリアス・エントリは残ります。
削除したファイルへのエイリアス・リンクを使用してファイルにアクセスしようとすると,"no such file" エラーが発生します。プライマリ・リンクとハード・リンクを使用している場合,多くのリンクが存在します。ファイルへのプライマリ・リンクとすべてのハード・リンクの両方を削除したときに,ファイルが削除されます。
リンクに関して考慮しなければならない重要なポイントとして,ディスク・クォータがあります。OpenVMS では,各ファイルのサイズはファイル・オーナのディスク・クォータから差し引かれます。他のユーザがファイルへのハード・リンクを作成した場合,ディスク・クォータから差し引かれません。ファイルのオーナは,オーナがアクセスできるディレクトリ内のファイルに対するリンクはどれでも削除できますが,他のユーザのディレクトリ内にハード・リンクがあると,ファイルは保持されます。そのファイルのサイズはオーナのクォータから差し引かれます。
既存のボリュームでハード・リンクのサポートを有効に設定する場合は,ANALYZE/DISK/REPAIR コマンドを使用して,ハード・リンクが適切に操作されるようにする必要があります。
OpenVMS では,ハード・リンクやエイリアスは,ファイルだけでなく,ディレクトリに対してもサポートされています。ほとんどの UNIX システムでは,ハード・リンクは通常のファイルにだけ制限されています。次の表は,ハード・リンクを取り扱うコマンドを示しています。
目的 | コマンド |
---|---|
ハード・リンクを有効にする | INITIALIZE または SET VOLUME |
ハード・リンクを無効にする | SET VOLUME device/VOLUME_CHARACTERISTICS=NOHARDLINKS |
ハード・リンク(またはファイルのエイリアス)を作成する | SET FILE/ENTER |
マウントされている Files-11 ボリュームでハード・リンクを有効に設定するには,次のコマンドを使用します。
$ SET VOLUME/VOLUME_CHARACTERISTICS=HARDLINKS |
ハード・リンクを有効に設定して ODS-5 ディスクを初期化するには,次のコマンドを使用します。
$ INIT/VOLUME_CHARACTERISTICS=HARDLINKS |
ハード・リンクを有効に設定したボリュームでハード・リンクを無効に設定するには,次のコマンドを使用します。
$ SET VOLUME SYS$DISK/VOLUME_CHARACTERISTICS=NOHARDLINKS |
ハード・リンクを無効に設定すると,ファイルの動作が異常に見えることがあります。たとえば,前の例に示したようにハード・リンクを無効に設定し,FOO というファイルに対してエイリアスを作成する場合について考えてみましょう。まず,FOO.A のエイリアスとして FOO.B を作成します。次の例を参照してください。
$ CREATE FOO.A $ SET FILE FOO.A/ENTER=FOO.B |
ここで元のファイルを削除します。
$ DELETE FOO.A;1 |
しかし,DIRECTORY コマンドを入力してボリュームから FOO.B を検索すると,そのファイルへのプライマリ・リンクが存在しないため,"file not found" エラーが返されます。この問題を修正するか,またはファイルへのハード・リンクの数を確認するには,次のコマンドを入力します。
$ ANALYZE/DISK/REPAIR |
ANALYZE/DISK/REPAIR は,各ファイルを参照するディレクトリ・エントリの数を調べ,その値が不正確な場合はリンク・カウントを設定します。前にハード・リンクを有効に設定したディスクでファイルのエイリアスを作成する場合は,あらかじめ ANALYZE/DISK/REPAIR コマンドを使用してリンク・カウントを正しく設定してください。現在ハード・リンクが有効に設定されているのか,無効に設定されているのかがわからない場合は,SHOW DEVICE/FULL コマンドを使用します。
リンク・カウントをレポートするには,DIRECTORY/FULL および DUMP/HEADER を使用します。リンクの数を確認するには,次のコマンドを入力します。
$ DIRECTORY/LINK |
前へ | 次へ | 目次 | 索引 |