日本−日本語 |
|
|
HP OpenVMS: システム管理者マニュアル (下巻)第13章 特殊処理環境の管理 |
|
この章は,主に OpenVMS VAX ユーザ向けです。 OpenVMS Alpha と I64 の拡張機能は,他の OpenVMS ドキュメントで説明します。 OpenVMS オペレーティング・システムは以下の特殊環境をサポートします。
この章では,これらの特殊処理環境の設定と管理について説明します。 この章の内容この章では,次の作業について説明します。
さらに,次の項目について説明します。
マルチプロセシング・システムは,メモリの共通プールにアドレスして同時に命令を実行することが可能な 2 つ以上の CPU から構成されます。 OpenVMS オペレーティング・システムは密結合対称型マルチプロセシング (SMP) システムをサポートします。 密結合 SMP システムでは,すべてのプロセッサがオペレーティング・システムの単一のコピーを実行し,すべてのオペレーティング・システム・コードとシステム資源に対する等しいアクセス権を持っています。 OpenVMS SMP は,プロセス優先権に基づいてプロセスが実行される CPU を動的に選択します。 マルチプロセシング・システムは,独立したシステム,ネットワーク上のノード,または OpenVMS Cluster を構成するメンバとして機能することができます。 マルチプロセシング・システムおよびユニプロセシング・システムは,同じオペレーティング・システムを実行します。 ただし,マルチプロセシングは特定の VAX,Alpha,および I64 プロセッサ上でしか行うことができません。 1 つのマルチプロセシング環境を構成するすべてのプロセッサのハードウェアとファームウェアは同じレベルであることが必要です。 これは,特定のプロセッサから,システム上の別のプロセッサで実行されていたプロセスの実行スレッドを再開できるようにするためです。 マルチプロセシング・システムでは,コンソール・デバイスに論理的または物理的に付加された 1 つのプロセッサがシステム内の他のプロセッサの起動を担当します。 そのようなプロセッサを1次プロセッサと呼びます。 1次プロセッサ自身は,マルチプロセシング・システムをブートするコンソール・コマンドのターゲットとなります。 1次プロセッサは,システム全体のオペレーティング・システム環境の定義やメモリの準備のための初期化を単独で行います。 さらに,1次プロセッサはシステム内の計時を担当し,システム時間の管理,およびタイマ・キューに登録された各要素がタイムアウトになっていないかどうかの監視を行います。 一方,マルチプロセシング・システム内のこれらの役割を持たないプロセッサを2次プロセッサと呼びます。 システムのハードウェア電源投入時の診断テストにパスしたプロセッサの集合をアベイラブル・セットと呼んでいます。 このとき,各プロセッサがシステムに対してアクティブに関与しているかどうかは問題にされません。 1次プロセッサと2次プロセッサは,マルチプロセシング・システムのアクティブ・セットから構成されます。 アクティブ・セットとは,VAX システム,Alpha システム,または I64 システムを構成するプロセッサのうち,電源投入時の診断テストにパスし,システム動作にアクティブに関与しているプロセッサの集合をいいます。 オペレーティング・システムはこれらのセットに含まれる各プロセッサを CPU ID で識別します。 CPU ID の値は,DCL やユーティリティの特定のコマンドの構文や表示の中に頻繁に現れます。 対称型マルチプロセシング・システム(SMP)の管理には,マルチプロセシング環境の作成と監視があります。 マルチプロセシング・システムの構成要素と特性は,適切なシステム・パラメータを設定することによって,システムのブート時に制御できます。 マルチプロセシング・システムを管理するシステム・パラメータには以下のものがあります。
以上のようなシステム・パラメータについては,『OpenVMS システム管理 ユーティリティ・リファレンス・マニュアル』を参照してください。 ブート時に,アベイラブル・セットの中のプロセッサをアクティブ・セットに追加することができます。 また,DCL の START/CPU コマンドを使用すれば,ブート後にプロセッサの追加を行うことができます。 アクティブ・セットからプロセッサを削除するときには,DCL の STOP/CPU コマンドを使用します。 SMP Extension License Alpha システムおよび I64 システムでは,SMP システムを使用している場合には,SMP Extension Licenseを登録する必要があります。 このライセンスは Operating System Base License および全 Interactive User ライセンスをアップグレードして,システムのマルチプロセシング・レベルに合わせます。 SMP Extension License は,既存の Base ライセンスおよび User ライセンスがユニプロセシング・レベルで提供するすべての権利を付与するので,マルチプロセシング・システムにアップグレードする際に,これらのライセンスを再インストールする必要はありません。 システムを新しいマルチプロセシング・レベルにアップグレードする場合には,既存のライセンスに SMP Extension License を追加してください。 オペレーティング・システムのいくつかの機能により,マルチプロセッサ・システムの特性,能力,および状態に関する特別な情報を入手することができます。 これらを可能にするものには,DCL の SHOW CPU コマンド,MONITOR ユーティリティなどがあります。 マルチプロセッサ構成に関する情報の入手SHOW CPU コマンドにより,マルチプロセシング・システムの構成および状態を示す 3 つのレベルの情報が表示されます。
SMP に関連する DCL のコマンドについては,『OpenVMS DCL ディクショナリ』を参照してください。 MONITOR ユーティリティについては,『OpenVMS システム管理 ユーティリティ・リファレンス・マニュアル』の MONITOR のパートを参照してください。 1 つの値を持つ単一のデータ項目をスカラと呼びます。 また,データ型が同じで互いに関連するスカラ値のグループをベクタと呼びます。 伝統的なスカラ・コンピュータはスカラ値に対してのみ動作するため,ベクタを扱う場合はその要素を順次処理する必要があります。 一方,ベクタ・コンピュータはベクタをそのままのデータ構造として認識し,1 つのベクタ命令によってベクタ全体を操作することができます。 複数の算術演算または論理演算が同時に行われるため,ベクタ・コンピュータで1 つのベクタを処理すると,伝統的なコンピュータでスカラ命令だけを使用して同じベクタを処理する場合よりも 4 ~ 5 倍高速になります。 さらに,ベクタ・プロセッサはデータのストリームを高速に処理するための特殊なハードウェア技術によって高速な処理を実現しています。 これらの技術として,データのパイプライン処理やチェイニングのほか,メモリ,算術機能ユニット,論理機能ユニットなどのハードウェアをさまざまな形式で並列化したことなどが挙げられます。 ユニットをパイプライン化することによって,同じ処理フローの前後の演算を並行して行うことが可能になっています。 VAX ベクタ・アーキテクチャには,それぞれが 64 個の要素を含む 16 個の 64 ビット・ベクタ・レジスタ (V0 ~ V15),ベクタ・カウント・レジスタ (VCR) やベクタ長レジスタ (VLR),ベクタ・マスク・レジスタ (VMR) などのベクタ制御レジスタ,ベクタ機能ユニット,ベクタ命令のセットが含まれています。 VAX ベクタ命令は,ベクタ・レジスタとメモリとの間のデータ転送,整数および浮動小数点数の算術演算,およびプロセッサの制御を行います。 VAX ベクタ・アーキテクチャ,ベクタ・レジスタ,およびベクタ命令についての詳細は,『VAX MACRO and Instruction Set Reference Manual』 を参照してください。 VAX ベクタ・アーキテクチャに準拠した VAX システムをベクタ対応システムと呼びます。 VAX ベクタ処理システムの構成には,スカラ CPU とベクタ CPU とを統合したプロセッサ (ベクタ機能付きプロセッサ) が 1 組以上含まれています。 このようなシステム構成には,各スカラ・プロセッサに対して 1 つのベクタ・コプロセッサを持つ対称型構成,および付加的なスカラ専用プロセッサを組み込んだ非対称型構成があります。 VAX ベクタ処理システムのモデルにより,ベクタ機能付きプロセッサは,スカラ CPU コンポーネントとベクタ CPU コンポーネントを物理的に統合した単一のモジュールから構成される場合と,それぞれのコンポーネントを物理的に分離した 2 つのモジュールから構成される場合があります。 どちらの場合も,スカラ CPU および ベクタ CPU は論理的に統合され,同じメモリを共用し,高速の専用内部パスを通じてデータを送信します。 このように CPU が密接に結合しているため,ベクタ CPU を使用した場合は入出力動作が軽減されます。 VAX スカラ処理システムと同様,VAX ベクタ処理システムは VAXcluster のメンバ,ネットワーク上のノード,またはスタンドアロン・システムとして稼働させることができます。 VAX ベクタ命令エミュレーション機能 (VVIEF) は,オペレーティング・システムに標準で備えられている機能であり,ベクタ・プロセッサが利用できない VAX システム上でベクタ化されたアプリケーションの作成やデバッグを可能にします。 VVIEF は,非特権 VAX ベクタ命令とベクタ・システム・サービスを含む VAX ベクタ処理環境をエミュレートします。 VVIEF の使用は,ユーザ・モードのコードに制限されています。 VVIEF は厳密にプログラム開発ツールであり,ベクタ・ハードウェア上での動作をソフトウェア上で実現するものではありません。 したがって,VVIEF のもとで実行するようにアプリケーションをベクタ化しても性能は向上しません。 むしろ,VVIEF のもとで実行されるベクタ化アプリケーションの動作はスカラ版アプリケーションよりも低速です。 オペレーティング・システムは,VVIEF ブートストラップ・コードをエグゼクティブ・ローダブル・イメージとして提供します。 ここで注意が必要なのは,OpenVMS ベクタ・サポート・コードが存在すると,VVIEF は非稼働状態のままであるという点です。 ベクタ機能付きシステムでベクタ・サポート・コードをロードしないようにして VVIEF を稼働させることは可能ですが,それによる利点はほとんどありません。 ベクタ・サポート・コードのロードについては,13.4.1 項 「ベクタ処理サポート・コードのロード (VAX のみ)」 で説明します。 VVIEF のロードとアンロードについては,13.4.6 項 「VAX ベクタ命令エミュレーション機能 (VVIEF) のロード (VAX のみ)」 で説明します。 この節では,ベクタ処理システムの管理について取り上げます。 VAX ベクタ処理システムでは,ブート時にベクタ処理サポート・コードが自動的にロードされるように設定されています。 この省略時の動作は,静的なシステム・パラメータ VECTOR_PROC を設定することで変更することができます。 具体的な設定方法は,表 13-1 「システム・パラメータ VECTOR_PROC の設定」 に示すとおりです。 表 13-1 システム・パラメータ VECTOR_PROC の設定
マルチプロセシング構成へのベクタ機能付きプロセッサの追加または削除は,システム・パラメータ SMP_CPUS を設定することによってブート時に行うことができます。 また,DCL の START/CPU コマンドおよび STOP/CPU コマンドによって実行時に行うこともできます。 オペレーティング・システムはベクタ機能付きプロセッサのスカラ CPU コンポーネントとベクタ CPU コンポーネントとを単一のプロセッサとして扱い,これらの起動と停止を同時に行います。 ブート時,システム・パラメータ SMP_CPUS の設定に従って,マルチプロセシング・システムの中の2次プロセッサのうちどのプロセッサを構成に追加するかが決定されます。 これらの2次プロセッサの中にはベクタ機能付きプロセッサも含まれます。 オペレーティング・システムは,1次プロセッサを常に構成に追加します。 システム・パラメータ SMP_CPUS の省略時の値 –1 では,利用可能なすべてのプロセッサがブートされ,スカラ・プロセッサもベクタ機能付きプロセッサも同様にシステム構成に追加されます。 この SMP_CPUS パラメータについての詳細は,『OpenVMS システム管理 ユーティリティ・リファレンス・マニュアル』を参照してください。 ブート時,ベクタ機能付きプロセッサの起動の前に,ベクタ処理サポート・コード (13.4.1 項 「ベクタ処理サポート・コードのロード (VAX のみ)」 を参照) をロードしておく必要があります。 サポート・コードがロードされていなければ,プロセスはベクタ機能付きプロセッサのスカラ CPU コンポーネントしか使用できなくなります。 稼働中のマルチプロセシング・システムに2次プロセッサを追加する場合は,DCL の START/CPU コマンドを使用します。 また,システムから2次プロセッサを削除する場合は,STOP/CPU コマンドを使用します。 この場合でも,ベクタ処理サポート・コードがブート時にロードされていなければ,起動したベクタ機能付きプロセッサのベクタ CPU コンポーネントを使用することはできません。 STOP/CPU コマンドを使用する場合,そのコマンドによって削除するベクタ機能付きプロセッサが現在動作中のベクタ使用プロセスにベクタ機能を提供する唯一のものである場合,コマンドは異常終了し,メッセージが生成されます。 プロセッサを修理するためにプロセッサを構成から削除するような特別なケースでは,STOP/CPU/OVERRIDE コマンドを発行すれば,ベクタ機能を使用するプロセスが残っていてもプロセッサを強制的に停止させることができます。 STOP/CPU/OVERRIDE コマンドがベクタ機能付きプロセッサに対して発行された場合,またはベクタ機能付きプロセッサが異常終了した場合,オペレーティング・システムは残されたすべてのベクタ使用プロセスをベクタ機能付きプロセッサが構成に追加されるまで「CPU 機能待ち」状態 (RSN$_CPUCAP) にします。 その後,他のプロセス (潜在的ベクタ使用プロセス) からベクタ命令が発行されると,要求された CPU が稼働していないことを示すメッセージ (CPUNOTACT) が返されます。 START/CPU コマンドと STOP/CPU コマンドについての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。 オペレーティング・システムのスケジューリング・アルゴリズムにより,ベクタ処理資源とスカラ処理資源とはベクタ使用プロセス,潜在的ベクタ使用プロセス,スカラ使用プロセスに自動的に分配されます。 しかし,VAX ベクタ処理構成は,次の 2 つの重要な点が異なります。
システム内に存在するベクタ使用プロセスの数がそれらにサービスを提供するスカラ機能付きプロセッサ (スカラ・プロセッサとベクタ・プロセッサのペア) の数よりも多い場合は,プロセスの優先順位に従ってベクタ使用プロセスがベクタ機能付きプロセッサを共用します。 ベクタ機能付きプロセッサを使用する複数のプロセスの優先順位が等しい場合,それらのプロセスはラウンド・ロビン形式でスケジューリングされます。 ベクタ機能付きプロセッサに新しいベクタ使用プロセスをスケジューリングする場合,システムは現在メモリ内に存在するベクタ使用プロセスのベクタ・コンテキストを保存し,メモリから新しいベクタ使用プロセスを復元する必要があります。 このような「低速」ベクタ・コンテキスト・スイッチが過剰に発生する場合は,実際の演算よりもベクタ・コンテキスト・スイッチに多くの処理時間が費やされるようになります。 ベクタ処理の必要性が大きなシステムは,それらの必要性を満たすように構成する必要があります。 しかし,既存の構成のままでチューニングを行うことでその性能を改善できるいくつかの方法があります。 いくつかのベクタ使用プロセスが同時に稼働状態になるシステムでは,プロセスがメモリを共用するためにページング動作が増加することがあります。 プロセス・ページングの回数を減らすためには,AUTHORIZE ユーティリティを使って,ベクタ化アプリケーションを実行しているプロセスのワーキング・セットの制限とクォータを調整します (詳細は,『OpenVMS システム管理 ユーティリティ・リファレンス・マニュアル』の AUTHORIZE のパートを参照してください)。 また,プロセス最大ワーキング・セット・サイズ (システム・パラメータ WSMAX) の値を大きくします。 さらに必要であれば,ベクタ化アプリケーションでワーキング・セット・システム・サービス ($LKWSET) のロック・ページを使って,自身の性能を向上させます。 ベクタを使用する各プロセスは 8 KB のシステム非ページング動的メモリを割り当てられ,その中にベクタ・コンテキストの情報が格納されます。 システム内で同時に稼働状態になっているベクタ使用プロセスの数に応じて,システム・パラメータ NPAGEDYN の値を調整します。 DCL の SHOW MEMORY/POOL/FULL コマンドを使用すると,非ページング・プールの現在のサイズがバイト数で示されます。 VAX ベクタ処理システムの最適な性能を得るため,バッチ・キューの設定時にシステムのベクタ資源を飽和させないように注意する必要があります。 キューに登録された稼働状態のベクタ化バッチ・ジョブの数がシステム内のベクタ機能付きプロセッサの数より多いと,ベクタ・コンテキスト・スイッチに処理時間の多くの部分が消費されるようになります。 できれば,ベクタ化されたバッチ・ジョブを VAX ベクタ処理システムにディスパッチするためのキュー (たとえば VECTOR_BATCH) を別に用意し,そのジョブの制限数をシステム内のベクタ機能付きプロセッサの数と同じにします。 そして,ベクタ化バッチ・ジョブをこの汎用ベクタ処理バッチ・キューに登録するようにユーザに指示します。 ベクタ使用プロセスはベクタ機能付きプロセッサにスケジューリングする必要があります。 プロセスが実行しているイメージが,ある期間スカラ命令だけを発行し,ベクタ機能付きプロセッサを他のベクタ使用プロセスと共用する必要がある場合,そのイメージはスカラ・プロセッサ上で実行できないために,そのイメージ自身の性能だけでなく,システム全体の性能が低下します。 省略時の設定では,ベクタ使用プロセスがある期間ベクタ命令を発行していない場合,そのプロセスはすぐにはベクタ命令を発行しないと想定されます。 このプロセスはベクタ機能が必要でないとみなされ,潜在的ベクタ使用プロセスに移行します。 非対称型ベクタ処理構成では,潜在的ベクタ使用プロセスが検出されると次のような効果があります。
システム・パラメータ VECTOR_MARGIN は,すべてのベクタ使用プロセスの状態がチェックされる間隔を決定します。 VECTOR_MARGIN に,1 から FFFFFFFF16 までの任意の整数値に設定することができます。 この値は,システム・パラメータ QUANTUM によって決定される連続プロセス・クォンタムの数を表します。 指定したクォンタムの数で決定する期間プロセスがベクタ命令を発行しないと,システムはそのプロセスを潜在的ベクタ使用プロセスとして宣言します。 VECTOR_MARGIN の省略時の値は 20010 です。 ベクタ 機能は,ユーザがベクタ・プロセッサのサービスを使用できるようにするために,オペレーティング・システムが使用する抽象的なソフトウェアです。 アクセス制御リスト (ACL) にベクタ機能のオブジェクトを対応づけることによって,ベクタ・プロセッサの使用を特定の ID を持つユーザに制限することができます。 たとえば,大学ではベクタ・プロセッサの使用を,イメージ処理を研究する学部や学生に限定する場合があります。 また,情報サービス会社では,ベクタ機能へのアクセスとベクタ・プロセッサを使用した時間の一方または両方をユーザに対して請求する場合があります。 DCLコマンド SET SECURITY/ACL を次の形式で使用して,ベクタ機能についての ACL を設定します。 SET SECURITY /CLASS=CAPABILITY /ACL=(ace[,...]) VECTOR
ここで,ACL はベクタ機能に対して設定されるものであり,システム上の任意またはすべてのベクタ機能付きプロセッサの使用を制限するものではないということに注意してください。 オペレーティング・システムは,ベクタ機能付きプロセッサ上のベクタ機能を使用する許可を持たないプロセスでもスケジューリングします。 しかし,これらのプロセスが利用できるのはプロセッサのスカラ CPU コンポーネントだけであって,ベクタ命令を実行することはできません。 同様に,ACL はベクタ機能に対して設定され,ベクタ機能付きプロセッサに対して設定されているものでないため,ACL を使って特定のプロセッサ上でジョブを長時間実行させることはできません。 SET SECURITY コマンドと SHOW SECURITY コマンドについての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。 ベクタ処理システムの状態とプロセス別のシステム使用量についての情報をさまざまな方法で入手することができます。 具体的には,次のとおりです。
DCL レキシカル関数 F$GETJPI は以下の項目を受け付け,指定されたプロセスのベクタ状態に関して対応する情報を返します。
DCL レキシカル関数 F$GETSYI は以下の項目を受け付け,ベクタ処理システムの状態に関して対応する情報を返します。
DCL レキシカル関数の F$GETJPI および F$GETSYI についての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。 SHOW CPU/FULL コマンドにより,指定された CPU の機能の一覧が示されます。 STOP/CPU コマンドを実行する場合,まずこのコマンドを実行してシステムがベクタ機能を持っているかどうかを調べてください。 SHOW CPU コマンドについての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。 あるプロセスがベクタ機能付きプロセッサにスケジューリングされたベクタ使用プロセスとして任意の時間が経過すると,DCL の SHOW PROCESS コマンドと LOGOUT/FULL コマンドによって,そのプロセスがベクタ CPU を実際に使用した時間とそのプロセスにベクタ CPU が割り当てられた時間がそれぞれ表示されます。 ベクタ CPU 時間を累計するためには,プロセスがベクタ使用プロセス (すなわち,システム・ベクタ機能を必要とするプロセス) であり,ベクタ機能付きプロセッサにスケジューリングされていることが必要です。 オペレーティング・システムは,ベクタ使用プロセスをベクタ機能付きプロセッサにスケジューリングすると,そのプロセスが実際にはベクタ CPU を使用していなくてもそのプロセスのベクタ CPU 時間を累計します。 スカラ使用プロセスと潜在的ベクタ使用プロセスはベクタ CPU を使用しないため,これらのプロセスがベクタ機能付きプロセッサにスケジューリングされているときでも,それらのベクタ CPU 時間は累計されません。 SHOW PROCESS コマンドおよび LOGOUT コマンドについての詳細は,『OpenVMS DCL ディクショナリ』を参照してください。 VAX ベクタ命令エミュレーション機能 (VVIEF) は,オペレーティング・システムに標準で備えられている機能であり,ベクタ・プロセッサが利用できない VAX システム上でベクタ化されたアプリケーションの作成やデバッグを可能にします。 VVIEF は厳密にプログラム開発ツールとして意図されたものであり,ベクタ・ハードウェア上での動作をソフトウェア上で実現するものではありません。 したがって,VVIEF のもとで実行するようにアプリケーションをベクタ化しても性能は向上しません。 むしろ,VVIEF のもとで実行されるベクタ化アプリケーションの動作はスカラ版アプリケーションよりも低速です。 コマンド・プロシージャ SYS$UPDATE:VVIEF$INSTAL.COM を呼び出すと,次回以降のシステム・ブート時に VVIEF がロードされます。 VVIEF をアンロードするためには,コマンド・プロシージャ SYS$UPDATE:VVIEF$DEINSTAL.COM を呼び出して,システムをリブートします。 システムに VVIEF が存在するかどうかは DCL の以下のコマンドによって調べることができます。
戻り値が 1 の場合はVVIEF が存在し,0 の場合は存在しません。 ベクタ・サポート・コードが存在してもVVIEF をシステムにロードすることはできますが,その場合は非稼働状態のままになります。 ベクタ機能付きシステム (13.4.1 項 「ベクタ処理サポート・コードのロード (VAX のみ)」を参照) でベクタ・サポート・コードをロードしないようにして VVIEF を稼働させることは可能ですが,それによる利点はほとんどありません。 システム内でベクタ機能付きプロセッサだけに障害が発生した場合,中断されたベクタ化されたアプリケーションの実行は VVIEF のもとでは再開されません。 |
|