この節では、ファイルとスクリプトを使用して、キュー、ホスト、環境などの Grid Engine システムのオブジェクトを追加または変更する方法を説明します。
Grid Engine システムでのすべての管理作業の実行には、QMON グラフィカルユーザーインタフェースを使用できます。また、シェルプロンプトで入力し、シェルスクリプト内から呼び出すコマンドを介して、Grid Engine システムを管理することもできます。多くの経験豊富な管理者にとっては、ファイルとスクリプトを使用する方が、設定を変更するより柔軟、迅速、かつ強力な手段です。
ファイル内に作成した指定に従ってオブジェクトを追加するには、次のオプションを付けて qconf コマンドを使用します。
qconf -Ae qconf -Aq qconf -Au qconf -Ackpt qconf -Ap |
ファイル内に作成した指定に従ってオブジェクトを変更するには、次のオプションを付けて qconf コマンドを使用します。
qconf -Me qconf -Mq qconf -Mu qconf -Mckpt qconf -Mp |
–Ae および –Me オプションで、実行ホストの追加または変更を行います。
–Aq および –Mq オプションで、キューの追加または変更を行います。
–Au および –Mu オプションで、ユーザーセットの追加または変更を行います。
–Ackpt および –Mckpt オプションで、チェックポイント設定環境の追加または変更を行います。
–Ap および –Mp オプションで、並列環境の追加または変更を行います。
qconf –s コマンドとこれらのオプションを組み合わせて使用し、既存のオブジェクトを取得し、それを変更します。既存のオブジェクトを更新したり、新しいオブジェクトを作成することができます。
#!/bin/sh # ckptmod.sh: modify the migration command # of a checkpointing environment # Usage: ckptmod.sh <checkpoint-env-name> <full-path-to-command> TMPFILE=tmp/ckptmod.$$ CKPT=$1 MIGMETHOD=$2 qconf -sckpt $CKPT | grep -v '^migr_command' > $TMPFILE echo "migr_command $MIGMETHOD" >> $TMPFILE qconf -Mckpt $TMPFILE rm $TMPFILE
コマンド行から、個別のキュー、ホスト、並列環境、およびチェックポイント設定環境を変更することができます。そのほかのコマンドと組み合わせて qconf コマンドを使用します。
すでにファイルを用意している場合は、次のように適切なオプションを付けて qconf コマンドを入力します。
qconf -Me qconf -Mq qconf -Mckpt qconf -Mp |
ファイルを用意していない場合は、次のように適切なオプションを付けて qconf コマンドを入力します。
qconf -me qconf -mq qconf -mckpt qconf -mp |
–Me および –me オプションで、実行ホストを変更します。
–Mq および –mq オプションで、キューを変更します。
–Mckpt および –mckpt オプションで、チェックポイント設定環境を変更します。
–Mp および –mp オプションで、並列環境を変更します。
大文字の –M オプションと小文字の –m オプションの違いは、qconf コマンドの結果に影響します。–M と –m は両方とも「modify (変更)」を意味しますが、大文字の –M は既存のファイルからの変更を表すのに対し、小文字の –m は既存のファイルからの変更ではありません。その代わりに、小文字の –m は、エディタで一時ファイルを開きます。このファイルに対して行なった変更を保存し、エディタを終了すると、システムではこれらの変更がただちに反映されます。
ただし、多くのオブジェクトを一度に変更する場合や、対話形式を使用せずにオブジェクト構成を変更する場合は、オブジェクト属性を変更するオプション (–Aattr、–Mattr など) を付けて qconf コマンドを使用します。
次のコマンドは、ファイルでの指定に従って変更を行います。
qconf -Aattr {queue | exechost | pe | ckpt} filename qconf -Mattr {queue | exechost | pe | ckpt} filename qconf -Rattr {queue | exechost | pe | ckpt} filename qconf -Dattr {queue | exechost | pe | ckpt} filename |
次のコマンドは、コマンド行での指定に従って変更を行います。
qconf -aattr {queue | exechost | pe | ckpt} attribute value {queue-list | host-list} qconf -mattr {queue | exechost | pe | ckpt} attribute value {queue-list | host-list} qconf -rattr {queue | exechost | pe | ckpt} attribute value {queue-list | host-list} qconf -dattr {queue | exechost | pe | ckpt} attribute value {queue-list | host-list} |
–Aattr および –aattr オプションで、属性を追加します。
–Mattr および –mattr オプションで、属性を変更します。
–Rattr および –rattr オプションで、属性を置換します。
–Dattr および –dattr オプションで、属性を削除します。
filename は、属性値のペアが含まれるファイルの名前です。
attribute は、変更するキューまたはホストの属性です。
value は、変更する属性の値です。
–aattr、–mattr、および –dattr オプションを使用すると、値のリストにある個別の値を操作できます。–rattr オプションにより、値のリスト全体が、コマンド行またはファイルで指定した新しいリストに置き換えられます。
次のコマンドにより、tcf27–e019.q のキューの型が、バッチのみに変更されます。
% qconf -rattr queue qtype batch tcf27-e019.q |
次のコマンドでは、ファイル new.cfg を使用して、tcf27–e019.q のキューの型とシェル起動動作を変更します。
% cat new.cfg qtype batch interactive checkpointing shell_start_mode unix_behavior % qconf -Rattr queue new.cfg tcf27-e019.q |
次のコマンドにより、1000M の値を持つリソース属性 scratch1 と、2 の値を持つリソース属性 long が追加されます。
% qconf -rattr exechost complex_values scratch1=1000M,long=2 tcf27-e019 |
次のコマンドにより、リソース属性 short が、値 4 を持つホストに関連付けられます。
% qconf -aattr exechost complex_values short=4 tcf27-e019 |
次のコマンドにより、scratch1 の値が 500M に変更されますが、そのほかの値は変更されません。
% qconf -mattr exechost complex_values scratch-=500M tcf27-e019 |
次のコマンドにより、リソース属性 long が削除されます。
% qconf -dattr exechost complex_values long tcf27-e019 |
次のコマンドにより、チェックポイント設定環境 sph 用のキューのリストに、tcf27–b011.q が追加されます。
% qconf -aattr ckpt queue_list tcf27-b011.q sph |
次のコマンドにより、並列環境 make のスロット数が 50 に変更されます。
% qconf -mattr pe slots 50 make |
qselect コマンドにより、キューインスタンスのリストが出力されます。オプションを指定した場合、qselect では、ユーザーが指定した条件に一致するキューインスタンスのみが表示されます。qconf コマンドと qselect を組み合わせて使用すると、変更する特定のキューインスタンスの対象設定を行うことができます。
次のコマンドにより、Linux マシン上のすべてのキューインスタンスが表示されます。
% qselect -l arch=glinux |
次のコマンドにより、CPU を 2 つ搭載したマシン上のすべてのキューインスタンスが表示されます。
% qselect -l num_proc=2 |
次のコマンドにより、CPU を 4 つ搭載した 64 ビットの全 Solaris マシン上のすべてのキューインスタンスが表示されます。
% qselect -l arch=solaris64,num_proc=4 |
次のコマンドにより、アプリケーションライセンスを提供するキューインスタンスが表示されます。キューインスタンスは、事前に構成されています。
% qselect -l app_lic=TRUE |
qselect と qconf を組み合わせることで、1 つのコマンド行を使用して広範囲の変更を行うことができます。このためには、qselect コマンド全体を逆引用符 (` `) 内に入れ、それを qconf コマンド行の queue-list 変数の位置で使用します。
次のコマンドにより、Solaris マシン上のすべてのキューインスタンスで、prolog スクリプトが sol_prolog.sh に設定されます。
% qconf -mattr queue prolog /usr/local/scripts/sol_prolog.sh `qselect -l arch=solaris` |
次のコマンドにより、2 プロセッサシステム上のすべてのキューインスタンスで、属性 fluent_license が 2 に設定されます。
% qconf -mattr queue complex_values fluent_license=2 `qselect -l num_proc=2` |
キューインスタンスの構成を自動化するもっとも柔軟性が高い方法は、qconf コマンドと qselect コマンドを併用する方法です。これらのコマンドを組み合わせることで、独自のカスタム管理スクリプトを構築できます。
グローバル構成を変更するには、qconf –mconf コマンドを使用します。スケジューラを変更するには、qconf –msconf コマンドを使用します。
これらのコマンドにより、いずれもエディタで一時ファイルが開かれます。エディタを終了すると、この一時ファイルに保存したすべての変更がシステムにより処理され、ただちに変更が有効になります。一時ファイルを開くのに使用されるエディタは、EDITOR 環境変数により指定されたエディタです。 この変数が定義されていない場合、デフォルトでは vi エディタが使用されます。
EDITOR 環境変数を使用すると、qconf コマンドの動作を自動化できます。この変数の値を変更して、最初の引数により名前が指定されているファイルを変更するエディタプログラムを指定します。エディタで一時ファイルを変更し、エディタを終了すると、システムにより変更が読み込まれ、変更はただちに有効になります。
エディタ操作のあとファイルの変更時間が変更されないと、システムでは誤って、そのファイルが変更されなかったとみなされる場合があります。そのため、変更時間を異なるようにするため、ファイルに書き込む前に sleep 1 命令を挿入する必要があります。
この手法は、あらゆる qconf –m... コマンドに使用できます。特にスケジューラとグローバル構成の管理に便利です。これは、別の方法では手続きを自動化できないためです。
次の例では、スケジューラのスケジュール間隔を変更します。
#!/bin/ksh # sched_int.sh: modify the schedule interval # usage: sched_int.sh <n>, where <n> is # the new interval, in seconds. n < 60 TMPFILE=/tmp/sched_int.$$ if [ $MOD_SGE_SCHED_INT ]; then grep -v schedule_interval $1 > $TMPFILE echo "schedule_interval 0:0:$MOD_SGE_SCHED_INT" >> $TMPFILE # sleep to ensure modification time changes sleep 1 mv $TMPFILE $1 else export EDITOR=$0 export MOD_SGE_SCHED_INT=$1 qconf -msconf fi |
このスクリプトは、自分自身を指定するよう EDITOR 環境を変更します。続いてスクリプトは qconf –msconf コマンドを呼び出します。この 2 番目のスクリプトの入れ子呼び出しは、最初の引数により指定された一時ファイルを変更してから終了します。Grid Engine システムにより自動的に変更が読み込まれ、スクリプトの最初の呼び出しが終了します。