本文に進む 日本−日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫ お問い合わせ
日本HPホーム
HP OpenVMS Alpha: パーティショニングおよび Galaxy ガイド

第3章 OpenVMS アプリケーションに対する NUMA の影響

≫ 

OpenVMSドキュメント・ライブラリ

目次
まえがき
第1章:パーティションによる負荷の管理
第2章:OpenVMS Galaxyの概念
第3章:OpenVMSアプリケーションに対するNUMAの影響
第4章:GS140/GS60/GS60Eでの構築
第5章:AlphaServer 8400での構築
第6章:AlphaServer 8200での構築
第7章:AlphaServer 4100での構築
第8章:ES40での構築
第9章:GS80/160/320での構築
第10章:ES47/ES80/GS1280での構築
第11章:AlphaシステムでのシングルインスタンスGalaxyの使用
第12章:Galaxyに関するヒントと手法
第13章:Galaxy Configurationユーティリティ
第14章:Graphical Configuration Manager
第15章:DCL CLIを使ったCPUの最割り当て
第16章:GalaxyとNUMAのコマンドとレキシカル関数
第17章:共用メモリを使った通信
第18章:共用メモリ・プログラミング・インタフェース
第19章:Galaxyデバイス・ドライバ
付録A:Galaxy CPU Load Balancerプログラム
付録B:メモリサイズ設定の共通値
付録C:ライセンスのインストール
用語集
索引
PDF
OpenVMS ホーム
ここから本文が始まります

NUMA (nonuniform memory access) とは,特定の物理メモリ位置へのアクセス時間が, すべての CPU で同じにならないというシステムの属性のことです。 このアーキテクチャの下で高い性能を実現するためには,(100 パーセントとはいかなくても) 一貫して適切なロケーションを確保する必要があります。

オペレーティング・システムは,ハードウェアをリソース・アフィニティ・ドメイン (RAD) のセットとして扱います。 RAD は,共通のアクセス特性を持つ物理リソース (CPU,メモリ,および I/O) のソフトウェア上の分類です。 AlphaServer GS80/160/320 システムでは,RAD はクォド・ビルディング・ブロック (QBB) に対応し,AlphaServer ES47/ES80/GS1280 システムでは,2 プロセッサの CPU ボードに対応します。 CPU は,自分の RAD の中のメモリについては,他の RAD の中のメモリよりも高速にアクセスすることができます。

OpenVMS が 1 つの RAD のリソース上で実行されている場合には,NUMA による影響はなく,ここでの説明は適用されません。 可能性と実現性がある場合,できるだけ 1 つの RAD の中で実行することで NUMA の複雑な影響をなくし,高い性能を引き出すことができます。

NUMA 環境における全体的なシステム性能に関して最も多い質問は, “すべてに対して一様” と “少数に対して最適化” のどちらを選ぶべきかということです。 言い換えると,すべてのプロセスがほぼ同じ性能を持つようにしたいか, 特定のプロセスに焦点を当てて,それらを可能な限り効率化したいかということです。 OpenVMS の 1 つのインスタンスが複数の RAD 上で実行されるときには (マシン全体,ハード・パーティション,または Galaxy インスタンスを問わない), 必ずこの質問に対する答えを用意しなければなりません。 その答えに応じて,構成と管理に関するいくつかの決定を行う必要があるからです。

OpenVMS の省略時の NUMA 動作モードは「すべてに対して一様」です。 リソースは,長期的に見ると,システム上のすべてのプロセスが, 平均してほぼ同等の性能ポテンシャルを持つように割り当てられます。

「すべてに対して一様」のモードを希望しない場合には, より特殊な「少数に対して最適化」または「専用」環境を実現するためのインタフェースを理解する必要があります。 特定のリソースにプロセスとデータを割り当てて, それらの性能ポテンシャルを最大限に高めることが可能です。

NUMA 環境に関する理解を深めるために,この章では以下のことを説明します。

  • 基本オペレーティング・システムの NUMA 動作

  • アプリケーション・リソースに関する注意事項

  • API

3.1 OpenVMS の NUMA への対応

OpenVMS のメモリ管理とプロセス・スケジューリングは, AlphaServer GS Series システム・ハードウェア上でより効率的に動作するように強化されています。

