Sun N1 Grid Engine 6.1 ユーザーズガイド

第 4 章 ジョブとキューの監視と制御

ジョブの発行後は、ジョブを監視および制御をする必要があります。この章には、ジョブとキューの監視と制御に関する内容説明およびこれらのタスクの実行手順が記載されています。また、チェックポイントの設定に関する情報も紹介します。

この章では、次の作業の手順を紹介します。

ジョブの監視と制御

発行したジョブは、次の 3 つの方法で監視および制御することができます。

これらの各方法については、次の節で説明します。

QMON を使用したジョブの監視と制御

QMON Job Control」ダイアログボックスを使用して、ジョブを制御できます。

発行したジョブの監視と制御を行うには、「QMON Main Control」ウィンドウで「Job Control」ボタンをクリックします。「Job Control」ダイアログボックスが表示されます。

「Job Control」ダイアログボックスには 、実行中のジョブのタブ (「Running Jobs,」)、適切なリソースへ振り分けられるのを待っている保留ジョブのタブ (「Pending Jobs」)、および最近終了したジョブのタブ (「Finished Jobs」) の 3 つのタブがあります。

「Submit」ボタンは、「Submit Job」ダイアログボックスへのリンクを提供します。

「Job Control」ダイアログボックスを使用すると、システムが認識している実行中のジョブ、保留中のジョブおよび終了ジョブをすべて監視できます。また、このダイアログボックスはジョブの管理にも使用できます。ジョブの優先順位を変更することができ、ジョブの一時停止、再開、および取り消しも実行できます。

デフォルト形式の「Job Control」ダイアログボックスでは、実行中および保留中の各ジョブに対して次の列が表示されます。

形式をカスタマイズすると、デフォルトの表示を変更できます。詳細は、「「Job Control」ディスプレイのカスタマイズ」を参照してください。

「Job Control」ディスプレイの再表示

表示される情報を最新の状態に保つため、QMON はポーリング方式でジョブのステータスを sge_qmaster から取り出します。「Job Control」ディスプレイの再表示を強制的に行うには、「Refresh」をクリックしてください。

ジョブの選択

ジョブは、次のマウス操作やキーの組み合わせで選択できます。

フィルタを使用して、表示するジョブを選択することもできます。詳細は、「ジョブリストのフィルタリング」を参照してください。

ジョブの管理

ダイアログボックスの右側のボタンを使用して、選択したジョブを次のように管理できます。

ジョブの所有者または Grid Engine 管理者およびオペレータだけが、ジョブの一時停止、再開、削除、待機、およびジョブの優先順位の変更とジョブの変更を実行できます。「管理者、オペレータ、および所有者」を参照してください。一時停止または再開できるのは実行中のジョブだけです。再スケジューリングしたり、待機させたり、優先順位やその他の属性を変更できるのは、保留中のジョブだけです。

ジョブを一時停止すると、UNIX の killコマンドによってジョブの処理グループに SIGSTOP 信号が送信されます。SIGSTOP はジョブを停止し、CPU 時間を消費しなくなります。ジョブを再開すると、 SIGCONT 信号が送信され、これによってジョブの一時停止が解除されます。信号処理プロセスについては、お使いのシステムの kill(1) のマニュアルページを参照してください。


注 –

ジョブの一時停止、再開、および削除は、強制的に実行できます。言い換えれば、そのジョブを制御する sge_execd に通知せずに、sge_qmaster を使用して、これらの処理を登録できます。強制実行は、たとえばネットワーク問題が原因で対応する sge_execd を実行できない場合に有効です。この操作を行うには、「Force」オプションを選択してください。


現在実行中のジョブを再スケジューリングするには、「Reschedule」をクリックします。

ジョブの待機

ジョブを待機させるには、保留中のジョブを選択し、「Hold」をクリックします。「Set Hold」ダイアログボックスが表示されます。

「Set Hold」ダイアログボックスでは、ユーザー、オペレータおよびシステムを待機させたり、待機状態をリセットしたりすることができます。ユーザーの待機を設定およびリセットできるのは、ジョブの所有者および Grid Engine 管理者とオペレータです。オペレータの待機を設定およびリセットできるのは、管理者とオペレータです。システムの待機を設定およびリセットできるのは、管理者だけです。ジョブになんらかの種類の待機が割り当てられている間は、ジョブを実行することはできません。qalterqhold、および qrls コマンドを使用して、待機を設定したり解除したりすることもできます。

