17    共用メモリを使った通信

この章では,次の 2 つの OpenVMS 内部機能について説明します。 これらの機能は,共用メモリを使用して, OpenVMS Galaxy コンピューティング環境のインスタンス間で通信を行います。

17.1    共用メモリ・クラスタ・インターコネクト (SMCI)

共用メモリ・クラスタ・インターコネクト (SMCI) は, Galaxy インスタンス間で通信するためのシステム通信サービス (SCS) ポートです。 OpenVMS インスタンスが Galaxy および OpenVMS Cluster メンバの両方としてブートされると,SMCI ドライバがロードされます。この SCS ポート・ドライバは, 共用メモリを介して同じ Galaxy 内の他のクラスタ・インスタンスと通信します。 この機能は,OpenVMS Galaxy ソフトウェア・アーキテクチャが備えている性能向上のための主要な機能の 1 つです。 共用メモリを介してクラスタ接続された他のインスタンスと通信できる機能は, 従来のクラスタ・インターコネクトより大幅に性能を向上することができます。

以下のセクションでは, SMCI とともに使用されるドライバとデバイスについて説明します。

17.1.1    SYS$PBDRIVER ポート・デバイス

Galaxy およびクラスタ・メンバの両方としてブートすると, デフォルトで SYS$PBDRIVER がロードされます。 このドライバをロードすると,デバイス PBAx が作成されます。 ただし,x は Galaxy パーティション ID です。 他のインスタンスがブートされると,PBAx デバイスも作成されます。 SMCI は他のインスタンスをただちに識別し, そのインスタンスへの通信チャネルを作成します。 従来のクラスタ・インターコネクトと異なり, 他のインスタンスと通信するために新しいデバイスが作成されます。 このデバイスにも PBAx という名前が割り当てられます。 ただし,x は, このデバイスの通信相手であるインスタンスの Galaxy パーティション ID です。

たとえば,MILKY と WAY という 2 つのインスタンスで構成される OpenVMS Galaxy について考えてみましょう。 MILKY はインスタンス 0 であり,WAY はインスタンス 1 です。 ノード MILKY がブートされると,デバイス PBA0 が作成されます。 ノード WAY がブートされると, PBA1 が作成されます。2 つのノードが相互に相手を検出すると, MILKY はWAY と通信するために PBA1 を作成し, WAY は MILKY と通信するために PBA0 を作成します。

            MILKY                 WAY
 
            PBA0:                 PBA1:
 
            PBA1:   <------->     PBA0:
 

17.1.2    1 つの Galaxy 内の複数のクラスタ

SYS$PBDRIVER は同じ Galaxy 内で複数のクラスタをサポートできます。 この機能は,SYS$PEDRIVER を使用して, 同じ LAN で複数のクラスタがサポートされるのと同じ方法で実現されます。 SYS$PEDRIVER で使用されるクラスタ・グループ番号とパスワードは, 同じ Galaxy コミュニティ内の異なるクラスタを区別するために, SYS$PBDRIVER でも使用されます。 Galaxy インスタンスが LAN を介して他の OpenVMS インスタンスとクラスタ接続もされている場合は, クラスタ・グループ番号は CLUSTER_CONFIG によって適切に設定されます。 現在のクラスタ・グループ番号を判断するには,次のコマンドを入力します。

$ MCR SYMAN
SYSMAN> CONFIGURATION SHOW CLUSTER_AUTHORIZATION
Node: MILKY   Cluster group number: 0
Multicast address: xx-xx-xx-xx-xx-xx
SYSMAN>
 

LAN を介してクラスタ接続されていないときに, 同じ Galaxy コミュニティ内で複数のクラスタを稼働させる場合は, クラスタ・グループ番号を設定しなければなりません。 グループ番号とパスワードは,次のように同じクラスタ内のすべての Galaxy インスタンスで同一でなければなりません。

$ MCR SYSMAN
SYSMAN> CONFIGURATION SET
CLUSTER_AUTHORIZATION/GROUP_NUMBER=222/PASSWORD=xxxx
SYSMAN>
 

Galaxy インスタンスが LAN を介してクラスタ接続もされている場合は, CLUSTER_CONFIG はクラスタ・グループ番号を質問し, Galaxy インスタンスはこれらのグループ番号を使用します。 LAN を介してクラスタ接続されていない場合は, グループ番号のデフォルトは 0 になります。 つまり,Galaxy 内のすべてのインスタンスは同じクラスタ内に存在します。

17.1.3    SYS$PBDRIVER の SYSGEN パラメータ