以下に示す強化分野は,それぞれシステムに新しい能力を付加しています。 個別に見れば, これらは特定のアプリケーション・ニーズの性能ポテンシャルを高めています。 全体として見れば,これらは多様なアプリケーション・ミックスに必要な環境を提供していると言うことができます。新たに対処された分野は次のとおりです。

  • プロセス・プライベート・ページの割り当て

  • 予約済みメモリ・ページの割り当て

  • プロセス・スケジューリング

  • 読み込み専用システム・スペース・ページの複製

  • 非ページング・プールの割り当て

  • ページ割り当てを観察するためのツール

CPU は,同じ RAD 内のメモリの方が, 別の RAD 内のメモリよりも 3 倍の速度で参照することができます。 このため,実行されるコードと参照されるメモリを, 可能な限り同じ RAD に入れておくことが重要となります。 優れた性能を実現するためには,一貫して適切な位置を確保することが鍵となります。 性能を評価するにあたって, プログラマは次のような質問を考慮に入れる必要があります。

  • 実行しようとしているコードはどこにあるのか ?

  • アクセスしようとしているデータはどこにあるのか ?

  • 使用しようとしている I/O 装置はどこにあるのか ?

OpenVMS スケジューラとメモリ管理サブシステムは,以下の方法で, 最適な位置を決定します。

  • 個々のプロセスに優先 RAD,すなわちホーム RAD を割り当てます。

  • 通常,プロセスはホーム RAD 内の CPU 上にスケジューリングします。

  • オペレーティング・システムの読み込み専用コードと一部のデータを個々の RAD に複製します。

  • グローバル・ページを RAD 間に分散させます。

  • 予約済みメモリを RAD 間にストライピングします。

3.1.1 ホーム RAD

OpenVMS オペレーティング・システムは,プロセスの作成中に, 個々のプロセスにホーム RAD を割り当てます。 これには 2 つの大きな意味があります。 第 1 に,ごく少数の例外を除き, プロセスのホーム RAD に含まれる CPU の 1 つがプロセスを実行することになります。 第 2 に,プロセスが必要とするすべてのプロセス・プライベート・ページが, ホーム RAD に含まれるメモリから割り当てられるようになります。 この組み合わせにより,ローカル・メモリ参照が行われる可能性が最大化されます。

ホーム RAD を割り当てるときの OpenVMS のデフォルトの動作は, プロセスを RAD 間に分散させるというものです。

3.1.2 システム・コードの複製

システムのスタートアップ時には, オペレーティング・システム・コードが各 RAD のメモリに複製されます。 これにより,システム内のプロセスは, システム機能が必要になったときにはローカル・メモリにアクセスするようになります。 この複製は,エグゼクティブ・コードとインストール済み常駐イメージ・コードの粒度ヒント領域の両方について行われます。

3.1.3 グローバル・ページの分散

OpenVMS のデフォルトの動作は,RAD 間でグローバル・ページ (グローバル・セクションのページ) を分散させるというものです。 このアプローチは,システム・スタートアップ時に予約済みメモリとして宣言されたグローバル・ページの割り当ての際にも使用されます。

3.2 アプリケーション・リソースに関する注意事項

アプリケーション環境はそれぞれ異なる性質を持っています。 アプリケーションの構造によって, 望ましい目標を達成するための最適なオプションが決まります。 これらの決定要因の例を以下に示します。

  • プロセスの数

  • 必要なメモリの量

  • プロセス間での共用の量

  • 特定の基本オペレーティング・システム機能の使用

  • ロックの使用とその位置

絶対的な規則はあまりありませんが,以下の項では, 一般に最適な結果をもたらす基本的な概念と例をいくつか示します。 メモリ・アクセスの (RAD 上での) ローカル化は常に目標となりますが, これは必ずしも達成可能ではなく, トレードオフを判断しなければならない可能性が高いと考えられます。

3.2.1 プロセスと共用データ