配列ジョブのタスクの待機

「Set Hold」ダイアログボックスの「Tasks」フィールドは、配列ジョブに適用されます。配列ジョブの特定のサブタスクを待機状態にするには、このボタンを使用します。「Tasks」フィールドのテキスト書式に注意してください。このフィールドで指定するタスク ID 範囲は、数字 1 つの場合、n-m という書式の単純な範囲の場合、または指定された間隔で数字を使用する範囲の場合があります。たとえば、2-10:2 と指定されたタスク ID 範囲には、タスク ID インデックス 2、4、6、8 および 10 が含まれます。この範囲は 5 つの同質のタスクの合計を表し、環境変数 SGE_TASK_ID には 5 つのインデックス番号のいずれかが含まれます。ジョブの待機の詳細は、 qsub(1) のマニュアルページを参照してください。

ジョブの優先順位の変更

「Job Control」ダイアログボックスの「Priority」をクリックすると、次のダイアログボックスが表示されます。

このダイアログボックスでは、選択した保留中または実行中のジョブの新しい優先順位を入力できます。優先順位は、1 人のユーザーのジョブ間でのジョブの順番です。優先順位によって、同時に複数のジョブがシステム内に存在する場合に、どのようにして 1 人のユーザーのジョブから選択を行うかがスケジューラに伝えられます。

保留中のジョブを選択して「Qalter」をクリックすると、「Submit Job」ウィンドウが表示されます。ダイアログボックスのすべてのエントリは、ジョブの発行時に定義されたジョブの属性に従って設定されます。変更できないエントリはグレー表示されます。その他のエントリは編集できます。変更は、「Submit Job」ダイアログボックスの「Qalter」をクリックすると、Grid Engine システムに登録されます。「Qalter」ボタンは 「Submit」ボタンの代わりとして使用できます。

ジョブの一貫性の確認

「Submit Job」ダイアログボックスの「Verify」フラグは、Qalter モードで使用される場合、特別な意味を持ちます。保留中のジョブの一貫性をチェックしたり、ジョブがスケジューリングされていない理由を調べることができます。「Verify」フラグに対して設定する一貫性チェックモードを選択したあと、「Qalter」をクリックしてください。選択したチェックモードによって、一貫性のない場合は警告が表示されます。詳細は、QMON による高度なジョブの発行」および qalter(1) のマニュアルページの -w オプションを参照してください。

「Why?」ボタンを使用した保留中のジョブ情報の取得

ジョブが保留中である理由をチェックするもう 1 つの方法は、ジョブを選択して「Job Control」ダイアログボックスの「Why?」をクリックすることです。これにより、「Object Browser」ダイアログボックスが開きます。このダイアログボックスには、スケジューラが最新のパス内のジョブの割り振りを行わない理由のリストが表示されます。このようなメッセージが表示された「Browser」ウィンドウの例を次の図に示します。

「Why?」 ボタンが意味のある出力を行うのは、スケジューラ構成パラメータ schedd_job_infotrue に設定されている場合だけです。sched_conf(5) のマニュアルページを参照してください。表示されたスケジューラ情報は、最後のスケジューリング間隔に関するものです。この情報は、ジョブがスケジューリングされなかった理由を調べるまで正しくない可能性があります。

エラー状態のクリア

ジョブに依存する問題が原因で失敗した保留中のジョブのエラー状態を削除するには、「Clear Error」をクリックします。たとえば、ジョブが指定されたジョブ出力ファイルへの十分な書き込み権を持ってない場合などにエラーが発生します。

エラー状態は、保留中のジョブリスト内に赤いフォントで表示されます。ジョブは、たとえば qalter などでエラー状態を修正したあとに削除してください。ジョブの中止時には電子メールを送信するようにジョブが要求している場合、前記のようなエラー状態は電子メールで自動的に報告されます。たとえば、qsub -m a コマンドなどでジョブが中止されている場合があります。

「Job Control」ディスプレイのカスタマイズ

デフォルトの「Job Control」ディスプレイをカスタマイズするには、「Customize」をクリックします。「Job Customize」ダイアログボックスが表示されます。「Select Job Fields」タブをクリックします。次の図は、「Select Job Fields」タブの表示例です。

