Sun N1 Grid Engine 6.1 管理ガイド

管理作業用のファイルとスクリプトの使用法

この節では、ファイルとスクリプトを使用して、キュー、ホスト、環境などの 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 コマンドとこれらのオプションを組み合わせて使用し、既存のオブジェクトを取得し、それを変更します。既存のオブジェクトを更新したり、新しいオブジェクトを作成することができます。


例 8–1 チェックポイント環境の移動コマンドの変更

#!/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 コマンドを使用します。

–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 オプションにより、値のリスト全体が、コマンド行またはファイルで指定した新しいリストに置き換えられます。


例 8–2 キューの型の変更

次のコマンドにより、tcf27–e019.q のキューの型が、バッチのみに変更されます。


% qconf -rattr queue qtype batch tcf27-e019.q


例 8–3 キューの型とシェル起動動作の変更

次のコマンドでは、ファイル 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


例 8–4 リソース属性の追加

次のコマンドにより、1000M の値を持つリソース属性 scratch1 と、2 の値を持つリソース属性 long が追加されます。


% qconf -rattr exechost complex_values scratch1=1000M,long=2 tcf27-e019


例 8–5 リソース属性のホストへの関連付け

次のコマンドにより、リソース属性 short が、値 4 を持つホストに関連付けられます。


% qconf -aattr exechost complex_values short=4 tcf27-e019


例 8–6 リソース値の変更

次のコマンドにより、scratch1 の値が 500M に変更されますが、そのほかの値は変更されません。


% qconf -mattr exechost complex_values scratch-=500M tcf27-e019


例 8–7 リソース属性の削除

次のコマンドにより、リソース属性 long が削除されます。


% qconf -dattr exechost complex_values long tcf27-e019


例 8–8 チェックポイント設定環境用のキューのリストへのキューの追加

次のコマンドにより、チェックポイント設定環境 sph 用のキューのリストに、tcf27–b011.q が追加されます。


% qconf -aattr ckpt queue_list tcf27-b011.q sph


例 8–9 並列環境でのスロット数の変更

次のコマンドにより、並列環境 make のスロット数が 50 に変更されます。


% qconf -mattr pe slots 50 make

qselect コマンドを使用したキューインスタンスの対象設定

qselect コマンドにより、キューインスタンスのリストが出力されます。オプションを指定した場合、qselect では、ユーザーが指定した条件に一致するキューインスタンスのみが表示されます。qconf コマンドと qselect を組み合わせて使用すると、変更する特定のキューインスタンスの対象設定を行うことができます。


例 8–10 キューの表示

次のコマンドにより、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

qselectqconf を組み合わせることで、1 つのコマンド行を使用して広範囲の変更を行うことができます。このためには、qselect コマンド全体を逆引用符 (` `) 内に入れ、それを qconf コマンド行の queue-list 変数の位置で使用します。


例 8–11 qconf コマンドでの qselect の使用法

次のコマンドにより、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... コマンドに使用できます。特にスケジューラとグローバル構成の管理に便利です。これは、別の方法では手続きを自動化できないためです。


例 8–12 スケジュール間隔の変更

次の例では、スケジューラのスケジュール間隔を変更します。


#!/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 システムにより自動的に変更が読み込まれ、スクリプトの最初の呼び出しが終了します。