OpenVMS Alpha
オペレーティング・システム
パーティショニングおよび Galaxy ガイド


前へ 次へ 目次 索引



第 14 章
CPU の再割り当て

OpenVMS では,CPU リソースの管理方法が複数サポートされます。 コンソールはコンソール環境変数を使用して,各 CPU のデフォルトの所有者インスタンスを設定します。このため,CPU リソースは静的に割り当てることができ,正確な初期構成が可能です。コールド・ブート ( つまりパワー・サイクルまたは初期化 ) では,コンソールの不揮発性 RAM からこのデフォルト構成が復元されます。

構成がブートされた後,CMKRNL ( Change Mode to Kernel ) 特権を持つユーザに対して,OpenVMS ではもっと洗練された手段でリソースを割り当てることができます。ここではこれらの方法について説明します。

14.1 DCL による再割り当て

CMKRNL 特権を持っている場合,次の DCL コマンドを使用して,CPU の再割当て操作を行うことができます。


$ STOP/CPU/MIGRATE=instance-or-id   cpu-id 

ターゲット・インスタンス名 (SCSNAME) または数値 ID (0,1 など) と,再割り当てする CPU の数値 ID を指定しなければなりません。次の例では,このコマンドの形式をいくつか示しています。


$ STOP/CPU/MIGRATE=0  4      !Reassign CPU 4 to instance 0 
$ STOP/CPU/MIGRATE=1  3,4,5  !Reassign CPUs 3,4,5 to instance 1 
$ STOP/CPU 7/MIGRATE=BIGBNG  !ReassignCPU 7 to instance BIGBNG 
$ STOP/CPU/ALL/MIGRATE=0     !Reassign all secondary CPUs to instance 0 

これらのコマンドはコマンド・プロシージャに挿入できます。たとえば,必要とされる処理能力がわかっているアプリケーションのスタートアップ・プロシージャで,余分な CPU リソースをインスタンスに移動することができます。同様に,時間のかかる I/O 集約型操作 ( たとえばバックアップなど ) をこれから実行するインスタンスから,CPU の割り当てを解除して,CPU を他のインスタンスが使用できるように設定することもできます。ジョブが完了したら,割り当てを元に戻すことができ,また,シャットダウンされるインスタンスから CPU を再割り当てすることもできます。

この方法では,あるインスタンスからリソースを再割り当てすることだけが可能です。これは,Galaxy ソフトウェア・アーキテクチャで定義されているプッシュ・モデルです。このモデルでは,現在の使い方を認識しない他のインスタンスによって,リソースが "盗まれる" ことを防止します。DCL を使用して Galaxy システム全体を効果的に管理するには,関係する各インスタンスにログインするか,SYSMAN ユーティリティを使用して,所有者インスタンスでコマンドを実行する必要があります。

14.2 GCU のドラッグ・アンド・ドロップによる再割り当て

GCU では,Galaxy リソースを管理するために会話型のビジュアル・インタフェースが提供されます。GCU を使用すると,インスタンス間でドラッグ・アンド・ドロップするだけで,CPU を再割り当てすることができます。さらに,GCU を使用すると,さまざまな構成のチャート ( 構成モデルと呼びます ) を作成し,それをファイルに保存できます。構成モデルはいつでもロードして,設定することができ,システムは要求されたモデルに設定するために,必要に応じてリソースを再割り当てします。

14.3 インターモダル再割り当て

Galaxy ソフトウェア・アーキテクチャではリソース・プッシュ・モデルが定義されているため,リソースは,現在それを所有している Galaxy インスタンスから割り当てなければなりません。ユーティリティやユーザがマルチインスタンス Galaxy 構成でリソースの割り当てを効果的に管理するには,各インスタンスでコマンドを実行するための何らかの手段を設定しなければなりません。

このような手段の 1 つとして,各 Galaxy インスタンスでウィンドウまたはターミナル・セッションを開き,これらの各ウィンドウでリソース管理操作を実行する方法があります。

別の方法として,SYSMAN ユーティリティと基礎になる SMI サーバを使用して,所有者インスタンスでコマンド環境を設定することもできます。この方法を使用すると,特定のリソース管理操作を実行するためにかなり単純なコマンド・プロシージャを作成できます。しかし,この方法には制限があります。まず,関係する Galaxy インスタンスはクラスタ内に存在しなければなりません。また,コマンド・プロシージャは可変パラメータを SYSMAN 環境スクリプトに効果的に渡すことができず,SYSMAN スクリプトの内部にリモート・システム・パスワードを指定することもできません。したがって,SYSMAN を使用する汎用のコマンド・プロシージャ・インスタンスを作成するのは面倒です。

