日本-日本語
日本HPホーム 製品 & サービス サポート & ドライバー ソリューション ご購入方法
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:はじめに
第 2 章:仮想アドレス空間の概要
第 3 章:システム・サービスの 64 ビット・アドレッシングのサポート
第 4 章:メモリ管理 VLM 機能
第 5 章:64 ビット・アドレッシングを対象とする RMS インタフェースの強化
第 6 章:ファイル・システムの 64 ビット・アドレッシングのサポート
第 7 章:OpenVMS Alpha デバイスの 64 ビット・アドレッシングのサポート
第 8 章:OpenVMS Alpha 64 ビット API ガイドライン
第 9 章:64 ビット・アドレッシングをサポートする OpenVMS Alpha ツールおよびユーティリティ
第 10 章:言語およびポインタの 64 ビット・アドレッシング・サポート
第 11 章:DEC C RTL の 64 ビット・アドレッシング・サポート
付録 A :64 ビット・アドレッシングのための C マクロ
付録 B :64 ビット・アドレッシングのための MACRO-32 マクロ
付録 C :64 ビット・プログラム例
付録 D :VLM プログラム例
索引
PDF
OpenVMS ホーム
Open VMS Alpha オペレーティング・システム | HPE 日本

Open VMS Alpha オペレーティング・システム
64 ビット・アドレッシングおよび VLM 機能説明書


目次 索引



バッファ・オブジェクトを作成して使用する場合,次のことに注意する必要があります。

  • バッファ・オブジェクトはプロセス空間 (P0,P1,P2 のいずれか) ページにだけ関連付けることができます。

  • PFN でマップされたページをバッファ・オブジェクトに関連付けることはできません。

  • システム空間が関連付けられていない特殊なバッファ・オブジェクトは, Fast I/O データ・バッファを記述するためだけに使用できます。IOSA は常にシステム空間を含む完全なバッファ・オブジェクトに関連付けなければなりません。

  • データ・バッファがシステム空間を含まないバッファ・オブジェクトに関連付けられている場合は,一部の Fast I/O 操作は完全に最適化されません。VIOC キャッシュを介したディスク読み込み I/O やバッファード I/O の完了時に,データのコピーは,完全なバッファ・オブジェクトに対してシステム・コンテキストで IPL 8 で実行される可能性があります。しかし,システム空間が割り当てられていないバッファ・オブジェクトの場合は,プロセス・コンテキストで実行しなければなりません。アプリケーションで独自のキャッシュを実装している場合は,IO$M_NOVCACHE ファンクション・コード修飾子を設定することで,ディスク I/O に対して VIOC を使用しないようにしてください。Fast I/O はこの条件を認識し,バッファ・オブジェクトの種類とは無関係に,最大レベルの最適化を使用します。



4.4 共用ページ・テーブル

共用ページ・テーブルを使用すると, 2 つ以上のプロセスが同じ物理ページにマップすることができます。このとき,各プロセスがページ・テーブル作成,ページ・ファイル・アカウンティング,およびワーキング・セット制限値アカウンティングのオーバヘッドを受けることはありません。共用ページ・テーブルは,内部的には特別な種類のグローバル・セクションとして扱われており,メモリ常駐グローバル・セクションの一部であるページをマップするときに使用されます。ページ・テーブルの共用を実現する特別グローバル・セクションを, 共用ページ・テーブル・セクションと呼びます。共用ページ・テーブル・セクション自体は,メモリ常駐です。

共用ページ・テーブルは,いくつかのシステム・サービスによって作成され,複数のプロセスに送信されます。プロセスやアプリケーションが共用ページ・テーブルを使用するのに,特別な特権やライト識別子は必要ありません。メモリ常駐グローバル・セクションを作成するときだけ, VMS$MEM_RESIDENT_USER ライト識別子が必要です。この識別子を持たないプロセスであっても, (特定のマッピング基準を満たしている限り) 共用ページ・テーブルを使用できます。