1 つのグローバル・セクションにアクセスするプロセスが数百あるいは数千もある場合には, オペレーティング・システムのデフォルトの動作を使用するのが適しています。 グローバル・セクションのページは,すべての RAD のメモリに均等に分散され, プロセスのホーム RAD の割り当ては CPU 間で均等に分散されます。 これは,グローバル・セクションへのアクセスがランダムだった場合に, すべてのプロセスが似たような性能ポテンシャルを持つことになる分散効果, つまり「一様」効果です。どのプロセスも最適化はされませんが, 他のプロセスと比べて極端に不利なプロセスも出現しません。

一方,少数のプロセスがグローバル・セクションにアクセスする場合には, 4 つの CPU で処理負荷を扱うことができ,1 つの RAD がグローバル・セクション全体を扱える十分なメモリを持っているという前提で,それらのプロセスを 1 つの RAD に配置することができます。 これにより,大部分のメモリ・アクセスがローカル化され, 配置されたプロセスの性能が強化されます。 この戦略は,1 つのプロセスとデータのセットを 1 つの RAD に配置し, 別のプロセスとデータのセットを別の RAD に配置するというように, 同じシステム上で繰り返し採用することができます。

3.2.2 メモリ

AlphaServer GS シリーズのシステムには,大量のメモリを搭載することができます。 可能な限り,大きなメモリ容量を有効に活用してください。 たとえば,コードやデータを複数の RAD に複製するようにします。 ある程度の分析が必要となり,スペースの無駄に見えるかもしれず, 調整も必要となります。 しかし,これによって最終的にローカルなメモリ参照が大幅に増えるのであれば, その価値はあります。

RAM ディスク・プロダクトの使用を検討してください。 NUMA が使用されている場合でも,メモリ内参照は実際の装置 I/O よりも高性能です。

3.2.3 共用と同期処理

一般に,データを共用するためには同期処理が必要となります。 1 つのメモリ位置を調整メカニズムとして使用している場合 (ラッチ,ロック,セマフォなどと呼ばれます) には, それが多くのリモート・アクセスの原因となっていて, 競合レベルが高くなると性能を低下させる可能性があります。 この種のロックをデータ全体に複数のレベルで分散させることで, リモート・アクセスの量を減らせることがあります。

3.2.4 OpenVMS 機能の使用

一部の基本オペレーティング・システム機能を頻繁に使用すると,これらの機能をサポートするデータが RAD0 のメモリ内に存在しているために,多数のリモート・アクセスが発生します。

3.3 NUMA リソース・アフィニティ・ドメインのバッチ・ジョブ・サポート

このセクションでは, NUMA 環境でのリソース・アフィニティ・ドメイン (RAD) のサポートにおける OpenVMS バッチ処理サブシステムのアップデートについて説明します。

システム管理者は, NUMA 環境のリソース・アフィニティ・ドメイン (RAD) の特定のサポートにバッチ・キューを割り当てることができ, ユーザはバッチ・ジョブを実行する RAD を指定することができます。

これらの新機能の使用は,バッチ実行キューとバッチ・ジョブに制限されます。

DCL コマンドの説明については,『OpenVMS DCL ディクショナリ』を参照してください。

3.3.1 バッチ・キュー・レベルの RAD サポート

DCL コマンドの INITIALIZE/QUEUE,SET/QUEUE,および START/QUEUE で新しい修飾子 /RAD を使用することができます。 システム管理者は,キューに割り当てられたバッチ・ジョブを実行する RAD 番号を指定します。

RAD 値は, 0 から SYI$_RAD_MAX_RADS までの正の整数であることが検証されます。 SHOW/QUEUE/FULL コマンドの出力に RAD が表示されるようになり, F$GETQUI レキシカル関数は新しい RAD 項目を受け入れるようになりました。

3.3.1.1 例

