[Cloud] 06. HTCondor - 작업 처리 (1)
카테고리: CLOUD
태그: Cloud
01. HTCondor - 작업명세서
# 실행할 파일명을 기술
executable = <execution file name>
# 실행 파일을 수행할 환경을 지정
# 1) standard
# - remote에서 수행 중인 잡의 상태를 호스트에 저장할 수 있는 환경으로 체크포인트와 remote system call이 가능하다.
# - standard 환경에서 실행되는 파일은 반드시 condor_compile과 링크 되어야 한다.
# 2) vanilla
# - condor_compile로 링크될 수 없는 경우이며, 쉘 스크립트가 대표적인 예
# 3) grid
# - HTCondor 작업이 다르게 관리되는 remote 시스템 작벙을 실행할 때 사용한다.
# 4) java
# - java 프로그램을 실행하는 환경
# 5) local
# - 경량의 작업을 바로 수행하기 위한 환경으로 Remote 시스템과 매칭 메이킹을 하지 않고 호스트에서 바로 수행한다.
# 6) scheduler
# - local과 유사하나 condor_startd 데몽ㄴ이 작업을 핸들링하지 않는 차이점이 있다.
# 7) parallel
# - MPI(Message passing interface) 잡을 수행하기 위한 환경이다.
# 8) vm
# - VMware나 Xen과 같은 가상머신을 수행하기 위한 환경이다.
universe = <execution environment, e.g <vanilla> | <standard> ...>
# 실행 프로그램에 전달한 입력값을 전달
input = <input data>
# 실행 결과, 에러, 로그를 저장할 곳을 지정
output = <output file>
error = <error file>
log = <log file>
# 잡을 큐(queue)에 제출하겠다는 것이고, 몇 번 수행할지 지정할 수 있다.
# 지정하지 않으면 1번으로 서브미션(submission)된다.
queue [# of execution]
02. HTCondor - 예제 (1)
# 1) 현재 시간을 출력한 후 10초간 슬립 상태였다가 다시 현재 시간을 출력하는 스크립트
[choi@master ~]$ mkdir 01.date
[choi@master ~]$ cd 01.date/
[choi@master 01.date]$ vim date.sh
[choi@master 01.date]$ cat date.sh
#!/bin/bash
echo `date`
sleep 10
echo `date`
# 2) 작업명세서 작성
[choi@master 01.date]$ vim date.jds
[choi@master 01.date]$ cat date.jds
executable = date.sh
universe = vanilla
output = out.txt
error = error.txt
log = log.txt
queue
[choi@master 01.date]$ ls
date.jds date.sh
# 3) condor_submit 명령 실행
[choi@master 01.date]$ condor_submit date.jds
Submitting job(s).
1 job(s) submitted to cluster 2.
# 4) condor_q 명령으로 큐의 상태를 확인
[choi@master 01.date]$ condor_q
-- Schedd: master.cloud.org : <192.168.219.101:9505?...
ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD
3.0 choi 12/12 17:24 0+00:00:11 R 0 0.0 date.sh
1 jobs; 0 completed, 0 removed, 0 idle, 1 running, 0 held, 0 suspended
[choi@master 01.date]$ condor_q
-- Schedd: master.cloud.org : <192.168.219.101:9505?...
ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD
0 jobs; 0 completed, 0 removed, 0 idle, 0 running, 0 held, 0 suspended
# 5) log, out 파일 확인
[choi@master 01.date]$ ls
date.jds date.sh error.txt log.txt out.txt
[choi@master 01.date]$ cat log.txt
# 작업이 Master 노드인 192.168.219.101에서 서브미션되었음을 알 수 있다.
000 (003.000.000) 12/12 17:24:06 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
# 해당 작업은 slave1 노드인 192.168.219.102에 할당되었음을 알 수 있다.
001 (003.000.000) 12/12 17:24:07 Job executing on host: <192.168.219.102:9422?addrs=192.168.219.102-9422>
...
006 (003.000.000) 12/12 17:24:16 Image size of job updated: 1
3 - MemoryUsage of job (MB)
2152 - ResidentSetSize of job (KB)
...
005 (003.000.000) 12/12 17:24:18 Job terminated.
(1) Normal termination (return value 0) # 정상적으로 종료(normal termination)
Usr 0 00:00:00, Sys 0 00:00:00 - Run Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Run Local Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Local Usage
58 - Run Bytes Sent By Job
46 - Run Bytes Received By Job
58 - Total Bytes Sent By Job
46 - Total Bytes Received By Job
Partitionable Resources : Usage Request Allocated
Cpus : 1 1 # CPU 코어는 1개를 요청해서 1개가 사용
Disk (KB) : 9 1 16161936 # 디스크는 1KB를 요청하였으나, 16161936K가 할당되었고, 실제 사용은 9KB를 사용
Memory (MB) : 3 1 1819 # 메모리는 1MB를 요청하였고 1819MB가 할당되었고 실제 사용은 3MB를 사용
...
[choi@master 01.date]$ cat out.txt
Tue Dec 12 17:24:07 KST 2023
Tue Dec 12 17:24:17 KST 2023
03. HTCondor - 예제 (2), 인자를 갖는 작업
# 1) 전달한 두 값을 이용하여 두 값 사이에 있는 모든 정수를 더하는 쉘 스크립트 작성
[choi@master ~]$ mkdir 02.argument
[choi@master ~]$ cd 02.argument
[choi@master 02.argument]$ vim count.sh
[choi@master 02.argument]$ cat count.sh
#!/bin/bash
NUM_START=$1
NUM_END=$2
LOOP_COUNT=$NUM_START
SUM=0
echo "Sum from $NUM_START to $NUM_END"
while [ $LOOP_COUNT -le $NUM_END ]
do
SUM=`expr $SUM + $LOOP_COUNT`
LOOP_COUNT=`expr $LOOP_COUNT + 1`
done
echo "Total Sum = $SUM"
# 2) 작업명세서 작성
[choi@master 02.argument]$ vim argument.jds
[choi@master 02.argument]$ cat argument.jds
executable = count.sh
universe = vanilla
arguments = 1 10
output = out.txt
error = err.txt
log = log.txt
queue
# 3) condor_submit 명령으로 실행
[choi@master 02.argument]$ condor_submit argument.jds
Submitting job(s).
1 job(s) submitted to cluster 4.
# 4) 결과 확인
[choi@master 02.argument]$ cat out.txt
Sum from 1 to 10
Total Sum = 55
[choi@master 02.argument]$ cat log.txt
000 (004.000.000) 12/12 17:44:45 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
001 (004.000.000) 12/12 17:44:46 Job executing on host: <192.168.219.102:9422?addrs=192.168.219.102-9422>
...
006 (004.000.000) 12/12 17:44:46 Image size of job updated: 1
0 - MemoryUsage of job (MB)
0 - ResidentSetSize of job (KB)
...
005 (004.000.000) 12/12 17:44:47 Job terminated.
(1) Normal termination (return value 0)
Usr 0 00:00:00, Sys 0 00:00:00 - Run Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Run Local Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Local Usage
32 - Run Bytes Sent By Job
240 - Run Bytes Received By Job
32 - Total Bytes Sent By Job
240 - Total Bytes Received By Job
Partitionable Resources : Usage Request Allocated
Cpus : 1 1
Disk (KB) : 9 1 16161196
Memory (MB) : 0 1 1819
03. HTCondor - 예제 (3), 여러 작업을 동시에 실행
# 1) 작업명세서 작성 - count.sh 스크립트를 10번 수행 (queue 10 설정)
[choi@master ~]$ mkdir 03.multiple
[choi@master ~]$ cd 03.multiple
[choi@master 03.multiple]$ cp ../02.argument/count.sh .
[choi@master 03.multiple]$ ls
count.sh multiple.jds
[choi@master 03.multiple]$ vim multiple.jds
[choi@master 03.multiple]$ cat multiple.jds
executable = count.sh
universe = vanilla
arguments = 1 10
output = out.txt
error = err.txt
log = log.txt
queue 10
# 2) condor_submit 명령 실행 및 결과 확인
[choi@master 03.multiple]$ condor_submit multiple.jds
Submitting job(s)..........
10 job(s) submitted to cluster 5.
[choi@master 03.multiple]$ condor_q
-- Schedd: master.cloud.org : <192.168.219.101:9505?...
ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD
5.2 choi 12/12 17:58 0+00:00:00 R 0 0.0 count.sh 1 10
5.3 choi 12/12 17:58 0+00:00:00 R 0 0.0 count.sh 1 10
5.4 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
5.5 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
5.6 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
5.7 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
5.8 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
5.9 choi 12/12 17:58 0+00:00:00 I 0 0.0 count.sh 1 10
8 jobs; 0 completed, 0 removed, 6 idle, 2 running, 0 held, 0 suspended
[choi@master 03.multiple]$ ls
count.sh err.txt log.txt multiple.jds out.txt
[choi@master 03.multiple]$ cat out.txt
Sum from 1 to 10
Total Sum = 55
[choi@master 03.multiple]$ cat err.txt
[choi@master 03.multiple]$
# 3) log 파일 확인
[choi@master 03.multiple]$ cat log.txt
000 (005.000.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.001.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.002.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.003.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.004.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.005.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.006.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.007.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.008.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
000 (005.009.000) 12/12 17:58:08 Job submitted from host: <192.168.219.101:9505?addrs=192.168.219.101-9505>
...
001 (005.000.000) 12/12 17:58:09 Job executing on host: <192.168.219.102:9422?addrs=192.168.219.102-9422>
...
001 (005.001.000) 12/12 17:58:09 Job executing on host: <192.168.219.103:9227?addrs=192.168.219.103-9227>
...
006 (005.000.000) 12/12 17:58:09 Image size of job updated: 1
0 - MemoryUsage of job (MB)
0 - ResidentSetSize of job (KB)
...
006 (005.001.000) 12/12 17:58:09 Image size of job updated: 1
0 - MemoryUsage of job (MB)
0 - ResidentSetSize of job (KB)
...
005 (005.000.000) 12/12 17:58:10 Job terminated.
(1) Normal termination (return value 0)
Usr 0 00:00:00, Sys 0 00:00:00 - Run Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Run Local Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Remote Usage
Usr 0 00:00:00, Sys 0 00:00:00 - Total Local Usage
32 - Run Bytes Sent By Job
240 - Run Bytes Received By Job
32 - Total Bytes Sent By Job
240 - Total Bytes Received By Job
Partitionable Resources : Usage Request Allocated
Cpus : 1 1
Disk (KB) : 9 1 16161176
Memory (MB) : 0 1 1819
...
~(생략)~
댓글 남기기