[Cloud] 06. HTCondor - 작업 처리 (1)

Date:     Updated:

카테고리:

태그:


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
...

~(생략)~

CLOUD 카테고리 내 다른 글 보러가기

댓글 남기기