「Job Customize」ダイアログボックスを使用して、表示する情報を設定します。

「Job Customize」ダイアログボックスでは、ジョブオブジェクトのエントリをより多く選択して、表示できます。また、必要なジョブのフィルタリングも可能です。上の図の例では、「Projects」、「Tickets」、および「Submit Time」という追加フィールドが選択されています。

次の図には、「Finished Jobs」リストにカスタマイズが適用されたあとの拡張された外観を表示しています。

カスタマイズ設定を .qmon_preferences ファイルに保存するには、「Customize Job」ダイアログボックスの「Save」ボタンを使用します。このファイルはユーザーのホームディレクトリに保存されています。カスタマイズ設定を保存すると、「Job Control」ダイアログボックスの見た目が再定義されます。

ジョブリストのフィルタリング

次の例のフィルタリング機能では、アーキテクチャー solaris64 での実行に適した aa114085 が所有するジョブだけを選択します。

「Job Control」ダイアログボックスの「Running Jobs」タブのフィルタリング結果を次の図に示します。

上の図の「Job Control」ダイアログボックスは、QMON によって配列ジョブがどのように表示されるかの例でもあります。

QMON の Object Browser によるジョブの追加情報の取得

QMON を使用したジョブの監視と制御」 に説明されているとおり、QMON Object Browser を使用すると、「Job Control」ダイアログボックスをカスタマイズせずに、ジョブの追加情報をすばやく取り出すことができます。

ジョブに関する情報を表示する Object Browser は、次の 2 つの方法で開けます。

次の「Browser」ウィンドウに、表示されるジョブ情報の例を示します。

コマンド行からのジョブの監視と制御

この節では、コマンド qstat qdel、および qmod によるコマンド行からのジョブの監視、削除、および変更方法について説明します。

qstat によるジョブの監視

ジョブを監視するには、次の節で詳述されている情報を参考に、次のコマンドのいずれかを入力します。


qstat
qstat -f
qstat -ext

オプションのない qstat では、発行したジョブだけの概要が提供されます。qstat -f では、さらに現在構成されているキューに関する情報も含まれます。qstat -ext を指定すると、ジョブの使用率の最新情報やジョブに割り当てられたチケットなどの詳細も含まれます。

最初の書式では、ヘッダ行が列の意味を示します。ほとんどの列の目的は、それ自体で説明できなければなりません。ただし、「state」列には次の意味の 1 文字のコードが含まれます。実行中は r、一時停止は s 、キュー内は q、待機は w で表されます。qstat の出力形式の詳細は、qstat(1) のマニュアルページを参照してください。

2 番目の書式は 2 つのセクションに分けられます。1 番目のセクションは、すべての使用可能なキューのステータスを表示します。PENDING JOBS というタイトルの 2 番目のセクションは、 sge_qmaster ジョブスプール空間のステータスを表示します。キューセクションの 1 行目では、リストされているキューに対する列の意味が定義されています。キューは水平線で区切られています。キュー内でジョブが実行される場合、1 番目の書式の qstat コマンドと同じ書式で、関連するキューの下にそのジョブ名が表示されます。2 番目の出力セクションの保留中のジョブは、qstat の 1 番目の書式と同じように表示されます。

キュー説明の列は、次の情報を提供します。

qstat(1) のマニュアルページにはqstat の出力形式の詳しい説明が記載されています。

3 番目の形式では、使用率およびジョブに割り当てられたチケットの値が次の列に表示されます。

さらに、期限の開始時が適宜「deadline」列に表示されます。「share」列には、クラスタ内のすべてのジョブによって発生する使用量を基準にした各ジョブの現在のリソース配分が示されます。詳細は、qstat(1) のマニュアルページを参照してください。

qstat コマンドのさまざまな追加オプションは、機能性を拡張します。発行したジョブのリソース要件を表示するには、-r オプションを使用します。さらに、出力を特定のユーザーまたはキューに限定することもできます。「リソース要件の定義」で説明されているとおり、-l オプションを使用して qsub コマンドのリソース要件を指定できます。リソース要件を使用すると、qstat によって指定されたリソース要件に一致するキューおよびそれらのキューで実行されているジョブだけが表示されます。


注 –