ここでは,コマンドのシーケンスとバッチ・キューへの効果を説明します。 バッチ・キューの変更を示すために,それぞれの例に SHOW コマンドが含まれています。

  • 次の INITIALIZE/QUEUE コマンドは, ノード QUEBIT 上で実行するバッチ・キュー BATCHQ1 を作成または再初期化します。 このキューに割り当てられたジョブはすべて,RAD 0 で実行します。

    $ INITIALIZE/QUEUE/ON=QUEBIT::/BATCH/RAD=0   BATCHQ1
    
    $ SHOW QUEUE/FULL BATCHQ1
    Batch queue BATCHQ1, stopped, QUEBIT::
     /BASE_PRIORITY=4 /JOB_LIMIT=1 /OWNER=[SYSTEM] /PROTECTION=(S:M,O:D,G:R,W:S)
     /RAD=0
    
  • 次の START/QUEUE コマンドは,割り当てられたすべてのジョブを QUEBIT の RAD 1 で 実行するように BATCHQ1 を変更し, キューが処理のためにジョブを受け入れるようにします。

    $ START/QUEUE/RAD=1 BATCHQ1
    
    $ SHOW QUEUE/FULL BATCHQ1
    Batch queue BATCHQ1, idle, on QUEBIT::
      /BASE_PRIORITY=4 /JOB_LIMIT=3 /OWNER=[SYSTEM] /PROTECTION=(S:M,O:D,G:R,W:S)
      /RAD=1
    
  • 次の SET/QUEUE コマンドは,割り当てられたすべてのジョブを QUEBIT の RAD 0 で実行するようにバッチ・キューを変更します。 キューに割り当てられた新しいジョブは,RAD 0 で実行します。 キューですでに実行中のジョブは,以前の RAD 値で完了まで実行を続けます。

    $ SET/QUEUE/RAD=0 BATCHQ1
    
    $ SHOW QUEUE/FULL BATCHQ1
    Batch queue BATCHQ1, idle, on QUEBIT::
      /BASE_PRIORITY=4 /JOB_LIMIT=3 /OWNER=[SYSTEM] /PROTECTION=(S:M,O:D,G:R,W:S)
      /RAD=0
    
  • バッチ・キューの RAD 値を消去するには,SET/QUEUE/NORAD コマンドを使用します。

    $ SET/QUEUE/NORAD BATCHQ1
    
    $ SHOW QUEUE/FULL BATCHQ1
    Batch queue BATCHQ1, idle, on QUEBIT::
      /BASE_PRIORITY=4 /JOB_LIMIT=3 /OWNER=[SYSTEM] /PROTECTION=(S:M,O:D,G:R,W:S)
    
  • RAD の値を返すには,F$GETQUI レキシカル関数を使用します。 -1 の値は,キューに RAD 値が割り当てられていないことを示します。

    $ WRITE SYS$OUTPUT F$GETQUI("DISPLAY_QUEUE","RAD","BATCHQ1")
     -1
    

3.3.2 ジョブ・レベルの RAD サポート

新しい修飾子 /RAD は,DCL コマンドの SUBMIT と SET/ENTRY に追加されます。

ユーザは登録したバッチ・ジョブを実行する RAD 番号を修飾子の値で指定します。 SHOW ENTRY および SHOW QUEUE/FULL コマンドが強化されて, バッチ・ジョブの RAD 設定をリストするようになりました。

3.3.2.1 例

RAD 設定のないバッチ・キューにジョブが登録されたときには, そのジョブは SUBMIT コマンドで指定された RAD を使用して実行します。

次のコマンドは,TEST.COM をキュー ANYRADQ に登録します。 ANYRADQ キューには RAD 設定はありません。

$ SUBMIT/HOLD/QUEUE=ANYRADQ /RAD=1  TEST.COM
Job TEST (queue ANYRADQ, entry 23) holding

$ SHOW ENTRY/FULL 23
  Entry  Jobname         Username     Blocks  Status
  -----  -------         --------     ------  ------
     23  TEST            SYSTEM               Holding
         On idle batch queue ANYRADQ
         Submitted 24-JUL-2001 14:19:37.44 /KEEP /NOPRINT /PRIORITY=100 /RAD=0
         File: _$1$DKB200:[SWEENEY.CLIUTL]TEST.COM;1

RAD 設定のあるバッチ・キューにジョブが登録されたときには, そのジョブは,SUBMIT コマンドで指定された RAD に関係なく, キューに対して指定された RAD を使用して実行します。 この動作は,他のバッチ・システム機能と一貫性があります。

キュー BATCHQ1 は,/RAD=0 として定義されています。 次の SUBMIT コマンドの例では,ユーザは登録時に RAD 1 を指定しましたが, RAD 0 で実行するジョブが作成されます。