メモリ常駐グローバル・セクションで予約されるメモリと同様に,共用ページ・テーブルのメモリも,システムの流動ページ集合から除外しなければなりません。メモリ常駐グローバル・セクションが登録される時,予約メモリ・レジストリによってこの除外が行われます。

4.4.1 プライベート・ページ・テーブルのメモリ必要量

表 4-1 は,各種サイズのグローバル・セクションにマップするプライベート・ページ・テーブルおよび共用ページ・テーブルの物理メモリ必要量を,プロセス数に応じて示しています。この表から,共用ページ・テーブルを使用することで,システム全体で節約される物理メモリ量がわかります。たとえば,100 プロセスが 1 G バイトのグローバル・セクションにマップするとき,共用ページ・テーブルでグローバル・セクションにマップすることによって, 99 M バイトの物理メモリが節約されます。

物理メモリが節約されると,物理メモリ・システム・リソースの競合が抑制されるため,システム全体の性能が向上します。各プロセスについては,ページ・テーブル・ページが使用するワーキング・セットが少なくてすむため,プロセスがより多くのプライベート・コードおよびデータを物理メモリに保持できるという利点があります。

表 4-1 ページ・テーブル・サイズ必要量
マッピング
プロセスの
個数
8MB 1GB 8GB 1TB   
  PPT SHTP PPT SHTP PPT SHTP PPT SHTP
   1   8KB 8KB   1MB 1MB   8MB 8MB   1GB 1GB
  10  80KB 8KB  10MB 1MB  80MB 8MB  10GB 1GB
 100 800KB 8KB 100MB 1MB 800MB 8MB 100GB 1GB
1000   8MB 8KB   1GB 1MB   8GB 8MB   1TB 1GB

PPT---プライベート・ページ・テーブル
SHPT---共用ページ・テーブル



プロセスが共用ページ・テーブルを使用するのに,特別な特権やライト識別子は必要ありません。メモリ常駐グローバル・セクションを作成するときだけ,ライト識別子 VMS$MEM_RESIDENT_USER が必要です。メモリ常駐グローバル・セクションを作成すると,予約メモリ・レジストリによって共用ページ・テーブルが必要ないと指定されていない限り,そのグローバル・セクションをマップする共用ページ・テーブルが作成されます。一見すると,このように広くデータを共用することは,本質的なセキュリティ上のリスクを伴う可能性があります。しかし,この節で説明する理由によって,セキュリティ上のリスクはありません。

共用ページ・テーブルでメモリ常駐グローバル・セクションにマップするアプリケーションまたはプロセスは,次の手順を実行しなければなりません。

  1. システム・サービス SYS$CREATE_REGION_64 を呼び出すことによって,共用ページ・テーブル・リージョンを作成します。
    リージョンがページ・テーブル・ページ境界で開始および終了するように,リージョンの開始仮想アドレスは切り下げ,長さは切り上げます。

  2. SYS$CRMPSC_GDZRO_64 システム・サービスまたは SYS$MGBLSC_64 システム・サービスを使用して,メモリ常駐グローバル・セクションにマップします。これらのサービスを使用すると,呼び出し者は,次の条件を満たす場合に,グローバル・セクションに関連付けられた共用ページ・テーブルを使用することができます。

    • 呼び出し者がマッピング要求で指定する読み込み/書き込みアクセス・モードが,マップするグローバル・セクションに関連するアクセス・モードに完全に一致している。

    • 呼び出し者がマッピング要求で正しい仮想アドレッシング・アライメントを指定している。

共用ページ・テーブル・リージョンは,メモリ常駐グローバル・セクションのマップのみ行えます。アプリケーションは,複数のメモリ常駐グローバル・セクションを,共用ページ・テーブル・リージョンにマップできます。共用ページ・テーブル・リージョンにマップされるグローバル・セクションの先頭仮想アドレスは,常にページ・テーブル・ページ境界に丸められます。これによって,2 つの異なるグローバル・セクションが同じページ・テーブル・ページを共用することが避けられます。手順 2 に示した以外のシステム・サービスで,共用ページ・テーブル・リージョンに仮想アドレス空間を作成しようとしても失敗します。