GCU は実際に,管理アクションを実行するために,可能であれば必ず SYSMAN を使用します。システムが SYSMAN をサポートするように構成されていない場合は,GCU は管理トランスポートとしてプロキシ・アカウント間で DECnet タスク間通信を使用しようとします。その方法も失敗した場合は ( つまり,システムで DECnet が実行されていなかったり,必要なプロキシ・アカウントが設定されていない場合など ),GCU は,GCU が現在実行されているインスタンス以外の Galaxy インスタンスを管理することができません。選択した場合は,各 Galaxy インスタンスに対して 1 つずつ,GCU の複数のコピーを実行できます。しかしほとんどの場合,OpenVMS Galaxy システムはクラスタ接続されているか,DECnet を使用していると考えてもかまいません。

GCU の管理アクションは,SYS$MANAGER:GCU$ACTIONS.COM コマンド・プロシージャをもとにして実行されます。このファイルを変更して,それぞれの環境に適するようにアクションをカスタマイズすることができます。たとえば,TCP/IP 環境では,管理トランスポートのために REXEC や同様のユーティリティを選択することができ,管理アクションが実行されるときに,何らかの形式の通知やログを含むこともできます。

GCU$ACTIONS.COM ファイルは,動作方法が通常のファイルと少し異なります。SYSMAN を使用する場合,このプロシージャはテンポラリ・ファイルに小さな SYSMAN コマンド・スクリプトを作成して,SYSMAN が取り扱うことができない可変パラメータを取り扱います。SYSMAN を使用できない場合は,このプロシージャは所有者インスタンスのプロキシ・アカウントに対して,DECnet タスク間接続を開始しようとします。接続が成功すると,この接続を使用して,所有者インスタンスにある GCU$ACTIONS.COM のコピーにコマンド・パラメータを渡します。最終的に,所有者インスタンスがローカルにコマンドを実行します。

14.4 Galaxy サービスを使用したソフトウェアによる再割り当て

おそらくリソース割り当てを管理するための最適な方法は,Galaxy API を使用して独自のリソース管理ルーチンを作成する方法でしょう。独自のルーチンを作成すれば,独自の基準およびアプリケーション環境をもとに,リソース管理に関する判断を下すことができます。しかし,第 14.3 節 で説明したものと同じプッシュ・モデルの制限事項があるため,ルーチンは Galaxy 対応でなければならず,おそらく相互の操作を調整するために共用メモリを使用する必要があります。

$CPU_TRANSITION[W] は,CPU の管理に使用できる OpenVMS システム・サービスです。$CPU_TRANSITION[W] は,現在のシステムの構成セットの中の CPU,または OpenVMS Galaxy 構成の中の未割り当ての CPU の現在の処理状態を変更します。

14.5 再割り当ての失敗

CPU の再割り当てはさまざまな理由で失敗したり,ブロックされることがあります。GCU は管理アクションを SYSMAN または DCL スクリプトに埋め込むので,再割り当てが失敗した理由を常に識別して報告できるわけではありません。たとえば GCU は,プライマリ CPU の再割り当てを禁止するために,再割り当てアクションを許可する前に,特定のチェックを実行します。また,オペレーティング・システムやコンソール・ファームウェアだけが検出できるその他の理由によって,再割り当てが失敗することもあります。たとえば,現在,プロセス・アフィニティや Fast Path デューティが割り当てられている CPU の再割り当ての失敗をオペレーティング・システムが検出した場合,DCL メッセージがコンソールとユーザ端末の両方に表示されます。

再割り当てのための Galaxy API は,ほとんどの失敗を呼び出し側に報告することができます。しかし,再割り当てサービスを使用した場合でも,ハードウェア・プラットフォームの依存関係をオペレーティング・システムから確認できないために,コンソールが再割り当てを拒否することがあります。


第 15 章
DCL コマンドとレキシカル関数

この章では,関連する DCL コマンドとレキシカル関数をリストして,使用例を示します。

詳細は,『OpenVMS DCL ディクショナリ』を参照してください。

15.1 DCL コマンド

次の表に DCL コマンドを示します。

表 15-1 CPU 関連の DCL コマンド
コマンド 修飾子 説明
SET CPU /[NO]AUTO_START 指定された CPU のインスタンス固有の自動起動フラグをセットまたはクリアする。
  /[NO]FAILOVER 指定された CPU のインスタンス固有のフェールオーバ関係を削除する。
  /MIGRATE CPU の所有権を現在のインスタンスから別のソフト・パーティションに移す。
  /POWER 1 つ以上の CPU スロットの電源を投入または切断する。有効なオプションは,ON と OFF である。
  /REFRESH ハードウェア構成ツリーを使用して,指定された CPU の OpenVMS コンテキストを調べ,更新する。
  /OVERRIDE_CHECKS 指定されたプロセッサをアクティブ・セットから削除できるかどうかを調べる一連のチェックを迂回するように SET/CPU コマンドに指示する。
  /START 指定された CPU が OpenVMS アクティブ・セットにまだ参加していない場合は,参加要求を開始する。