$ SUBMIT/HOLD/QUEUE=BATCHQ1 /RAD=1  TEST.COM
Job TEST (queue BATCHQ1, entry 24) holding

$ SHOW ENTRY 24/FULL
  Entry  Jobname         Username     Blocks  Status
  -----  -------         --------     ------  ------
     24  TEST            SYSTEM               Holding
         On idle batch queue BATCHQ1
         Submitted 24-JUL-2001 14:23:10.37 /KEEP /NOPRINT /PRIORITY=100 /RAD=0
         File: _$1$DKB200:[SWEENEY.CLIUTL]TEST.COM;2

3.3.3 実行時の動作

バッチ・ジョブの RAD を指定すると, ジョブ・コントローラは新しい HOME_RAD 引数がジョブの RAD 値に設定されたプロセスを作成します。

ジョブに対して指定された RAD がターゲット・システムで無効であった場合, ジョブ・コントローラは BADRAD メッセージをオペレータ・コンソールに出力します。 正しくない RAD 値がバッチ・キューの RAD 設定に一致した場合, バッチ・キューは停止します。ジョブはキューに残ります。

3.3.3.1 エラー処理

次の例は,実行時処理のエラーを示しています。

SYSTEM@QUEBIT> SUBMIT/NONOTIFY/NOLOG/QUEUE=BATCHQ1 TEST.COM
Job TEST (queue BATCHQ1, entry 30) started on BATCHQ1

OPCOM MESSAGES

SYSTEM@QUEBIT> START/QUEUE BATCHQ1
%%%%%%%%%%%  OPCOM  25-JUL-2001 16:15:48.52  %%%%%%%%%%%
Message from user SYSTEM on QUEBIT
%JBC-E-FAILCREPRC, job controller could not create a process

%%%%%%%%%%%  OPCOM  25-JUL-2001 16:15:48.53  %%%%%%%%%%%
Message from user SYSTEM on QUEBIT
-SYSTEM-E-BADRAD, bad RAD specified

%%%%%%%%%%%  OPCOM  25-JUL-2001 16:15:48.54  %%%%%%%%%%%
Message from user SYSTEM on QUEBIT
%QMAN-E-CREPRCSTOP, failed to create a batch process, queue BATCHQ1 will be stopped

$ SYSTEM@QUEBIT> WRITE SYS$OUTPUT  -
_$ F$message(%x'F$GETQUI("DISPLAY_ENTRY","CONDITION_VECTOR","30")')
%SYSTEM-E-BADRAD, bad RAD specified

3.3.3.2 バッチ・キューの RAD の変更

バッチ・キューの RAD 値を変更しても,バッチ・キューに登録されているジョブは, キューに対して指定された新しい RAD 値で動的に更新されるわけではありません。

実行中のジョブは,元の RAD 値を使用して処理を続行します。 保留中または時間切れ実行状態のジョブは,元の RAD 値のままです。 ただし,そのようなジョブが実行可能になると,ジョブは新しい RAD 値で更新され, キューに対して指定された RAD で実行します。

3.4 RAD アプリケーション・プログラミング・インタフェース

アプリケーション・プログラマとシステム管理者は, システムの省略時の値が運用環境のニーズを満たせない場合には, RAD に固有の多数のインタフェースを使ってプロセスとメモリのロケーションを制御することができます。 以下の項は簡単な説明です。 詳細については『OpenVMS System Services Reference Manual』を参照してください。

プロセスの作成

プロセスに特定のホーム RAD を持たせたい場合は, SYS$CREPRC システム・サービスの新しい HOME_RAD 引数を使用します。 これにより,アプリケーションからロケーションを制御することができます。

プロセスの移動

プロセスがすでに作成されており,これを再配置したい場合には,システム・サービス SYS$PROCESS_AFFINITY または SYS$PROCESS_CAPABILITY で CAP$M_PURGE_WS_IF_NEW_RAD フラグを使用します。 アフィニティまたはケーパビリティの選択によってプロセスのホーム RAD が変わる場合には,プロセスのワーキング・セットは削除されます。

プロセスに関する情報の取得

SYS$GETJPI システム・サービスは,プロセスのホーム RAD を返します。

グローバル・セクションの作成