qstat コマンドは、管理者およびユーザーが有用なオプションを含めたファイルを定義できるように拡張されました。sge_qstat(5) のマニュアルページを参照してください。クラスタ全体の sge_qstat ファイルは、 $xxQS_NAME_Sxx_ROOT/$xxQS_NAME_Sxx_CELL/common/sge_qstat に置くことができます。ユーザー専用のファイルは、$HOME/.sge_qstat で処理されます。ホームディレクトリ要求ファイルの優先順位がもっとも高く、次がクラスタグローバルファイルです。コマンド行を使用すると、ファイルに指定したフラグよりも優先されます。


例 4–1例 4–2 に、qstatqstat -f コマンドの出力例を示します。


例 4–1 qstat -f の出力例


queuename                  qtype  used/free   load_avg   arch         states     

dq                         BIP    0/1         99.99      sun4         au     

durin.q                    BIP    2/2         0.36       sun4          
  231     0    hydra              craig       r          07/13/96     20:27:15    MASTER
  232     0    compile            penny       r          07/13/96     20:30:40    MASTER

dwain.q                    BIP    3/3         0.36       sun4          
  230     0    blackhole          don         r          07/13/96     20:26:10    MASTER
  233     0    mac                elaine      r          07/13/96     20:30:40    MASTER
  234     0    golf               shannon     r          07/13/96     20:31:44    MASTER

fq                         BIP    0/3         0.36       sun4          

################################################################################

- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS -

################################################################################

  236     5    word               elaine      qw         07/13/96     20:32:07

  235     0    andrun             penny       qw         07/13/96     20:31:43


例 4–2 qstat の出力例


job-ID   prior   name         user      state   submit/start at     queue      function
231      0       hydra        craig     r       07/13/96            durin.q    MASTER 
                                                20:27:15
232      0       compile      penny     r       07/13/96            durin.q    MASTER 
                                                20:30:40
230      0       blackhole    don       r       07/13/96            dwain.q    MASTER 
                                                20:26:10
233      0       mac          elaine    r       07/13/96            dwain.q    MASTER 
                                                20:30:40
234      0       golf         shannon   r       07/13/96            dwain.q    MASTER 
                                                20:31:44
236      5       word         elaine    qw      07/13/96           
                                                20:32:07
235      0       andrun       penny     qw      07/13/96 20:31:43 

qdel および qmod によるジョブの制御

コマンド行からジョブを制御するには、次のいずれかのコマンドに適切な引数を指定して実行します。


% qdel arguments
% qmod arguments

ジョブが実行中なのかスプール状態なのかに関わらず、ジョブを取り消すには qdel コマンドを使用します。すでに実行中のジョブを一時停止および再開 (一時停止を解除) するには、qmod コマンドを使用します。

両方のコマンドでジョブ識別番号が必要です。ジョブ識別番号は、qsub コマンドを正常に実行すると返されます。番号を忘れた場合は、qstat で取り出すことができます。qstat によるジョブの監視」を参照してください。

次のリストに、qdel および qmod コマンドの例をいくつか示します。


% qdel job-id
% qdel -f job-id1, job-id2
% qmod -s job-id
% qmod -us -f job-id1, job-id2
% qmod -s job-id.task-id-range

ジョブを削除、一時停止、または再開するには、ジョブの所有者、Grid Engine 管理者、またはオペレータでなければなりません。「管理者、オペレータ、および所有者」を参照してください。

どちらのコマンドでも、-f (force) オプションを使用すると、sge_execd に影響することなくジョブステータスの変更を sge_qmaster に登録することができます。強制実行オプションは、たとえばネットワーク問題などが原因で sge_execd を実行できない場合などに使用してください。 -f オプションは、管理者だけが使用できます。ただし、 qdel でクラスタ構成 qmaster_params エントリの ENABLE_FORCED_QDEL フラグが設定されている場合は、自分自身のジョブは強制削除することができます。詳細は、sge_conf(5) のマニュアルページを参照してください。

電子メールによるジョブの監視

コマンド行から、適切な引数を指定して次のコマンドを入力します。


% qsub arguments

qsub -m コマンドは、特定のイベントが発生するとジョブを発行したユーザーまたは -M フラグで指定されたアドレスに電子メールを送信するように要求します。フラグの説明については、qsub(1) のマニュアルページを参照してください。-m オプションの引数は、イベントを指定します。次の 引数が使用可能です。

