시스존 문의사항

안녕하세요. SGE 운영할때, Checkpoint 관련 문의드립니다..

작성자
김루트 김루트
작성일
2017-11-09 16:30
조회
8769
얼마전에 user 관리 관련 질문은 제게 정말 큰 도움이 되었습니다.

요즘은 사용자 큐 관련하여 공부하고 있는데요.

Checkpoint 가 너무 어렵습니다.

제가 이해하고 있는 Checkpoint 의 개념은,

Job 이 running 되고, min_cpu_interval 마다 checkpoint 를 file 형태로 기록하고

특정이유로 Job 이 Suspend 되었을 경우에, Restart 대기 상태로 돌아간후, 큐가 들어갈 자리를 찾으면

Restart 인지 아닌지 판단후에

checkpoint file 을 불러와 저장되어있는 곳 부터 시작 하는것으로 알고 있는데요,

http://gridscheduler.sourceforge.net/howto/checkpointing.html

위 사이트를 참고해서 예제를 만들고 실습해봤습니다.

그런데 이해가 안되는것이, min_cpu_interval 이 10초인 queue 에

100초를 세는 프로그램을 등록하고, qsub -ckpt check_trasnparent 'job.sh' 로 등록했는데요,

10초마다 checkpoint file 을 만드는 것이 아니라, 10초만 running 되고 종료메세지를 출력하고 종료되어버리네요..

제가 Base로 삼은 예제는 다음과 같습니다.

==example.sh==

1 #!/bin/sh
2 #$ -V
3 #$ -q prac.q
4 #$ -pe mpi_1 1
5 #$ -cwd
6 #$ -o check_test_out
7
8 # check_transparent2.sh
9
10 trap 'echo $ACTUAL_VALUE > $SGE_CKPT_DIR/checkpoint_2' usr2
11
12 #
13 # Check whether we are restarted and a checkpoint file is already avaiualble.
14 #
15
16 if [ "$RESTARTED" -eq "1" -a -e "$SGE_CKPT_DIR/checkpoint_2" -a -r "$SGE_CKPT_DIR/checkpoint_2" ] ; then
17 read ACTUAL_VALUE < $SGE_CKPT_DIR/checkpoint_2
18 echo "Script restarted with value $ACTUAL_VALUE."
19 else
20 ACTUAL_VALUE=1
21 echo "Script started."
22 fi
23
24 #
25 # Start of the program.
26 #
27
28 while [ "$ACTUAL_VALUE" -le 60 ] ; do
29 echo "Processing $ACTUAL_VALUE."
30 let ACTUAL_VALUE++
31 sleep 1
32 done
33
34 echo "Script finished."
35
36 exit 0

위 예제에서는 10초마다 checklist 파일이 갱신이되고, suspend 될 경우 체크리스트 파일을 참고하여 해당숫자부터 시작합니다.

제가 수정하여 작성한 스크립트는 다음과 같습니다.

=====test.sh======

1 #!/bin/sh
2 #$ -V
3 #$ -q prac.q
4 #$ -pe mpi_1 1
5 #$ -cwd
6 #$ -o check_test_out
7
8 # check_transparent2.sh
9
10 trap 'echo $ACTUAL_VALUE > $SGE_CKPT_DIR/test/test/checkpoint_2' usr2
11
12 #
13 # Check whether we are restarted and a checkpoint file is already avaiualble.
14 #
15
16 if [ "$RESTARTED" -eq "1" -a -e "$SGE_CKPT_DIR/test/test/checkpoint_2" -a -r "$SGE_CKPT_DIR/test/test/checkpoint_2" ] ; t hen
17 read ACTUAL_VALUE < "$SGE_CKPT_DIR/test/test/checkpoint_2"
18 echo "Script restarted with value $ACTUAL_VALUE."
19 else
20 ACTUAL_VALUE=1
21 echo "Script started."
22 fi
23
24 #
25 # Start of the program.
26 #
27 export ACTUAL_VALUE
28 ./app.sh
29
30 echo "Script finished."
31
32 exit 0
======================
100초를 세는 스크립트는 다음과 같습니다.

====== app.sh ==========

A=1
while [ $A -le 100 ];
do
echo $A
let A++
sleep 1
done
======================

제가 작성한 스크립트를 qsub -ckpt check_trasnparent test.sh 로 제출하면, 10초만 running 되다가 스크립트가 종료됩니다..

체크포인트의 정보는 다음과 같습니다.

===== check_transparent ====
ckpt_name check_transparent
interface transparent
ckpt_command none
migr_command none
restart_command none
clean_command none
ckpt_dir /home/user2/checkpoint
signal usr2
when xmr
=========================

여러가지 메뉴얼 페이지를 살펴보고 공부했는데 trouble shooting 에 진척이없어 송구스럽게 문의 드리게 되었습니다.

감사합니다.