SYS$CRMPSC_GDZRO_64 および SYS$CREATE_GDZRO システム・サービスは RAD 引数マスクを受け付けます。 これは,OpenVMS がグローバル・セクションのページをどの RAD に割り当てるかを指定します。

予約済みメモリの割り当て

予約済みメモリの割り当てのための SYSMAN インタフェースは RAD 修飾子を持っているので,システム管理者は特定の RAD のメモリを予約することができます。

システムに関する情報の取得

SYS$GETSYI システム・サービスは, RAD 情報を獲得するために使われる以下の項目コードを定義しています。

  • RAD_MAX_RADS は,プラットフォーム上で使用可能な RAD の数の最大値を示します。

  • RAD_CPUS は RAD/CPU のペアのロングワード配列を示します。

  • RAD_MEMSIZE は RAD/page_count のペアのロングワード配列を示します。

  • RAD_SHMEMSIZE は RAD/page_count のペアのロングワード配列を示します。

RAD_SUPPORT システム・パラメータ

RAD_SUPPORT システム・パラメータは,個々の RAD 関連の動作をカスタマイズするために定義されている多くのビットとフィールドを持っています。 これらのビットについての詳細は,3.7.1 項 「SHOW RAD」の例を参照してください。

3.5 RAD システム・サービスの要約の表

次の表は, OpenVMS Version 7.3 以降の RAD システム・サービスに関する情報を示しています。

詳細については,『OpenVMS System Services Reference Manual』を参照してください。

システム・サービス

RAD 情報

$CREATE_GDZRO

引数: rad_mask
フラグ: SEC$M_RAD_HINT
エラー状態: SS$_BADRAD

$CREPRC

引数: home_rad
状態フラグ・ビット: stsflg
シンボリック名: PRC$M_HOME_RAD
エラー状態: SS$_BADRAD

$CRMPSC_GDZRO_64

引数: rad_mask
フラグ: SEC$M_RAD_MASK
エラー状態: SS$_BADRAD

$GETJPI

項目コード: JPI$_HOME_RAD

$GETSYI

項目コード: RAD_MAX_RADSRAD_CPUSRAD_MEMSIZERAD_SHMEMSIZEGALAXY_SHMEMSIZE

$SET_PROCESS_PROPERTIESW

項目コード: PPROP$C_HOME_RAD

3.6 RAD DCL コマンドの要約の表

次の表は,OpenVMS RAD DCL コマンドを要約したものです。 詳細については,『OpenVMS DCL ディクショナリ』を参照してください。

DCL コマンド/レキシカル

RAD 情報

SET PROCESS

修飾子: /RAD=HOME=n

SHOW PROCESS

修飾子: /RAD

F$GETJPI

項目コード: HOME_RAD

F$GETSYI

項目コード: RAD_MAX_RADSRAD_CPUSRAD_MEMSIZERAD_SHMEMSIZE

3.7 System Dump Analyzer (SDA) の RAD サポート

以下に示す System Dump Analyzer (SDA) コマンドには RAD サポートが追加されています。

  • SHOW RAD

  • SHOW RMD (予約済みメモリ記述子)

  • SHOW PFN

3.7.1 SHOW RAD

SDA コマンドの SHOW RAD は,以下の情報を表示します。

  • RAD_SUPPORT システム・パラメータ・フィールドの設定と説明

  • CPU とメモリの RAD への割り当て

このコマンドは, RAD をサポートするハードウェア・プラットフォームでのみ有効です (AlphaServer GS160 システムなど)。 デフォルトの設定では,SHOW RAD コマンドは RAD_SUPPORT システム・パラメータ・フィールドの設定を表示します。

形式:

SHOW RAD [number|/ALL]

パラメータ:

number

指定された RAD の CPU とメモリに関する情報を表示します。

修飾子:

/ALL

RAD_SUPPORT パラメータ・フィールドの設定とすべての CPU/ メモリ割り当てを表示します。