-m オプションでこれらのオプションのいくつかを指定するには、1 つ以上の文字引数で構成された文字列を使用してください。たとえば、 -m be と指定すると、電子メールはジョブの開始時と終了時に送信されます。

「Submit Job」ダイアログボックスを使用して、これらのメールイベントを設定することもできます。QMON による高度なジョブの発行」を参照してください。

キューの監視と制御

「キューとキュープロパティーの表示」の説明どおり、キューの所有者はキューの一時停止や再開および無効化や有効化を行う権限を持っています。所有者は、重要な作業に特定のマシンが必要で、これらのマシンが背景で実行されているジョブの影響を強く受ける場合に、キューを一時停止したり無効にしたりする場合があります。

キューは 2 つの方法で制御できます。

QMON によるキューの監視と制御

QMON Main Control」ウィンドウで「Queue Control」ボタンをクリックします。「Cluster Queues」ダイアログボックスが表示されます。

クラスタキューの監視と制御

「Cluster Queue」タブには、クラスタに対して定義したすべてのクラスタキューの簡単な概要が示されます。また「Cluster Queue」タブでは、クラスタキューを一時停止および再開させたり、クラスタキューを有効または無効にしたり、クラスタキューを構成したりすることもできます。

「Cluster Queue」ダイアログボックスに表示される情報は、定期的に更新されます。更新を強制的に行うには、「Refresh」をクリックしてください。クラスタキュー名をクリックして、キューを選択します。

「Delete」、「Suspend」、「Resume」、「Disable」、または「Enable」をクリックして、対応する操作を選択したクラスタキューに対して実行します。一時停止/再開および無効化/有効化操作では、対応する sge_execd へ通知を行う必要があります。通知できない場合は、「Force」をクリックして、sge_qmaster 内部ステータスを強制的に変更できます。たとえば、ホストが休止している場合は通知を行えません。

一時停止/再開および無効化/有効化操作は、クラスタキュー所有者権限、Grid Engine 管理者権限またはオペレータ権限が必要です。詳細は、「管理者、オペレータ、および所有者」を参照してください。

一時停止したクラスタキューにさらにジョブを追加することはできません。QMON を使用したジョブの監視と制御」の説明どおり、一時停止したキュー内ですでに実行されていたジョブも一時停止されます。キューが再開されるとすぐ、クラスタキューとジョブの一時停止も解除されます。


注 –

一時停止したクラスタキュー内のジョブが明示的に一時停止されている場合は、キューが再開されても、そのジョブは再開されません。明示的に一時停止したジョブは、明示的に再開する必要があります。


無効にされたクラスタキューは閉じられています。ただし、これらのキュー内の実行中のジョブは続行できます。クラスタキューは通常、キューを「排出」するために無効にされます。クラスタキューを有効にしたあとは、ジョブを再度実行できます。現在実行中のジョブに対する処理は行われません。

エラー状態は、キューリスト内に赤いフォントを使用して表示されます。キューからエラー状態を削除するには、「Clear Error」をクリックします。

選択されたクラスタキュー内の現在実行中のすべてのジョブを再スケジューリングするには、「Reschedule」をクリックします。

クラスタキューとキューインスタンスを構成するには、「Cluster Queue」ダイアログボックスの「Add」または「Modify」をクリックします。詳細は、『Sun N1 Grid Engine 6.1 管理ガイド』「QMON を使用したキューの構成」を参照してください。

ダイアログボックスを閉じるには、「Done」をクリックしてください。

クラスタキューのステータス

クラスタキューテーブルの各行は、1 つのクラスタキューを表します。各クラスタキューについて、テーブルは次の情報を一覧表示します。

クラスタキューおよびそれらの状態については、qstat(1) のマニュアルページを参照してください。

キューインスタンスの監視と制御

「Queue Instances」タブでは、選択したクラスタキューに関連するすべてのキューインスタンスの簡単な概要が示されます。また「Queue Instance」タブでは、キューインスタンスを一時停止、再開、無効化、および有効化することもできます。

クラスタキュー名をクリックして、キューインスタンスを選択します。

