前へ | 次へ | 目次 | 索引 |
SYSMAN> SET ENV/NODE=X SYSMAN> CLASS ADD class1 /USERNAME=(user1) /CPULIMIT=(0-2=100%,3-23=30%) SYSMAN> SET ENV/NODE=Y SYSMAN> CLASS ADD class1 /USERNAME=(user1) /CPULIMIT=(0-2=40%,3-23=20%)
ノード X と Y の両方に共通なデータベースでは,2 番目のコマンドは同一のクラスに異なるパラメータを指定しているため,エラーになります。ノード X と Y に別々のデータベースがある場合には,2 番目のコマンドは動作します。例 2
システムは,プロセスを 1 つの一意なクラスに割り当てることができる必要もあります。別個のノードでこれらのクラスを定義するかぎり,複数のクラスで同一のユーザ (または他の識別情報) を指定できます。次の例を参照してください。
SYSMAN> SET ENV/NODE=X SYSMAN> CLASS ADD class1 /USERNAME=(user1) /CPULIMIT=(0-2=100%,3-23=30%) SYSMAN> SET ENV/NODE=Y SYSMAN> CLASS ADD class2 /USERNAME=(user1) /CPULIMIT=(0-2=40%,3-23=20%)
この例では,ノード X と Y の両方で共通な 1 つのデータベースで動作します。これは,2 つのセットのパラメータも異なるクラス名を持つためです。システムは,user1 が実行中のノードを確認することで user1 用のクラスを決定できます。例 3
次の例は,共通データベースに対しても,独立したデータベースに対しても正しくありません。その理由は,class1 と class2 が両方とも NODE X に対して定義されているので,user1 が class1 のメンバなのか, class2 のメンバなのかをシステムが判断できないためです。
SYSMAN> SET ENV/NODE=X SYSMAN> CLASS ADD class1 /USERNAME=(user1) /CPULIMIT=(0-2=100%,3-23=30%) SYSMAN> CLASS ADD class2 /USERNAME=(user1) /CPULIMIT=(0-2=40%,3-23=20%)
例 4
これまでの例で示したように,ノードを明示的に指定することの他に,クラスをクラスタ全体に適用することも指定できます。次の例を参照してください。
SYSMAN> SET ENV /CLUSTER SYSMAN> CLASS ADD class1 /USERNAME=(user1) /CPULIMIT=(0-2=100%,3-23=30%)
この例では,class1 はクラスタ内のすべてのノードに対して定義されているばかりでなく,後でクラスタに追加する可能性のあるノードが同一のデータベースを使用するかぎり,後でクラスタに追加するノードに対しても定義できます。
環境を CLUSTER に設定したクラスを定義する場合, SYSMAN> CLASS SHOW/FULL コマンドは,データベースがすべてのクラスタ・ノードに対して共通ではない場合でも, "Nodes: All Cluster Members" の通知のあるクラスを一覧に表示します。混乱を防ぐため,共通のデータベースを使用してください。
システム・ディスクが異なるクラスタで共通のクラス・スケジューラ・データベースを持とうとしている場合,または,システム・ディスクが共通のクラスタにある各ノードに独立したデータベースを持とうとしている場合,各ノードでシステム論理名 VMS$CLASS_SCHEDULE を定義して,そのノードで使用するデータベースの場所をポイントします。たとえば,SYSTARTUP_VMS.COM に次のコマンドを含めます。
$ DEFINE/SYSTEM VMS$CLASS_SCHEDULE disk:[directory]VMS$CLASS_SCHEDULE.DATA
内容 :
disk:[directory] は,データベース・ファイルを置くディスクとディレクトリを示しています。
パーマネント・クラス・スケジューラを使用することで,プロセスは,適切であれば,プロセスの生成時にスケジューリング・クラスに配置されます。新しいプロセスが生成されると,システムは,そのプロセスがスケジューリング・クラスに属しているかどうかを判断します。その判断は,SYSUAF ファイル内のデータをもとにしています。 Loginout イメージはプロセスに関する情報を SYSUAF ファイルからすでに取得しているので, Loginout は,プロセスがスケジューリング・クラスに属していると判断した場合に,そのプロセスをクラスにスケジュールします。
プロセス生成時に考慮する必要があるプロセスとして,サブプロセスと独立プロセスの 2 つのタイプのプロセスがあります。
- サブプロセスがクラスの条件に一致しない可能性があったとしても,サブプロセスは親プロセスと同じスケジューリング・クラスに加わります。つまり,サブプロセスのユーザ名とアカウント名,または UIC は,クラスのレコードではない可能性もあります。
- 独立プロセスがプロセス生成中に LOGINOUT イメージ (LOGINOUT.EXE) を実行しない限り,独立プロセスはそれを作成したプロセスと同じスケジューリング・クラスに参加します。独立プロセスが LOGINOUT を実行した場合,クラス・スケジューラ・データベースのクラス条件に一致するクラスがあれば,そのクラスに参加します。
プロセスはプロセス生成時にスケジューリング・クラスに参加できますが,実行中に SET PROCESS/SCHEDULING_CLASS コマンドを使うと,スケジューリング・クラスを変更できます。
次に示すいずれかの方法を使うと,プロセスがクラスにスケジューリングされたかどうかを判断できます。
- 次の DCL コマンドのいずれか
$ SHOW SYSTEM/SCHEDULING_CLASS $ SHOW SYSTEM/FULL
DCL コマンド SHOW SYSTEM の詳細については,『OpenVMS DCL ディクショナリ: N--Z』を参照してください。- JPI$_SCHED_CLASS_NAME アイテムを使った,SYS$GETJPI システム・サービス
SYS$GETJPI システム・サービスの詳細については,『OpenVMS System Services Reference Manual: A--GETUAI』を参照してください。- AUTHORIZE ユーティリティ
新しいユーザが SYSUAF ファイルに追加されたとき,または,ユーザのレコードが変更されたとき, AUTHORIZE はクラス・スケジューラ・データベース・ファイルを検索して,そのユーザがスケジューリング・クラスのメンバであるかどうかを判断します。ユーザがスケジューリング・クラスのメンバである場合, AUTHORIZE は次のメッセージを表示します。
UAF-I-INCLASS, user belongs to at least 1 selecting class
AUTHORIZE ユーティリティの詳細については,本書の AUTHORIZE の章を参照してください。
DELETE サブコマンドはスケジューリング・クラスをクラス・スケジューラ・データベース・ファイルから削除します。
CLASS_SCHEDULE DELETE クラス名
クラス名
スケジューリング・クラスの名前を指定します。 DELETE コマンドには必ずクラス名を指定します。この名前の最大長は 16 文字です。
なし。
MODIFY サブコマンドは,スケジューリング・クラスの属性を変更します。
CLASS_SCHEDULE MODIFY クラス名
クラス名
スケジューリング・クラスの名前を指定します。 MODIFY コマンドには必ずクラス名を指定します。この名前の最大長は 16 文字です。
/ACCOUNT
このスケジューリング・クラスに参加するユーザを指定します。これは,ユーザの SYSUAF レコードの一部になります。この修飾子の構文は次のとおりです。
[/ACCOUNT = (名前1, 名前2,...名前"n")]
/CPULIMIT
指定された曜日と時間にこのスケジューリング・クラスが取得できる CPU 時間の最大量を定義します。クラスを追加するときには必ずこの修飾子を指定します。この修飾子の構文は次のとおりです。
/CPULIMIT = ([primary], [h1-h2=time%],[h1=time%], [,...],[secondary],[h1-h2=time%],[h1=time%],[,...])
h1-h2=time% 構文によって時間の範囲を指定し,その次に,この時間のセットに関連付ける CPU 時間の最大量 (パーセンテージで表記) を指定します。 PRIMARY キーワードに続く最初の時間のセットには主曜日での時間を指定し, SECONDARY キーワードに続く時間のセットには副曜日での時間を指定します。指定した時間はそれ自体も含まれます。ある時間にクラス・スケジュールを行うと,アクセスはその時間の最後まで拡張されます。
/PRIMEDAYS
主曜日と副曜日を定義できます。この修飾子の構文は次のとおりです。
[/PRIMEDAYS = ([no]曜日[,...])]
主曜日は,MON,TUE,WED,THU,FRI,SAT,SUN と指定します。副曜日は,NOMON,NOTUE,NOWED,NOTHU,NOFRI,NOSAT,NOSUN と指定します。
省略時の設定は,MON から FRI までと,NOSAT および NOSUN です。リストにない曜日は省略時の設定になります。 DCL コマンドの SET DAY を使うと,主曜日と副曜日のクラス定義を変更できます。
/UIC
このスケジューリング・クラスに参加するユーザを指定します。これは,ユーザの SYSUAF レコードの一部になります。この修飾子の構文は次のとおりです。
[/UIC = (uic1,uic2,...uic"n")]
/USERNAME
このスケジューリング・クラスに参加するユーザを指定します。これは,ユーザの SYSUAF レコードの一部になります。この修飾子の構文は次のとおりです。
[/USERNAME = (名前1, 名前2,...名前"n")]
/WINDFALL
スケジューリング・クラス内のすべてのプロセスがウィンドフォールの資格があると指定します。この修飾子の構文は次のとおりです。
[/WINDFALL])
ウィンドフォールを許可することで,スケジューリング・クラス内のプロセスは「ウィンドフォール」を受け取ることができます。「ウィンドフォール」とは,クラスに分配された CPU 時間がほとんど無くて,CPU がアイドル状態であるときの,CPU 時間の短いパーセンテージです。これは,プロセスに分配された時間よりも多くの時間をプロセスに提供することになるとしても, CPU がアイドル状態のままよりはこれらのプロセスを実行させる方がよいと選択したことにもなります。
省略時の設定では,ウィンドフォールは禁止になっています。
時間の制限を削除するには,特定の時間範囲に関連付けられている時間パーセンテージにゼロ (0) を指定します。名前または UIC の値を削除するには,名前または UIC の前にマイナス記号を指定する必要があります。
RESUME サブコマンドは SUSPEND コマンドを補完するものです。このコマンドを使って,現在中断されているスケジューリング・クラスを再開します。
CLASS_SCHEDULE RESUME クラス名
クラス名
スケジューリング・クラスの名前を指定します。 RESUME コマンドには必ずクラス名を指定します。この名前の最大長は 16 文字です。
なし。
SHOW サブコマンドはスケジューリング・クラスの属性を表示します。
CLASS_SCHEDULE SHOW [クラス名] [/修飾子]
クラス名
スケジューリング・クラスの名前を指定します。 SHOW コマンドには必ずクラス名または,/ALL 修飾子を指定します。クラス名の最大長は 16 文字です。
/ALL
すべてのスケジューリング・クラスを表示します。クラス名が何も指定されない場合,この修飾子を指定する必要があります。/FULL
このスケジューリング・クラスに関するすべての情報を表示します。
省略時の設定では,SHOW サブコマンドによって限定されたデータが表示されます。省略時の表示は次のとおりです。
- 名前
- 各時間範囲に対する最大 CPU 時間
- 主曜日と副曜日
- ウィンドフォールの設定
SUSPEND サブコマンドは指定したスケジューリング・クラスを中断します。
CLASS_SCHEDULE SUSPEND クラス名
クラス名
スケジューリング・クラスの名前を指定します。 SUSPEND コマンドには必ずクラス名を指定します。この名前の最大長は 16 文字です。
なし。
スケジューリング・クラスを中断すると,スケジューリング・クラスに属しているすべてのプロセスはそのままクラスに属しますが, CPU 時間は無制限に与えられます。
ローカル・エリア・クラスタのセキュリティ・データを変更します。SYSPRV 特権が必要です。
CONFIGURATION SET CLUSTER_AUTHORIZATION
なし
/GROUP_NUMBER=[n]
SYS$SYSTEM:CLUSTER_AUTHORIZE.DAT に記録されているクラスタ・グループ番号を指定します。グループ番号は, 1 つのイーサネットに存在する各ローカル・エリア・クラスタを一意で識別します。1 〜 4095 または 61440 〜 65535 の範囲の番号を指定します。/PASSWORD=パスワード
クラスタ・アクセスに使用するパスワードを指定します。パスワードは,31 文字以内の英数字,ドル記号,アンダスコアです。パスワードは,同じイーサネット上のクラスタのグループ番号が万一同じであった場合に,グループ番号の次の確認基準となります。また,グループ番号が外部に洩れた場合でも,パスワードによってクラスタへの侵入を防止できます。
CONFIGURATION SET CLUSTER_AUTHORIZATION コマンドは, SYS$SYSTEM:CLUSTER_AUTHORIZE.DAT に記録されているローカル・エリア・クラスタのグループ番号とパスワードを変更します。複数のシステム・ディスクを使用している場合,SET ENVIRONMENT/CLUSTER でクラスタとして環境が定義されていれば,すべての CLUSTER_AUTHORIZE.DAT が自動的に更新されます。 CLUSTER_AUTHORIZE.DAT の詳細については,『OpenVMS Cluster システム』を参照してください。
重要
グループ番号やパスワードを変更した場合,クラスタ全体を再ブートする必要があります。
CLUSTER_AUTHORIZE.DATファイルはCLUSTER_CONFIG.COMの実行で初期化され,SYSMANで管理されます。通常の状況では,CLUSTER_AUTHORIZE.DATファイルのレコードを会話で変更する必要はありません。 CONFIGURATION SET CLUSTER_AUTHORIZATIONコマンドを使用すれば,クラスタのメンバに矛盾が発生しないように保護できます。
SYSMAN> SET ENVIRONMENT/CLUSTER/NODE=NODE21 SYSMAN> SET PROFILE /PRIVILEGE=SYSPRV SYSMAN> CONFIGURATION SET CLUSTER_AUTHORIZATION/PASSWORD=GILLIAN %SYSMAN-I-CAFOLDGROUP, existing group will not be changed %SYSMAN-I-GRPNOCHG, Group number not changed SYSMAN-I-CAFREBOOT, cluster authorization file updated. The entire cluster should be rebooted. |
この例では,クラスタのパスワードを変更しています。環境がクラスタとして定義されているので, CONFIGURATION SET CLUSTER_AUTHORIZATION コマンドを実行する前に SYSPRV 特権を設定しています。
現在のシステム時間を変更します。OPER,LOG_IO,SYSPRV 特権が必要です。 OpenVMS Cluster環境では,SYSLCK 特権も必要です。
CONFIGURATION SET TIME [時間]
なし。
なし。
CONFIGURATION SET TIME コマンドは,システム時間を再設定します。次の形式で時間値を指定します。
[dd-mmm-yyyy[:]] [hh:mm:ss.cc]
デルタ時間を入力することもできます。時間形式の詳細については,『OpenVMS ユーザーズ・マニュアル』を参照してください。
個々のノードで構成される環境では,指定の値が各ノードの時間として設定されます。時間を指定しない場合,各ノードのタイム・オブ・イヤー・クロックに基づいて時間が設定されます。
OpenVMS Cluster環境では,指定の値が各ノードの時間として設定されます。時間を指定しない場合,タイム・オブ・イヤー・クロックが使用されます。ローカル・クラスタでは,SYSMAN を実行しているノードのクロックから読み込んだ値を,OpenVMS Cluster内のすべてのノードに設定します。遠隔OpenVMS Clusterでは,ターゲット・ノードのクロックから読み込んだ値をクラスタ内のすべてのノードに設定します。タイム・オブ・イヤー・クロックがオプションであるプロセッサもあります。詳細については,プロセッサのマニュアルを参照してください。
SYSMAN では,OpenVMS Cluster環境内のすべてのプロセッサに同じ時間を設定するよう,特殊な処理を行います。通信と処理に遅延が生じるため,クロックを正確に同期させることは不可能ですが,誤差は通常,数百分の 1 秒未満です。指定した時間の 1/2 秒以内の時間を設定できなかった場合,応答が迅速でなかったノードを示す警告メッセージが出力されます。
プロセッサ・クロックごとにわずかな誤差があるので,ノード間で時間がずれがちです。以下は,クラスタ環境でシステム時間の同期をとるプロシージャです。
$ SYNCH_CLOCKS: $ RUN SYS$SYSTEM:SYSMAN SET ENVIRONMENT/CLUSTER CONFIGURATION SET TIME EXIT $ WAIT 6:00:00 $ GOTO SYNCH_CLOCKS
ローカル・ノードのタイム・オブ・イヤー・クロックの時間をすべてのクラスタ・ノードの時間に設定し,6 時間後に時間を再設定します。
SYSMAN> SET ENVIRONMENT/NODE=(NODE21,NODE22,NODE23) SYSMAN> SET PROFILE /PRIVILEGE=LOG_IO SYSMAN> CONFIGURATION SET TIME 12:38:00 |
NODE21,NODE22,NODE23 のシステム時間を変更しています。
前へ | 次へ | 目次 | 索引 |