次の例は,RAD_SUPPORT システム・パラメータ・フィールドの設定を示しています。

    SDA> SHOW RAD

    Resource Affinity Domains
    -------------------------

    RAD information header address: FFFFFFFF.82C2F940
    Maximum RAD count:                       00000008
    RAD containing SYS$BASE_IMAGE:           00000000
    RAD support flags:                       0000000F

    3         2 2         1 1
    1         4 3         6 5         8 7         0
    +-----------+-----------+-----------+-----------+
    |..|..| skip|ss|gg|ww|pp|..|..|..|..|..|fs|cr|ae|
    +-----------+-----------+-----------+-----------+
    |..|..|    0| 0| 0| 0| 0|..|..|..|..|..|00|11|11|
    +-----------+-----------+-----------+-----------+

    Bit 0 = 1:          RAD support is enabled

    Bit 1 = 1:          Soft RAD affinity support is enabled
                        (Default scheduler skip count of 16 attempts)

    Bit 2 = 1:          System-space replication support is enabled

    Bit 3 = 1:          Copy on soft fault is enabled

    Bit 4 = 0:          Default RAD-based page allocation in use

                        Allocation Type               RAD choice
                        ---------------               ----------
                        Process-private pagefault     Home
                        Process creation or inswap    Random
                        Global pagefault              Random
                        System-space page allocation  Current

    Bit 5 = 0:          RAD debug feature is disabled)


次の例は,RAD 2 の CPU とメモリに関する情報を示しています。

    SDA> SHOW RAD 2


    Resource Affinity Domain 0002
    -----------------------------

    CPU sets:

      Active      08 09 10 11
      Configure   08 09 10 11
      Potential   08 09 10 11


    PFN ranges:

      Start PFN   End PFN     PFN count   Flags
      ---------   --------    ---------   -----
      01000000    0101FFFF    00020000    000A  OpenVMS Base
      01020000    0103FFFF    00020000    0010  Galaxy_Shared

    SYSPTBR:      01003C00)

3.7.2 SHOW RMD (予約済みメモリ記述子)

SDA コマンドの SHOW RMD は,予約済みメモリの割り当て元の RAD を示すように 拡張されています。予約済みメモリの割り当て時に RAD が指定されていなかった場合, SDA は ANY と表示します。

3.7.3 SHOW PFN

SDA コマンドの SHOW PFN には /RAD 修飾子が追加されています。 これは既存の /COLOR 修飾子に似ています。

3.7.4 RAD のハード・アフィニティのサポート

SET PROCESS コマンドが強化されて,/AFFINITY 修飾子が追加されました。 /AFFINITY 修飾子によって, カーネル・スレッドのアフィニティ・マスクのビットをセットまたはクリアできます。 アフィニティ・マスクのビットは,個別に操作することも, グループ単位や全部を一括して操作することもできます。

/NOAFFINITY 修飾子は,/PERMANENT 修飾子の設定に基づいて, 現在またはパーマネント・アフィニティ・マスクでセットされているすべてのアフィニティ・ビットをクリアします。 /AFFINITY 修飾子を指定しても直接の効果はなく, 次の 2 次パラメータによって指定された操作のターゲットを示すだけです。

  • /SET=(n[,...])

    CPU ID n によって指定された現在アクティブな CPU のアフィニティをセットします。n の範囲は,0 から 31 までです。

  • /CLEAR=(n[,...])

    位置の値 n によって指定された現在アクティブな CPU のアフィニティをクリアします。n の範囲は,0 から 31 までです。

  • /PERMANENT

    現在のアフィニティ・マスクだけでなく, パーマネント・アフィニティ・マスクに対しても操作を実行して, カーネル・スレッドの終了まで,変更を有効にします (省略時の動作では,実行中のイメージのアフィニティ・マスクだけが影響を受けます)。

次の例は, CPU 123,および 5 のアフィニティ・ビットをアクティブにセットする方法を示しています。

$ SET PROCESS /AFFINITY /PERMANENT /SET = (1,2,3,5)

RAD をサポートしているシステムでは,1 つのプロセスに対するアフィニティを設定する CPU のセットは同じ RAD 内に存在していなければなりません。 たとえば,RAD 0 に CPU 0,1,2,3 があり,RAD 1 に CPU 4,5,6,7 がある AlphaServer GS160 では,SET = 2,3,4,5 は良い設定ではありません。 全体の半分が,ホーム RAD の外で実行されることになるからです。

プライバシー 本サイト利用時の合意事項
© 2009 Hewlett-Packard Development Company, L.P.