注意

プロセスは非共用ページ・テーブル・リージョンを指定して,共用ページ・テーブルを伴うメモリ常駐グローバル・セクションにマップすることができます。この場合,グローバル・セクションにマップするために,プロセス・プライベート・ページ・テーブルが使用されます。



GBLPAGES システム・パラメータがグローバル・ページ・テーブルのサイズを定義します。パラメータ・ファイルに格納されている値は起動時に使用され,グローバル・ページ・テーブルの初期サイズを設定します。

OpenVMS Alpha V7.1 以降,システム・パラメータの GBLPAGES および GBLPAGFIL が変更され,ダイナミック・パラメータになりました。 CMKRNL 特権を持つユーザであれば,実行中のシステム上でこれらの値を直ちに変更できます。実行時に GBLPAGES パラメータの値を増加すると,グローバル・ページ・テーブルを必要に応じて新しい最大値まで拡張できます。なお,グローバル・ページ・テーブルを拡張または増加させるためには,次の条件をすべて満たす必要があります。

  • グローバル・ページ・テーブルの連続空き領域が,要求されたグローバル・セクションを作成するのに十分でない。

  • GBLPAGES パラメータの現在の設定値が,グローバル・ページ・テーブルの拡張できる値になっている。

  • グローバル・ページ・テーブルの上限の位置に,グローバル・ページ・テーブルを拡張できるだけの十分な未使用の仮想メモリがある。

  • グローバル・ページ・テーブルを拡張できるだけの流動メモリ (メモリにロックされていないページ) がシステムに十分にある。

グローバル・ページ・テーブルは,最低でも 6 G バイトの 64 ビット S2 空間にマップされるため,これらの条件はほとんどすべてのシステムで満たされます。極端にメモリを消費するシステムや,S2 仮想アドレス空間を大量に使用するアプリケーションを実行しているシステムに限って,要求に応じてグローバル・ページ・テーブルを拡張できないことがあります。

グローバル・ページは,他のチューニング・パラメータにも影響するシステム・リソースであるため, GBLPAGES を増加するには,AUTOGEN を使用してシステムを再起動することをおすすめします。操作上の理由で再起動できない場合は,実行中のシステム上で次のコマンドを使用することによって,パラメータを変更できます。


$ RUN SYS$SYSTEM:SYSGEN 
SYSGEN> USE ACTIVE 
SYSGEN> SET GBLPAGES  new_value 
SYSGEN> WRITE ACTIVE 

WRITE ACTIVE コマンドを実行するには,CMKRNL 特権が必要です。

同じコマンドで,グローバル・ページ・サイズの有効サイズを小さくすることもできます。次の条件が満たされる場合,グローバル・ページ・テーブルは実際に縮小され,フル・ページが流動ページとしてシステムに解放されます。

  • グローバル・セクションが削除され,グローバル・ページ・テーブル・エントリが解放される。

  • GBLPAGES の値が示すグローバル・ページ・テーブルのサイズが,現在のサイズよりも小さい。

  • グローバル・ページ・テーブルの高位アドレスの終端に未使用のエントリが存在し,構造を縮小できる。

GBLPAGES のアクティブ値を,現在使用されているグローバル・ページ・カウントより低い値に設定しても,現在使用されているグローバル・ページに影響はありません。新たなグローバル・ページの作成が抑制されるだけです。

GBLPAGFIL パラメータのアクティブ値は,正の最大整数値まで,いつでも増加できます。 GBLPAGES と同様に,GBLPAGFIL の値を,システムのページファイルに対してページングされているグローバル・ページ数より低い値に設定しても,そのページに影響はありません。新たなグローバル・ページファイル・セクションの作成が抑制されるだけです。

