共有利用では、他の利用者が計算機を使用している場合に、計算を実行するまでに"順番待ち"が発生することがあります。
計算の実行順は、スケジューラというソフトウェアによって、資源の要求量や各種制限に応じて決定し管理しているため、利用者の皆様でコントロールすることは難しいのですが、プログラムの計算規模や、ジョブスクリプトで指定する要求資源量を調整することで、待ち時間の短縮を狙うことも出来ます。
以下でその方法を解説します。
 

1.現在の利用状況を確認する

    自分を含めた他の利用者の利用状況を確認する方法はいくつかありますが、今後の利用スケジュールを含めて視覚的に確認したい場合は、以下のWEBページが利用可能です。
    OCTOPUS利用状況
    ”#”が使用中/スケジュール済の計算ノード、”.”が使用していない計算ノードです。
     
    計算機の利用状況によっては、直近の数時間で計算ノードに空きが生まれる場合があります。
    以下の例では、OCTOPUS 汎用CPUノード群の3ノードにて、15時55分から5時間分、"空き"があることを示しています。
    こうした"空き"に収まるよう資源量を調整しジョブを投入することで、待ち時間無く計算が実行される可能性があります。
     

     

2.計算規模、資源量を調整する

    以下の例は、OCTOPUS汎用CPUノード群で24時間の計算を実行するジョブスクリプトとなります。
    このままqsubしても、上記の"空き"ノードには収まらず、計算実行までに順番待ちが発生します。

    #!/bin/bash
    #PBS -q OCTOPUS
    #PBS -l elapstim_req=24:00:00
    cd $PBS_O_WORKDIR
    ./a.out

     
    計算規模を縮小できるプログラムや、計算を途中で中断できるプログラムの場合は、"空き"のある5時間以内に実行終了するよう、プログラム中のパラメータを変更しましょう。
     
    ジョブスクリプトで指定している"elpstim_req"と実際の"計算時間"に乖離が無いか確認しましょう。スケジューラは"elpstim_req"を元に計算資源を割り当てますので、長時間に設定している場合、待ち時間が長期化する可能性があります。仮に3時間前後で実行終了するプログラムの場合は、ジョブスクリプトで指定しているelapstim_reqを4時間に修正するとよいでしょう。
    ※elapstim_reqを超えた場合はその時点でジョブが強制終了となりますので、実行時間以上の値を設定するようにしてください。実行時間が見積もれない場合は、長めに指定しておきましょう。
     
    今回は、4時間で実行終了するように、elapstim_reqの値を修正しました。

    #!/bin/bash
    #PBS -q OCTOPUS
    #PBS -l elapstim_req=4:00:00
    cd $PBS_O_WORKDIR
    ./a.out

     

    無事、"空き"ノードでジョブが実行されました。

     

    また、動作確認など短時間で終わるジョブを実行する際は #PBS -qオプションで指定するジョブクラスに"DBG"をご利用ください。DBGキューは"elpstim_req"が最長でも10分までの短時間専用のジョブクラスとなっていますが、ジョブの回転が早いため通常のキューに比べて待ち時間が少なくなります。以下はDBGキューで実行する場合のジョブスクリプト例です。

    #!/bin/bash
    #PBS -q DBG
    #PBS -l elapstim_req=10:00
    cd $PBS_O_WORKDIR
    ./a.out

 

注意事項

    利用状況WEBページはリアルタイムでは無く、5分に1度の更新となります。また、計算ノード上でメンテナンスを実施している場合、一時的に"空き"ノードのように見えることがあります。
    狙ったノードで計算が実行されない場合もございますので、予めご了承ください。
     
    上記のとおり、elapstim_reqの指定を短くすることで、待ち時間の短縮が期待できますが、elapstim_reqを超えた場合はその時点でジョブが強制終了となりますので、ご注意ください。