SHOW CPU /ACTIVE_SET システムのアクティブ・セットのメンバであるプロセッサだけを表示対象として選択する。
  /CONFIGURE_SET システムの構成セットのメンバであるプロセッサ,すなわち,現在のインスタンスによってアクティブに所有され,制御されているプロセッサだけを表示対象として選択する。
  /POTENTIAL_SET システムの潜在的なセットのメンバであるプロセッサ,すなわち,ハード・パーティション内の CPU のうち,現在のインスタンスのアクティブ・セットに参加するための条件を満たしている CPU だけを表示対象として選択する。このセットに含まれていても,その CPU が現在のインスタンスによって所有されている ( または,いずれ所有される ) ことを意味するわけではない。潜在的なセットは,物理的に存在する CPU のうち,使用可能になった場合に,インスタンス固有のハードウェアおよびソフトウェア互換性制約を現時点で満たしているものを記述するにすぎない。
  /STANDBY_SET システムのスタンバイ・セットのメンバであるプロセッサ,すなわち,ハード・パーティション内の CPU のうち,ソフト・パーティションによって所有されていず,現在のインスタンスによる所有が可能なものだけを表示対象として選択する。
  /SYSTEM 現在のインスタンスに関するプラットフォーム固有のハードウェア情報を表示する。
START/CPU /POWER[=ON] CPU をアクティブ・セットに入れる前に,CPU に電源を投入する。
STOP/CPU /MIGRATE CPU の所有権を現在のインスタンスから別のソフト・パーティションに移す。
  /POWER=OFF CPU をアクティブ・セットから削除した後,CPU の電源を切断する。

表 15-2 RAD 関連の DCL コマンド
コマンド 説明
INITIALIZE/RAD=n キューに割り当てられたバッチ・ジョブを実行する RAD 番号を指定する。
SET ENTRY/RAD=n 発行されたバッチ・ジョブを実行する RAD 番号を指定する。
SET PROCESS/RAD=HOME=n プロセスのホーム・リソース・アフィニティ・ドメイン (RAD) を変更する。
SET QUEUE/RAD=n キューに割り当てられたバッチ・ジョブを実行する RAD 番号を指定する。
SHOW PROCESS/RAD ホーム・リソース・アフィニティ・ドメイン (RAD) を表示する。
START QUEUE/RAD=n キューに割り当てられたバッチ・ジョブを実行する RAD 番号を指定する。
SUBMIT/RAD=n 発行されたバッチ・ジョブを実行する RAD 番号を指定する。

表 15-3 その他の DCL コマンド
コマンド 説明
CONFIGURE GALAXY OpenVMS Galazy システムの監視,表示,操作を行うために,Galaxy 構成ユーティリティ (GCU) を起動する。
INSTALL/LIST 標準のグローバル・セクションだけでなく,Galaxywide セクションも返す。
SHOW MEMORY/PHYSICAL システムのメモリ使用状況を表示する。

15.2 DCL レキシカル関数

このセクションでは,関連する DCL レキシカル関数について説明します。

次の表に,F$GETSYI および F$GETJPI DCL レキシカル関数の項目コードを示します。

表 15-4 Galaxy F$GETSYI 項目コード
項目コード タイプ 説明
GLX_MAX_MEMBERS 整数値 現在の Galaxy 構成に参加できる最大インスタンス数を返す。
GLX_FORMATION 文字列 このインスタンスが属する Galaxy 構成の作成日時を示すタイムスタンプ文字列を返す。
GLX_TERMINATION 文字列 このインスタンスが最後に属していた Galaxy 構成の終了日時を示すタイムスタンプ文字列を返す。
GLX_MBR_NAME 文字列 Galaxy メンバーシップの既知の名前を示す文字列を返す。
GLX_MBR_MEMBER 整数値 64 バイトの整数を返す。それぞれの 8 バイトは Galaxy メンバを表し,7 から 0 までリストされる。インスタンスがメンバである場合は値は 1 であり,メンバでない場合は 0 である。

表 15-5 パーティショニング F$GETSYI 項目コード
項目コード タイプ 説明
HP_ACTIVE_CPU_CNT 整数値 ファームウェア・コンソール・モードではないハード・パーティション内の CPU 数を返す。VMS では,これは CPU がハード・パーティション内のインスタンスの 1 つのアクティブ・セットに参加しているか参加プロセス中であることを意味する。
HP_ACTIVE_SP_CNT 整数値 ハード・パーティション内で実行中のアクティブなオペレーティング・システム・インスタンス数を返す。
HP_CONFIG_SP_CNT 整数値 現在のハード・パーティション内のソフト・パーティションの最大数を返す。この数は,オペレーティング・システム・インスタンスが特定のソフト・パーティション内で実行中であることを意味しない。
HP_CONFIG_SBB_CNT 整数値 現在のハード・パーティション内の既存のシステム・ビルディング・ブロック数を返す。

