研究メモ

スリープジョブを投げる&スリープノードにログインする

どちらかの用途だけでも使えます。ジョブの制限時間&制限時間オプション、グループ、プレミアムオプションなどはスクリプト内で定義されています。

(例)Sキューに3つジョブを投げる

./auto-sleep.sh S 3
(一覧が出てくるので入りたいノードを選ぶ、もしくはそのまま終了)

(注意)デフォルトでは投げてから3秒待ってt2statをしますが、TSUBAMEが混んでるときはすぐにジョブが入らないことがあります。プレミアムオプションをつけるとすぐに入りやすくなります。

(例)既に投げてあるスリープジョブが走ってるノードに入る

./auto-sleep.sh a 0
(一覧が出てくるので入りたいノードを選ぶ)

以下、auto-sleep.shのソース。

#!/usr/bin/sh
CMDNAME=`basename $0`
if [ $# -ne 2 ]; then
	echo "Usage: ./$CMDNAME [Queue_name] [Number_of_jobs] (if [Number_of_jobs] == 0, only ssh)"
	exit 1
fi
echo -e "\n *** This script throws sleep-job & ssh to the sleep node. *** \n"
WTIME=90:00:00
QUE=$1
GROUP=t2g-acls2012
PREMIUM=2
if [ $2 -gt 0 ]; then
for i in `seq 1 $2`
do
echo "sleep 1500000" > sleep.sh
chmod 755 sleep.sh
t2sub -j oe -N sleep -W group_list=$GROUP -p $PREMIUM -q $QUE -l walltime=$WTIME -et 2 -l select=1:ncpus=12:gpus=3:mem=50gb ./sleep.sh
rm -f sleep.sh
sleep 3s
done
fi
echo -e "\n *** Result of t2stat. *** \n"
IFS=$'\n'
LINES=( $( t2stat -n1 | grep "sleep" ) )
node=0
for line in ${LINES[@]}; do
    echo $line
	#echo $node
	host=`echo $line | sed -e "s/^.*[^.]t2\(.*\)\/.*$/t2\1/"`
	#echo $host
	nodelist[$node]=$host
	node=`expr ${node} + 1`
	#echo $i
done
while :
do
echo -e "\n Node number\n"
node=0
for line in ${nodelist[@]}; do
	echo "$node : ${LINES[$node]}"
	node=`expr ${node} + 1`
done
echo "$node : end this script"
echo -e "\n Please input node number.\n"
read ans
if [ $ans -eq $node ]; then
break
fi
ssh="ssh ${nodelist[$ans]} -Y"
echo $ssh
eval $ssh
break
done

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-16 (月) 16:53:53 (401d)