「Suspend」、「Resume」、「Disable」、または「Enable」をクリックして、対応する操作を選択したキューインスタンスに対して実行します。一時停止/再開および無効化/有効化操作では、対応する sge_execd へ通知を行う必要があります。たとえばホストに到達不可能で、通知ができない場合は、「Force」をクリックして sge_qmaster 内部ステータスを強制的に変更できます。

一時停止/再開および無効化/有効化操作は、キュー所有者権限、Grid Engine 管理者権限またはオペレータ権限が必要です。「管理者、オペレータ、および所有者」を参照してください。

一時停止したキューインスタンスにさらにジョブを追加することはできません。QMON を使用したジョブの監視と制御」の説明どおり、一時停止したキューインスタンス内ですでに実行中となっていたジョブも一時停止されます。キューインスタンスが再開されるとすぐ、キューインスタンスとジョブの一時停止も解除されます。


注 –

一時停止したキューインスタンス内のジョブが明示的に一時停止されている場合は、キューインスタンスが再開されても、そのジョブは再開されません。明示的に一時停止したジョブは、明示的に再開する必要があります。


無効になったキューインスタンスは閉じられます。ただし、キューインスタンス内の実行中のジョブは続行できます。キューインスタンスは通常、キューインスタンスを「排出する」ために無効にされます。キューインスタンスを有効にしたあとは、ジョブを再実行できます。現在実行中のジョブに対する処理は行われません。

キューインスタンスのステータス

キューインスタンステーブルの各行は、1 つのキューインスタンスを表します。各キューインスタンスについて、テーブルは次の情報を一覧表示します。

キュー状態のリストについては、「クラスタキューのステータス」を参照してください。キューインスタンスおよびそれらの状態については、qstat(1) のマニュアルページを参照してください。

キューインスタンス属性の表示

キューインスタンスの現在の属性情報、負荷情報、およびリソース消費情報を取り出すには、キューインスタンスを選択して「Load」をクリックします。この情報には、キューインスタンスのホストとなっているマシンの情報も暗黙に含まれています。次の図のウィンドウが表示されます。

「Attribute」列では、ホストまたはグローバルクラスタから継承される属性を含む、キューインスタンスに付けられるすべての属性が一覧表示されます。

「Slot-Limits/Fixed Attributes」列では、キューインスタンススロット制限単位または固定リソース属性として定義される属性の値が表示されます。

「Load(scaled)/Consumable」列では、報告された負荷パラメータや拡張された負荷パラメータに関する情報が表示されます。この列ではまた、消費可能なリソース機能を基準にした使用可能なリソース機能に関する情報も表示されます。『Sun N1 Grid Engine 6.1 管理ガイド』「負荷パラメータ」『Sun N1 Grid Engine 6.1 管理ガイド』「消費可能リソース」を参照してください。

負荷属性が消費可能なリソースとして構成されている場合、負荷レポートと消費可能な容量は、互いに無効にしあう恐れがあります。ジョブ割り振りアルゴリズムで使用される両方の最小値が表示されます。


注 –

表示されている負荷および消費可能な値では現在、「実行ホスト」の説明どおり負荷調整の修正は考慮されていません。


クラスタキューおよびキューインスタンスのフィルタリング

「Customize」ボタンを使用すると、表示するクラスタキューとキューインスタンスをフィルタリングできます。

次の 図では、現在の構成があいまいなキューインスタンスだけがフィルタリングで選択されています。

「Queue Customize」ダイアログボックスの「Save」をクリックして、ホームディレクトリの .qmon_preferences ファイルに設定を保存し、あとで QMON を呼び出したときの標準的な再起動で使用できるようにします。

qmod によるキューの制御

qmod コマンドを使用して、キューを一時停止および再開することができます。qmod を使用して、キューを無効または有効にすることもできます。

次のコマンドは qmod の使用方法を表しています。


% qmod -s q-name
% qmod -us -f q-name1, q-name2
% qmod -d q-name
% qmod -e q-name1, q-name2, q-name3

qmod –s は、キューを一時停止します。qmod –us –f は、2 つのキューを再開 (一時停止を解除) します。qmod –d は、キューを無効にします。qmod –e は、3 つのキューを有効にします。

-f オプションは、たとえばネットワーク問題などが原因で対応する sge_execd を実行できない場合に、ステータスの変更を sge_qmaster に強制的に登録します。

