前へ | 次へ | 目次 | 索引 |
マルチプロセッシング構成へのベクタ機能付きプロセッサの追加または削除は,システム・パラメータ SMP_CPUS を設定することによってブート時に行うことができます。また,DCL の START/CPU コマンドおよび STOP/CPU コマンドによって実行時に行うこともできます。オペレーティング・システムはベクタ機能付きプロセッサのスカラ CPU コンポーネントとベクタ CPU コンポーネントとを単一のプロセッサとして扱い,これらの起動と停止を同時に行います。
ブート時,システム・パラメータ SMP_CPUS の設定に従って,マルチプロセッシング・システムの中の2次プロセッサのうちどのプロセッサを構成に追加するかが決定されます。これらの2次プロセッサの中にはベクタ機能付きプロセッサも含まれます。オペレーティング・システムは,1次プロセッサを常に構成に追加します。システム・パラメータ SMP_CPUS の省略時の値 --1 では,利用可能なすべてのプロセッサがブートされ,スカラ・プロセッサもベクタ機能付きプロセッサも同様にシステム構成に追加されます。この SMP_CPUS パラメータについての詳細は,『Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』を参照してください。ブート時,ベクタ機能付きプロセッサの起動の前に,ベクタ処理サポート・コード ( 第 28.4.1 項 を参照) をロードしておく必要があります。サポート・コードがロードされていなければ,プロセスはベクタ機能付きプロセッサのスカラ 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 コマンドについての詳細は,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
28.4.3 ベクタ・プロセスの管理 (VAX のみ)
オペレーティング・システムのスケジューリング・アルゴリズムにより,ベクタ処理資源とスカラ処理資源とはベクタ使用プロセス,潜在的ベクタ使用プロセス,スカラ使用プロセスに自動的に分配されます。しかし,VAX ベクタ処理構成は,次の 2 つの重要な点が異なります。
システム内に存在するベクタ使用プロセスの数がそれらにサービスを提供するスカラ機能付きプロセッサ (スカラ・プロセッサとベクタ・プロセッサのペア) の数よりも多い場合は,プロセスの優先順位に従ってベクタ使用プロセスがベクタ機能付きプロセッサを共用します。ベクタ機能付きプロセッサを使用する複数のプロセスの優先順位が等しい場合,それらのプロセスはラウンド・ロビン形式でスケジューリングされます。ベクタ機能付きプロセッサに新しいベクタ使用プロセスをスケジューリングする場合,システムは現在メモリ内に存在するベクタ使用プロセスのベクタ・コンテキストを保存し,メモリから新しいベクタ使用プロセスを復元する必要があります。このような「低速」ベクタ・コンテキスト・スイッチが過剰に発生する場合は,実際の演算よりもベクタ・コンテキスト・スイッチに多くの処理時間が費やされるようになります。
ベクタ処理の必要性が大きなシステムは,それらの必要性を満たすように構成する必要があります。しかし,既存の構成のままでチューニングを行うことでその性能を改善できるいくつかの方法があります。
28.4.3.1 システム資源とプロセス・クォータの調整 (VAX のみ)
いくつかのベクタ使用プロセスが同時に稼働状態になるシステムでは,プロセスがメモリを共用するためにページング動作が増加することがあります。プロセス・ページングの回数を減らすためには, AUTHORIZE ユーティリティを使って,ベクタ化アプリケーションを実行しているプロセスのワーキング・セットの制限とクォータを調整します (詳細は,『Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の AUTHORIZE のパートを参照してください)。また,プロセス最大ワーキング・セット・サイズ (システム・パラメータ WSMAX) の値を大きくします。さらに必要であれば,ベクタ化アプリケーションでワーキング・セット・システム・サービス ($LKWSET) のロック・ページを使って,自身の性能を向上させます。
ベクタを使用する各プロセスは 8 KB のシステム非ページング動的メモリを割り当てられ,その中にベクタ・コンテキストの情報が格納されます。システム内で同時に稼働状態になっているベクタ使用プロセスの数に応じて,システム・パラメータ NPAGEDYN の値を調整します。 DCL の SHOW MEMORY/POOL/FULL コマンドを使用すると,非ページング・プールの現在のサイズがバイト数で示されます。
VAX ベクタ処理システムの最適な性能を得るため,バッチ・キューの設定時にシステムのベクタ資源を飽和させないように注意する必要があります。キューに登録された稼働状態のベクタ化バッチ・ジョブの数がシステム内のベクタ機能付きプロセッサの数より多いと,ベクタ・コンテキスト・スイッチに処理時間の多くの部分が消費されるようになります。
できれば,ベクタ化されたバッチ・ジョブを VAX ベクタ処理システムにディスパッチするためのキュー (たとえば VECTOR_BATCH) を別に用意し,そのジョブの制限数をシステム内のベクタ機能付きプロセッサの数と同じにします。そして,ベクタ化バッチ・ジョブをこの汎用ベクタ処理バッチ・キューに登録するようにユーザに指示します。
28.4.3.2 プロセスへのスカラ資源およびベクタ資源の配分 (VAX のみ)
ベクタ使用プロセスはベクタ機能付きプロセッサにスケジューリングする必要があります。プロセスが実行しているイメージが,ある期間スカラ命令だけを発行し,ベクタ機能付きプロセッサを他のベクタ使用プロセスと共用する必要がある場合,そのイメージはスカラ・プロセッサ上で実行できないために,そのイメージ自身の性能だけでなく,システム全体の性能が低下します。
省略時の設定では,ベクタ使用プロセスがある期間ベクタ命令を発行していない場合,そのプロセスはすぐにはベクタ命令を発行しないと想定されます。このプロセスはベクタ機能が必要でないとみなされ,潜在的ベクタ使用プロセスに移行します。
非対称型ベクタ処理構成では,潜在的ベクタ使用プロセスが検出されると次のような効果があります。
システム・パラメータ VECTOR_MARGIN は,すべてのベクタ使用プロセスの状態がチェックされる間隔を決定します。 VECTOR_MARGIN に,1 から FFFFFFFF16 までの任意の整数値に設定することができます。この値は,システム・パラメータ QUANTUM によって決定される連続プロセス・クォンタムの数を表します。 指定したクォンタムの数で決定する期間プロセスがベクタ命令を発行しないと,システムはそのプロセスを潜在的ベクタ使用プロセスとして宣言します。
VECTOR_MARGIN の省略時の値は 20010 です。
28.4.4 ACL によるベクタ・プロセッサへのアクセスの制限 (VAX のみ)
ベクタ 機能は,ユーザがベクタ・プロセッサのサービスを使用できるようにするために,オペレーティング・システムが使用する抽象的なソフトウェアです。アクセス制御リスト (ACL) にベクタ機能のオブジェクトを対応づけることによって,ベクタ・プロセッサの使用を特定の ID を持つユーザに制限することができます。
たとえば,大学ではベクタ・プロセッサの使用を,イメージ処理を研究する学部や学生に限定する場合があります。また,情報サービス会社では,ベクタ機能へのアクセスとベクタ・プロセッサを使用した時間の一方または両方をユーザに対して請求する場合があります。
DCLコマンド SET SECURITY/ACL を次の形式で使用して,ベクタ機能についての ACL を設定します。
SET SECURITY /CLASS=CAPABILITY /ACL=(ace[,...]) VECTOR |
$ SHOW SECURITY /CLASS=CAPABILITY VECTOR |
ここで,ACL はベクタ機能に対して設定されるものであり,システム上の任意またはすべてのベクタ機能付きプロセッサの使用を制限するものではないということに注意してください。オペレーティング・システムは,ベクタ機能付きプロセッサ上のベクタ機能を使用する許可を持たないプロセスでもスケジューリングします。しかし,これらのプロセスが利用できるのはプロセッサのスカラ CPU コンポーネントだけであって,ベクタ命令を実行することはできません。同様に,ACL はベクタ機能に対して設定され,ベクタ機能付きプロセッサに対して設定されているものでないため, ACL を使って特定のプロセッサ上でジョブを長時間実行させることはできません。
SET SECURITY コマンドと SHOW SECURITY コマンドについての詳細は,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
28.4.5 ベクタ処理システムに関する情報の入手 (VAX のみ)
ベクタ処理システムの状態とプロセス別のシステム使用量についての情報を様々な方法で入手することができます。具体的には,次のとおりです。
28.4.5.1 DCL レキシカル関数 F$GETJPI および F$GETSYI (VAX のみ)
DCL レキシカル関数 F$GETJPI は以下の項目を受け付け,指定されたプロセスのベクタ状態に関して対応する情報を返します。
項目 | 戻り値の型 | 返される情報 |
---|---|---|
FAST_VP_SWITCH | 整数 | 指定されたプロセスが発行したベクタ命令のうち,ベクタ・コンテキスト・スイッチを行うことなく非稼働状態のベクタ・プロセッサを稼働状態にした命令の数。 |
SLOW_VP_SWITCH | 整数 | 指定されたプロセスが発行したベクタ命令のうち,完全なベクタ・コンテキスト・スイッチを行うことによって非稼働状態のベクタ・プロセッサを稼働状態にした命令の数。 |
VP_CONSUMER | 論理 | 指定されたプロセスがベクタ使用プロセスかどうかを示すフラグ。 |
VP_CPUTIM | 整数 | 指定されたプロセスがベクタ機能を利用した時間の累計。 |
DCL レキシカル関数 F$GETSYI は以下の項目を受け付け,ベクタ処理システムの状態に関して対応する情報を返します。
項目 | 戻り値の型 | 返される情報 |
---|---|---|
VECTOR_EMULATOR | 整数 | システムに VAX ベクタ命令エミュレーション機能 (VVIEF) が存在することを示すフラグ。 |
VP_MASK | 整数 | システム内のどのプロセッサがベクタ・コプロセッサを持っているかを示すマスク。 |
VP_NUMBER | 整数 | システム内のベクタ・プロセッサの数。 |
DCL レキシカル関数の F$GETJPI および F$GETSYI についての詳細は,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
28.4.5.2 SHOW CPU/FULL コマンド (VAX のみ)
SHOW CPU/FULL コマンドにより,指定された CPU の機能の一覧が示されます。STOP/CPU コマンドを実行する場合,まずこのコマンドを実行してシステムがベクタ機能を持っているかどうかを調べてください。
SHOW CPU コマンドについての詳細は,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
28.4.5.3 SHOW PROCESS コマンドと LOGOUT/FULL コマンド (VAX のみ)
あるプロセスがベクタ機能付きプロセッサにスケジューリングされたベクタ使用プロセスとして任意の時間が経過すると, DCL の SHOW PROCESS コマンドと LOGOUT/FULL コマンドによって,そのプロセスがベクタ CPU を実際に使用した時間とそのプロセスにベクタ CPU が割り当てられた時間がそれぞれ表示されます。
ベクタ CPU 時間を累計するためには,プロセスがベクタ使用プロセス (すなわち,システム・ベクタ機能を必要とするプロセス) であり,ベクタ機能付きプロセッサにスケジューリングされていることが必要です。オペレーティング・システムは,ベクタ使用プロセスをベクタ機能付きプロセッサにスケジューリングすると,そのプロセスが実際にはベクタ CPU を使用していなくてもそのプロセスのベクタ CPU 時間を累計します。スカラ使用プロセスと潜在的ベクタ使用プロセスはベクタ CPU を使用しないため,これらのプロセスがベクタ機能付きプロセッサにスケジューリングされているときでも,それらのベクタ CPU 時間は累計されません。
SHOW PROCESS コマンドおよび LOGOUT コマンドについての詳細は,『Compaq OpenVMS DCL ディクショナリ』を参照してください。
28.4.6 VAX ベクタ命令エミュレーション機能 (VVIEF) のロード (VAX のみ)
VAX ベクタ命令エミュレーション機能 (VVIEF) は,オペレーティング・システムに標準で備えられている機能であり,ベクタ・プロセッサが利用できない VAX システム上でベクタ化されたアプリケーションの作成やデバッグを可能にします。 VVIEF は厳密にプログラム開発ツールとして意図されたものであり,ベクタ・ハードウェア上での動作をソフトウェア上で実現するものではありません。したがって, VVIEF のもとで実行するようにアプリケーションをベクタ化しても性能は向上しません。むしろ,VVIEF のもとで実行されるベクタ化アプリケーションの動作はスカラ版アプリケーションよりも低速です。
コマンド・プロシージャ SYS$UPDATE:VVIEF$INSTAL.COM を呼び出すと,次回以降のシステム・ブート時に VVIEF がロードされます。 VVIEF をアンロードするためには,コマンド・プロシージャ SYS$UPDATE:VVIEF$DEINSTAL.COM を呼び出して,システムを再ブートします。
システムに VVIEF が存在するかどうかは DCL の以下のコマンドによって調べることができます。
$ X = F$GETSYI("VECTOR_EMULATOR") $ SHOW SYMBOL X X = 1 Hex = 00000001 Octal = 0000000001 |
戻り値が 1 の場合はVVIEF が存在し,0 の場合は存在しません。
ベクタ・サポート・コードが存在してもVVIEF をシステムにロードすることはできますが,その場合は非稼働状態のままになります。ベクタ機能付きシステム ( 第 28.4.1 項 を参照) でベクタ・サポート・コードをロードしないようにしてVVIEF を稼働させることは可能ですが,それによる利点はほとんどありません。システム内でベクタ機能付きプロセッサだけに障害が発生した場合,中断されたベクタ化されたアプリケーションの実行は VVIEF のもとでは再開されません。
前へ | 次へ | 目次 | 索引 |