クラスタシステム利用の Tips
クラスタシステム利用にあたって気づいた便利なノウハウなどの記入をお願いします.
研究ユーザ情報交換用メーリングリストの過去ログ
研究ユーザの情報交換用メーリングリストの過去ログは, http://lists.imc.tut.ac.jp/pipermail/research-users/ で見れます.
使用リソース(メモリ使用量など)の計測
プロセスが使用したリソース(メモリ使用量など)は GNU 版 time コマンド(/usr/bin/time)で計測できます.オプション -v を利用することで,以下のようにプロセスが使用したリソースの詳細が表示されます(Man page of TIME).
-bash-4.1$ /usr/bin/time --version GNU time 1.7 -bash-4.1$ /usr/bin/time -v whoami my016 Command being timed: "whoami" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 3088 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 243 Voluntary context switches: 3 Involuntary context switches: 1 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
メモリの使用量は Maximum resident set size で知ることができますが, v1.7 には実際の4倍で表示される(実使用量は表示された値の4分の1)という既知のバグがあります(参考).
GNU 版 time コマンドはクラスタの演算ノードでも利用できますが,結果が標準エラー出力であることに留意する必要があります.
投入しているジョブの一括削除
一般のユーザには qdel コマンドのオプション all が許可されておらず,また,オプション -t が正常に作動しないため,投入しているジョブの一括削除には,以下のようなスクリプトを利用します.
1 #!/bin/bash
2
3 # This filename is qdel.sh.
4
5 if [ $# -ne 1 -a $# -ne 2 ]; then
6 echo "Usage: bash $0 [ 'all' | firstId lastId | lastId ]"
7 exit
8 fi
9
10 # 第一引数が数値か否か
11 if expr "$1" : '[0-9]*' > /dev/null ; then
12 ids=`seq $1 $2`
13 else
14 ids=`qstat | cut -d . -f 1 | tail -n +3 | column`
15 fi
16
17 echo qdel $ids
18 qdel $ids
第一引数に all を指定することにより,投入しているジョブ(実行中か否かは問いません)の全てを削除します.また,第一引数及び第二引数を利用することにより,削除するジョブIDの範囲を指定することもできます.