キューの一時停止と再開および キューの無効化と有効化では、所有者権限、管理者権限またはオペレータ権限が必要です。「管理者、オペレータ、および所有者」を参照してください。


注 –

qmod コマンドは、crontab または at ジョブで使用できます。


ジョブチェックポイント設定の使用

この節では、ユーザーレベルとカーネルレベルの 2 種類のジョブチェックポイント設定について検討します。

ユーザーレベルのチェックポイント設定

多くのアプリケーションプログラム、特にかなりの CPU 時間を消費するプログラムでは、フォールトトレランスを高めるためにチェックポイント設定および再起動メカニズムが使用されます。処理データのステータス情報と重要部分は、アルゴリズムのある段階で 1 つ以上のファイルに繰り返し書き込まれます。アプリケーションが中止された場合、これらの再開ファイルを処理してあとで再起動することができます。ファイルは、チェックポイントの直前の状況に相当する一貫性のある状態に戻ります。ほとんどの場合、ユーザーは再開ファイルを適切な場所に移動する必要があるので、この種のチェックポイント設定はユーザーレベルの チェックポイント設定と呼ばれます。

統合されたユーザーレベル チェックポイント設定を持たないアプリケーションプログラムは、チェックポイント設定ライブラリを使用できます。チェックポイント設定ライブラリは、ハードウェアベンダーまたはパブリックドメインによって提供される場合があります。University of Wisconsin の Condor プロジェクトはこの一例です。アプリケーションをこのライブラリと再リンクすることによって、チェックポイント設定メカニズムは、ソースコードを変更せずにアプリケーションにインストールできます。

カーネルレベルのチェックポイント設定

オペレーティングシステムによっては、オペレーティングシステムのカーネルの内部でチェックポイント設定をサポートしているものもあります。この場合、アプリケーションプログラムでの準備やアプリケーションの再リンクは必要ありません。カーネルレベルのチェックポイント設定は、通常 1 つのプロセスやプロセス階層全体に適用されます。それぞれのプロセスの階層にチェックポイントを設定して、いつでも再起動することができます。通常、チェックポイントの開始にはユーザーコマンドと C ライブラリインタフェースの両方が使用できます。

Grid Engine システムは、オペレーティングシステムによるチェックポイント設定も適宜サポートしています。現在サポート対象のカーネルレベルのチェックポイント設定機能については、N1 Grid Engine 6.1 ソフトウェアのリリースノートを参照してください。

チェックポイント設定ジョブの移行

再起動機能によって実行済みの作業を繰り返す必要はほとんどないので、チェックポイント設定ジョブはいつでも割り込みできます。この機能は、Grid Engine システムで移行および動的負荷均衡メカニズムを構築するために使用されます。要求があれば、チェックポイント設定ジョブはオンデマンドで中止されます。ジョブは Grid Engine システムのほかのマシンに移行されるので、クラスタ内の負荷は動的に平均化されます。チェックポイント設定ジョブが中止され移行される理由は、次のとおりです。

ジョブを移行すると、sge_qmaster に戻ります。別の適切なキューを使用できる場合、ジョブは続けてそのキューに割り振られます。この場合、qstat の出力は R をステータスとして示します。

チェックポイント設定ジョブスクリプトの作成

カーネルレベル チェックポイント設定のシェルスクリプトは、通常のシェルスクリプトと同じです。

ユーザーレベルのチェックポイント設定ジョブのシェルスクリプトは、再起動プロセスを適切に処理できるところだけが通常のバッチスクリプトと異なります。環境変数 RESTARTED は、再開されたチェックポイント設定ジョブに対して設定されます。初めて呼び出す場合だけ実行する必要があるジョブ スクリプトのセクションをスキップするために、この変数を使用してください。

例 4–3 に、透過的なチェックポイント設定ジョブのスクリプト例を示します。


例 4–3 チェックポイント設定ジョブスクリプトの例


#!/bin/sh
# Grid Engine の /bin/sh を強制実行します。
#$ -S /bin/sh

# 再起動したか移行したかをテストします。
if [ $RESTARTED = 0 ]; then
     # 0 = not restarted
     # Parts to be executed only during the first
     # start go in here
     set_up_grid
fi

# チェックポイント実行可能ファイルの起動
fem
#スクリプトファイルの終了