ほとんどの場合,SYS$PBDRIVER のデフォルト設定を使用すると適切です。 しかし,いくつかの SYSGEN パラメータも準備されています。 SMCI_PORTS と SMCI_FLAGS の 2 つの SYSGEN パラメータは SYS$PBDRIVER を制御します。

17.1.3.1    SMCI_PORTS

SYSGEN パラメータ SMCI_PORTS は,SYS$PBDRIVER の初期ロードを制御します。 このパラメータはビットマスクであり, ビット 0〜25 はそれぞれコントローラ名を表します。 ビット 0 がセットされている場合は,PBAx がロードされます。 これはデフォルト設定です。 ビット 1 がセットされている場合は,PBBx がロードされ, 以下同様で,ビット 25 がセットされている場合は, PBZx がロードされます。 OpenVMS Alpha バージョン 7.3-1 以降の場合,このパラメータはデフォルト値の 1 のままにしておいてください。

追加ポートをロードすると,Galaxy インスタンス間で複数のパスを使用できます。 OpenVMS Alpha バージョン 7.3-1 では,SYS$PBDRIVER は, Fast Path をサポートしないので, 複数の通信チャネルを使用しても利点がありません。OpenVMS の将来のリリースでは, SYS$PBDRIVER 用に Fast Path がサポートされるようになる予定です。 Fast Path がサポートされるようになれば, 複数の CPU が割り当てられたインスタンスは, インスタンス間に複数の通信チャネルを持つことで,スループットを向上できます。

17.1.4    SMCI_FLAGS

SYSGEN パラメータ SMCI_FLAGS は,SYS$PBDRIVER の動作を制御します。 現在定義されているフラグはビット 1 だけです。ビット 1 は, ポート・デバイスがそれ自体との通信をサポートするかどうかを制御します。 それ自体との SCS 通信をサポートする機能は,主にテストのために使用されます。 デフォルト設定では,このビットはオフに設定され, システム・リソースを節約するために, ローカルな SCS 通信のサポートは無効になります。このパラメータは動的であり, このビットをオンにすると,SCS 仮想サーキットがただちに作成されます。

次の表に,SMCI_FLAGS パラメータのビットとビット・マスクの値を示します。

ビット マスク 説明

0

0

0 = ローカル通信チャネルを作成しない (SYSGEN のデフォルト)。 ローカル SCS 通信は主にテストで使用され,通常の操作では必要ない。 このビットをオフにしておけば,リソースとオーバヘッドを削減できる。

1 = ローカル通信チャネルを作成する。

1

2

0 = Galaxy およびクラスタの両方としてブートされた場合は, SYS$PBDRIVER をロードする (SYSGEN のデフォルト)。

1 = Galaxy としてブートされた場合は,SYS$PBDRIVER をロードする。

2

4

0 = 必要最低限のコンソール出力 (SYSGEN のデフォルト)。

1 = 完全なコンソール出力,SYS$PBDRIVER は,通信チャネルを作成するときと, 通信チャネルを破棄するときに,コンソール・メッセージを表示する。

17.2    LAN 共用メモリ・デバイス・ドライバ

OpenVMS Galaxy インスタンス間のローカル・エリア・ネットワーク (LAN) 通信は, イーサネット LAN 共用メモリ・ドライバでサポートされます。 この LAN ドライバは共用メモリを介して, 同じ OpenVMS Galaxy システム内の他のインスタンスと通信します。 共用メモリを介して他のインスタンスと通信すれば, 従来の LAN を介した通信より性能を大幅に向上できます。

LAN 共用メモリ・ドライバ SYS$EBDRIVER をロードするには, 次のコマンドを入力します。

$ MCR SYSMAN
SYSMAN> IO CONN EBA/DRIVER=SYS$EBDRIVER/NOADAPTER
 

OpenVMS バージョン 7.3-1 以降で,LAN プロトコルがこの LAN デバイス (EBAn,ただし n はユニット番号) を介して自動的に起動するように設定するには,このドライバをロードするためのプロシージャを構成プロシージャに追加する必要があります。

SYS$MANAGER:SYCONFIG.COM.

LAN ドライバは Ethernet/IEEE 802.3 と同じフレーム形式でイーサネット LAN をエミュレートしますが, 最大フレーム・サイズは 1518 から 7360 バイトに拡大しています。 LAN ドライバは標準の OpenVMS QIO および VCI インタフェースをアプリケーションに提供します。 既存の QIO および VCI LAN アプリケーションはすべて, 変更せずに動作するはずです。

将来のリリースでは, SYS$EBDRIVER デバイス・ドライバは自動的にロードされるようになります。