なお,GBLPAGFIL を増加すると,追加のページファイル空間が必要となり,追加のページファイルをインストールしなければならないことがあるので注意してください。

4.6 予約メモリ・レジストリ

予約メモリ・レジストリは, SYSMAN ユーティリティの中のそのインタフェースを介して, OpenVMS Alpha システムに,メモリ常駐セクションおよび他の特権アプリケーションで使用するためのメモリを大量に設定できます。また,予約メモリ・レジストリを使用すると,割り当て済みの予約メモリを考慮しながら, AUTOGEN ユーティリティを介して OpenVMS システムを適切にチューニングできます。

予約メモリ・レジストリによって,次の操作を実行できます。

  • システムの非流動メモリをメモリ常駐グローバル・セクションの fault オプション用に予約する。

  • システムの非流動メモリに加えて割り当て済みの連続的にアラインされた物理ページを,メモリ常駐グローバル・セクションの allocate オプション用に予約する。

予約メモリ・レジストリは,システムの起動時に割り当て済みのページをゼロ化することを指定できる機能を備えています。このオプションは,メモリ常駐クローバル・デマンド・ゼロ・セクションを作成するのに必要な時間を短縮します。

予約メモリ・レジストリは,予約メモリの内,メモリ常駐グローバル・セクションにマップするのに必要なページ・テーブルのサイズを指定するオプションも備えています。このオプションが指定され,予約メモリがメモリ常駐グローバル・セクションに使用される場合,共用ページ・テーブルと共にメモリ常駐グローバル・セクションが作成されます。

4.6.1 予約メモリ・レジストリの使用

OpenVMS は,メモリ常駐グローバル・デマンド・ゼロ・セクションでの使用を目的として,非流動メモリを予約するメカニズムを備えています。予約されたメモリは,システムの非流動メモリ・サイズから単純に差し引かれたものであるか,または連続的にアラインされた物理ページとしてあらかじめ割り当てられています。

予約メモリ・レジストリを使用すると,システムの流動ページ・カウントの計算にメモリ常駐セクション・ページを含めずに, AUTOGEN でシステムを適切にチューニングできます。 AUTOGEN は,システムの流動ページ・カウントに基づいて,システム・ページファイル,プロセス数,およびワーキング・セット最大サイズを算出します。他の目的のために永久的に予約されている物理メモリを考慮していない流動ページ・カウントに基づいて AUTOGEN がパラメータを調整すると,性能に関する重大な問題がシステムで発生します。

また,予約メモリ・レジストリで allocate オプションを指定することにより,連続的にアラインされたメモリがメモリ常駐セクションで使用されます。

注意

ここでは,予約メモリ・レジストリをグローバル・セクションに対して使用する方法について説明していますが,この機能は他の特権アプリケーションに対して使用することもできます。



予約されている非流動メモリを使用するものは,メモリの特徴を,システムの初期化 (起動) の際に読み込まれるデータ・ファイルに入力します。データ・ファイルを操作するメカニズムは, SYS$LOADABLE_IMAGES:VMS$SYSTEM_IMAGES.DATA と同様です (インストール固有のエグゼクティブ・ロード・イメージを指定します)。

このファイルの名前は次のとおりです。


SYS$SYSTEM:VMS$RESERVED_MEMORY.DATA 

このファイルは, (エグゼクティブ・ロード・イメージ・データ・ファイルと同様に) SYSMAN ユーティリティで管理します。

予約メモリ・レジストリ・ファイル VMS$RESERVED_MEMORY.DATA は, AUTOGEN フィードバック・メカニズムによって読み込まれ,システムの流動ページ・カウントの設定に反映されます。 AUTOGEN は,システムの流動ページ・カウントに基づいて,システム・ページファイル,プロセス数,およびワーキング・セット最大サイズを算出します。

