**文書の過去の版を表示しています。**
queの追加
#queの一覧 qconf -sql #並列環境を追加 (もし新規にdef_slot_backキューなどを作らないでdef_slotをback.qなどに割り当ててしまうと、キュー指定していないdef_slotを使ったジョブも全部入ってくる) qconf -ap def_slot_back #slot 999に qconf -aq back.q #hostlist @allhosts に #pe_listにdef_slot_backを追加し、make smp mpiを削除 #slotsを1,...->0,...に変更 #できればqsub時にdef_slot_backを指定しないとジョブが流れないようにしたかったけど、上の設定では何もpe_listを指定しない場合はback.qに流れてしまう。
back.qにデフォルトで流れないように下記を試したけど上手くいかないので元に戻した。
qconf -mc #下記を追加 force_pe fp INT <= YES NO 0 0 qconf -mq back.q #complex_valuesをNONEからforce_pe=0に変更 qconf -mp def_slot_back #下記に変更 allocation_rule $pe_slots,force_pe=1に変更
def_slotの追加
qconf -ap def_slot // slot 999に変更 #qconf -aq debug.q qconf -aattr queue pe_list def_slot all.q #qconf -aattr queue pe_list def_slot debug.q
各ノードのメモリー量の設定
まず、グリッドエンジンでのcomplex attributeにmem_reqを追加するために、下記のように行う。
qconf -mc
で次の行を追加する。
mem_req mem_req MEMORY <= YES YES 1G 0
それから各ノードで
qconf -rattr exechost complex_values mem_req=128G m128
とやってメモリー量を設定する。
qsubを投げるときに、
qsub -l mem_req=30G -q all.q@m128
などとやると、最大でも4ジョブまでしかm128には入らない。ただし、メモリーを30GB以上使ったとしてもジョブをkillすることはしない。もし必要であれば、h_vmem当たりを使うとよさそう。
ここで指定するmemreqは1コア当たりのメモリ量なので、defslotを使って複数スロットを使う場合は、memreq x defslot分のメモリーを予約するので注意。
仮にmem_reqを指定しない場合は、qconf -mcで設定した1Gが消費される。
mem_reqのcomplex attributes設定の確認は
qconf -sc
ノードごとのメモリー設定量は下記で表示される。
qconf -se m8.s
GPUキューの作成
qconf -aq gpu.q #hostlist @allhosts に #pe_listにdef_slot_backを追加し、make smp mpiを削除 #slotsを1->0,[mem512gb.t=16],[tsukumoex.t=16]
qconf -mc #で下記を追加 #name shortcut type relop requestable consumable default urgency #---------------------------------------------------------------------------------------------- gpu gpu INT <= YES JOB 0 0
qconf -aattr exechost complex_values gpu=2 mem512gb qconf -aattr exechost complex_values gpu=2 tsukumoex cd /suikou/download9-tmc git clone https://github.com/kyamagu/sge-gpuprolog.git chmod 755 sge-gpuprolog/*.sh qconf -mq gpu.q prolog sge@/suikou/download9-tmc/sge-gpuprolog/prolog.sh epilog sge@/suikou/download9-tmc/sge-gpuprolog/epilog.sh
使用するときは、
qsub -q gpu.q -l gpu=1 -pe def_slot 1 qsubsh echo a
$CUDA_VISIBLE_DEVICES
に0,1などと入っている
load averageが高い原因の調査
ps aux -L | egrep -w "R.|D." | grep -v grep |grep -v "ps aux"
ジョブの再実行
qmod -r job_id
jobがEqwになったエラーステータスを解除するだけなら
qmod -cj job_id
ジョブの途中でqsubのパラメータを変更したいとき
例 qalter -r yes job_id qalter -q back.q -pe def_slot_back 4 -l mem_req=0G job_id
ホストがstates Eの時の原因表示
qhost -q #でホストのステータスがEのものがある場合 #下記で原因が表示される qstat -f -explain E
次のコマンドでエラーを消せる(が、原因を解決していないとジョブを投げると再びエラーに・・・)
qmod -c '*'
原因はよくわからないけど、sge_execdをkillして、/etc/init.d/sgeexecd.p6444 start
でリスタートかけると上手くジョブが流れるようになった。
251でホストがstates Eのときの対応
ディスク不足などでエラーとなった場合
$ qstat -f queuename qtype resv/used/tot. load_avg arch states --------------------------------------------------------------------------------- all.q@m50v251n1 BIP 0/0/16 0.01 lx-amd64 E --------------------------------------------------------------------------------- all.q@m50v251n2 BIP 0/0/16 0.04 lx-amd64 E --------------------------------------------------------------------------------- all.q@m50v251n3.s BIP 0/0/16 0.01 lx-amd64 E
sudo su - source /opt/sge/default/common/settings.sh qmod -c all.q@m50v251n1
とやるとエラーが消えて復旧。
schedd_job_info の有効化 (2022/7/28)
qconf -msconf
で、
schedd_job_info true
にする。
m50vXXXに16コア分ジョブが入らない件の調査
qhost -F
して、hc:mem_req=0.000などとなっていないか見る。
それでも、qsubの時に-l mem_req=0G
をつけると一応流れるようにはなる。つけないとデフォルトのmem_req=1Gが設定されるため流れない。
管理者ユーザの追加
qconf -am yoshitake
管理者のメールアドレスの変更
qconf -mconf global
キューを一時的にOFF/ON
#OFF qmod -d back.q #ON qmod -e back.q
rootでジョブを投げられるようにする
rootでジョブを投げると
Unable to run job: job rejected: your user id 0 is lower than minimum user id 100 of cluster configuration
となるので、
qconf -mconf #min_uid, min_gidを0にする