表 15-6 SMP F$GETSYI 項目コード
項目コード タイプ 説明
ACTIVE_CPU_MASK 整数値 CPU インデックス付きのビットベクトルを表す値を返す。特定のビット位置がセットされているとき,その CPU ID 値を持つプロセッサは,インスタンスのアクティブ・セットのメンバである。すなわち,VMS SMP スケジューリング活動に参加している。
AVAIL_CPU_MASK 整数値 CPU インデックス付きのビットベクトルを表す値を返す。特定のビット位置がセットされているとき,その CPU ID 値を持つプロセッサは,インスタンスの構成セットのメンバである。すなわち,パーティションによって所有され,発行元インスタンスによって制御されている。
POTENTIAL_CPU_MASK 整数値 CPU インデックス付きのビットベクトルを表す値を返す。特定のビット位置がセットされているとき,その CPU ID 値を持つプロセッサは,インスタンスの潜在的なセットのメンバである。潜在的なセット内の CPU は,このインスタンスによって所有された場合,このインスタンスの VMS アクティブ・セットに積極的に参加できることを意味する。このルールに従うには,CPU の特性がそのインスタンスについて特に定義されているハードウェアおよびソフトウェア互換性ルールに一致しなければならない。
POWERED_CPU_MASK 整数値 CPU インデックス付きのビットベクトルを表す値を返す。特定のビット位置がセットされているとき,その CPU ID 値を持つプロセッサは,インスタンスのパワード・セットのメンバである。すなわち,ハード・パーティション内に物理的に存在し,操作のために起動された CPU である。
PRESENT_CPU_MASK 整数値 CPU インデックス付きのビットベクトルを表す値を返す。特定のビット位置がセットされているとき,その CPU ID 値を持つプロセッサは,インスタンスのプレゼント・セットのメンバである。すなわち,ハード・パーティション内に物理的に存在する CPU である。
CPUCAP_MASK 文字列 コンマで区切られ,CPU ID のインデックスが付けられた 16 進値のリストを返す。それぞれの値は,ビットベクトルを表す。セットされているとき,対応するユーザ機能がその CPU で使用可能である。
PRIMARY_CPUID 整数値 この VMS インスタンスのプライマリ・プロセッサの CPU ID を返す。
MAX_CPUS 整数値 このインスタンスが認識できる最大 CPU 数を返す。
CPU_AUTOSTART 整数値 コンマで区切られ,CPU ID のインデックスが付けられた 0 と 1 のリストを返す。値 1 のエントリは,特定の CPU が外部から現在のインスタンスに移行した場合,またはすでに所有されているときに起動された場合,VMS アクティブ・セットに参加することを示す。
CPU_FAILOVER 整数値 コンマで区切られ,CPU ID のインデックスが付けられたパーティション ID 番号のリストを返す。このリストは,現在のインスタンスがクラッシュした場合のプロセッサのデスティネーションを定義している。
POTENTIALCPU_CNT 整数値 このインスタンスの潜在的なセットのメンバであるハード・パーティション内の CPU 数。潜在的なセット内の CPU は,このインスタンスによって所有された場合,このインスタンスの VMS アクティブ・セットに積極的に参加することを意味する。このルールに従うには,CPU の特性がそのインスタンスについて特に定義されたハードウェアおよびソフトウェア互換性ルールに一致しなければならない。
PRESENTCPU_CNT 整数値 ハードウェア・スロットに物理的に常駐するハード・パーティション内の CPU 数。
POWEREDCPU_CNT 整数値 物理的に起動されているハード・パーティション内の CPU 数。

表 15-7 RAD F$GETJPI 項目コード
項目コード タイプ 説明
HOME_RAD 整数値 ホーム・リソース・アフィニティ・ドメイン (RAD)。

表 15-8 RAD F$GETSYI 項目コード
項目コード タイプ 説明
RAD_CPUS 整数値 コンマによって区切られた RAD, CPU のペアのリストを返す。
RAD_MEMSIZE 整数値 コンマによって区切られた RAD, PAGES のペアのリストを返す。
RAD_MAX_RADS 整数値 このプラットフォーム上で可能な最大 RAD 数を返す。値は常に 8 である ( 物理的に存在するクァド・ビルディング・ブロック (QBB) 数に関係なく )。
RAD_SHMEMSIZE 整数値 コンマで区切られた RAD, PAGES のペアのリストを返す。


前へ 次へ 目次 索引