データ・ファイルにエントリを追加するには, SYSMAN ユーティリティを使用します。 SYSMAN コマンドは次の形式で指定します。


SYSMAN RESERVED_MEMORY ADD gs_name - 
                      /GROUP = n - 
                      /SIZE = {size of reserved memory, unit: MB} - 
                      /[NO]ALLOCATE - 
                      /[NO]ZERO - 
                      /[NO]PAGE_TABLES 

  • gs_name フィールドには,この予約メモリに関連付けられているメモリ常駐グローバル・セクションの名前を指定する。この名前は必ず指定しなければならない。

  • /GROUP 修飾子が指定されていない場合,予約メモリはシステム・グローバル・セクション (SYSGBL) で使用される。

  • /GROUP 修飾子が指定されている場合,予約メモリはグループ・グローバル・セクションで使用される。値 n には,グループ・グローバル・セクションを作成するプロセスの UIC グループ番号 (8 進数) を指定する。作成者の UIC グループ番号と等しいプロセスだけがグローバル・セクションにアクセスできる。たとえば,UIC が [6,100] のプロセスがグループ・グローバル・セクションの作成者の場合, /GROUP 修飾子には 6 というグループ番号を指定する。

  • /ALLOCATE 修飾子が指定されていない場合,または /NOALLOCATE 修飾子が指定されている場合,システムを次に再起動するときに予約メモリが割り当てられない。予約メモリはシステムの流動ページ・カウントから除外されるだけで,メモリ常駐グローバル・セクションの作成で fault オプションが使用される。

  • /ALLOCATE 修飾子が指定されている場合,システムを次に起動するときに連続的にアラインされたページが割り当てられる。割り当てられたメモリはシステムの流動ページ・カウントから差し引かれ,メモリ常駐グローバル・セクションの作成で allocate オプションが使用される。ページの物理アライメントは,予約メモリのサイズのページをマップできる最大粒度ヒント係数に基づいている。粒度ヒント係数は512 ページ (または 4 M バイト),あるいは 64 ページ (または 512 K バイト) のいずれかである。このため,8 K バイトのシステム・ページ・サイズを仮定すると,予約メモリは次のように物理的にアラインされる。


    1. size >= 4 M バイト: 4 M バイト境界上に物理的にアラインされる。 
     
    2. size < 4 M バイト: 512 K バイト境界上に物理的にアラインされる。 
    

  • /ZERO 修飾子が指定されていない場合,または /NOZERO 修飾子が指定されている場合,システムの初期化のときに割り当て済みのページはゼロ化されない。グローバル・セクションが作成されるときにページがゼロ化される。

  • /ZERO 修飾子は,/ALLOCATE 修飾子が指定されているときだけ指定できる。 /ZERO 修飾子が指定されている場合,システムの初期化のときに割り当て済みのページがゼロ化される。メモリ常駐グローバル・セクションにとってゼロ化されたページが必要であるが,必ずしもシステムの初期化のときにページをゼロ化する必要はない。

  • /PAGE_TABLES 修飾子が指定されていない場合,または /NOPAGE_TABLES 修飾子が指定されている場合,共用ページ・テーブル用に追加メモリが予約されない。メモリ常駐グローバル・セクションが作成されるとき,グローバル・セクションに対して共用ページ・テーブルが作成されない。

  • /PAGE_TABLES 修飾子が指定されている場合,共用ページ・テーブル用に追加メモリが予約される。メモリ常駐グローバル・セクションが作成されるとき,グローバル・セクションに対して共用ページ・テーブルが作成される。 /ALLOCATE 修飾子が指定されていない場合,または /NOALLOCATE 修飾子が指定されている場合,追加予約メモリがシステムの流動ページ・カウントから除外だけされる。 /ALLOCATE 修飾子が指定されている場合,システムを次に再起動するときに,連続的にアラインされた追加のページが共用ページ・テーブル用に割り当てられ,追加予約メモリがシステムの流動ページ・カウントから除外される。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