ユーザーレベルのチェックポイント設定ジョブが移行されると、ジョブスクリプトは最初から再開されます。シェルスクリプトのプログラムの流れをジョブが割り込まれた場所に導くのはユーザーの役目です。これにより、複数回実行する必要があるスクリプト内の行がスキップされます。


注 –

カーネルレベルのチェックポイント設定ジョブはいつでも割り込みできます。周りのシェルスクリプトは、最後にチェックポイントが設定された正確な場所から再開されます。したがって、RESTARTED 環境変数は、カーネルレベルのチェックポイント設定ジョブには影響しません。


コマンド行からのチェックポイント設定ジョブの発行、監視、または削除

適切なオプションを指定して次のコマンドを入力してください。


# qsub options arguments

チェックポイント設定ジョブの発行は、qsub -ckpt および qsub -c コマンドを除いて通常のバッチスクリプト同様に行われます。これらのコマンドには、チェックポイント設定メカニズムが必要です。これらのコマンドは、ジョブに対してチェックポイントを設定しなければならない場面も定義します。

-ckpt オプションでは、使用するチェックポイント設定環境の名前を示す引数が使用されます。『Sun N1 Grid Engine 6.1 管理ガイド』「チェックポイント設定環境の構成」を参照してください。

-c オプションは必要ありません。-c でも 1 つの引数が使用されます。チェックポイント設定環境構成の when パラメータの定義を無効にする場合は、-c オプションを使用してください。詳細は、checkpoint(5) のマニュアルページを参照してください。

-c オプションの引数は、次の 1 文字のいずれか、またはこれらの組み合わせです。引数は時間値の場合もあります。

チェックポイント設定ジョブの監視は、通常のジョブの監視とは異なります。チェックポイント設定ジョブは適宜移行できます。したがって、チェックポイント設定ジョブは 1 つのキューと結合しているわけではありません。ただし、一意のジョブ識別番号とジョブ名は変わりません。

チェックポイント設定ジョブの削除は、「コマンド行からのジョブの監視と制御」の説明どおりに行われます。

QMON によるチェックポイント設定ジョブの発行

QMON によるチェックポイント設定ジョブの発行は通常のバッチジョブの発行と同じで、さらに適切なチェックポイント設定環境も指定できます。QMON による高度なジョブの発行」の説明どおり、「Submit Job」ダイアログボックスはジョブと関連付けられるチェックポイント設定環境のフィールドを提供します。フィールド横のボタンをクリックして、次の選択ダイアログボックスを開きます。

使用可能なチェックポイントオブジェクトのリストから適切なチェックポイント環境を選択できます。インストールされているチェックポイント設定環境のプロパティーについては、システム管理者に問い合わせてください。詳細は、『Sun N1 Grid Engine 6.1 管理ガイド』「チェックポイント設定環境の構成」を参照してください。

チェックポイント設定のためのファイルシステム要件

ユーザーレベルのチェックポイントまたはチェックポイント設定ライブラリに基づくカーネルレベルのチェックポイントが書き込まれるときには、チェックポイントを設定するプロセスまたはジョブが占める仮想メモリのイメージ全体を保存する必要があります。このためには十分なディスク容量が必要です。チェックポイント設定環境構成パラメータの ckpt_dir が設定されている場合、チェックポイント情報は ckpt_dir の下のジョブ固有の場所に保存されます。ckpt_dir NONE に設定されている場合、チェックポイント設定ジョブが開始されたディレクトリが使用されます。チェックポイント設定環境の構成については、checkpoint(5) のマニュアルページを参照してください。


注 –

ckpt_dirNONE に設定されている場合、チェックポイント設定ジョブは qsub -cwd スクリプトで開始する必要があります。


ジョブの移行と再開を正常に行うには、すべてのマシンでチェックポイント設定ファイルと再開ファイルが認識されていなければなりません。ファイルシステムの編成にファイル可視性が必要なため、NFS か類似のファイルシステムである必要があります。ご自分のサイトがこの要件を満たしているかどうか、クラスタ管理者に問い合わせてください。

サイトで NFS を実行していない場合は、シェルスクリプトの最初で再開ファイルを明示的に転送することができます。たとえば、ユーザーレベルのチェックポイント設定ジョブの場合は rcp または ftp を使用できます。