EnPBS Admin/User Guide (openPBS)
** EnPBS Admin/User Guide ***
1. EnPBS(Encluster Portable Batch System) 란
EnPBS(Encluster Portable Batch System)는 배치 작업 및 컴퓨터 시스템 자원을 관리하는 클러스터 관련 소프트웨어 입니다.
배치 작업이란 작업의 순서를 정해 놓고 일괄적으로 처리하는 작업을 말합니다. 소프트웨어의 특성이 SMP 나 MPI 와 같은 병렬 기능을 지원 하지 않을 경우 작업의 스케줄 관리를 통해 병렬화와 같은 효과를
나타낼 수 있도록 지원 하는 프로그램입니다.
EnPBS에서는 작업을 실행하기 위해 Batch 작업 및 Shell Scripts와 제어 속성등을 전달하며, 그 작업이 종료될때 까지 작업은 유지 되고 보존되어집니다. EnPBS는 단일 시스템 에 설치 할수 있고 여러 시스템을 그룹으로 묶어 설치 할수도 있습니다.
EnPBS 는 기존 OpenPBS 나 상용 PBS와 달리 PBS Queing System 을 이용하기 위해 별도의 PBS Scripts
를 제작 할 필요없이 기존의 작업 실행 방식과 같이 직관적으로 사용이 가능하며, X-Application 관련
작업도 지원을 하고 있습니다.
2. EnPBS(Encluster Portable Batch System) 구성 요소
EnPBS 의 구성 요소로는 EnPBS Server, EnPBS Client, EnPBS Command, EnPBS Shell Management
로 구성 되어져 있습니다.
– EnPBS Server
EnPBS_Server 는 EnPBS 의 가장 핵심적인 요소로서 Node 간의 작업 스케줄을 관리하는 기능으로
각 Node 의 Job Queue 의 작업 상태와 현황을 모니터링하며, 전체 클러스터 노드의 작업 현황을
체크하여 효율적인 작업 관리를 해주는 역활을 합니다.
사용자는 EnPBS_Server 에 작업 환경에 맞게 스케줄링 정책을 구성 할 수 있으며, Server 에 설정
된 스케줄링 정책을 통해 EnPBS_Client Node 에서 이루어지는 작업을 제어하게 됩니다.
– EnPBS Client
EnPBS Client 는 클러스터 노드에서 EnPBS_Server 에 현 작업의 상태와 Node 의 자원 현황 정보를
통보해 주며 각 Client Node 에서 주어진 Job을 EnPBS Server 를 통해 작업 활당이 이루어 지도록
제어하는 프로그램 입니다.
– EnPBS Command
EnPBS Command 는 EnPBS 의 주요 상태, 현황등을 체크하거나 스케줄링 정책의 입력, 수정, 변경
등을 할때 사용되어 집니다.
– EnPBS Shell Management(EnSH)
EnPBS Shell Management(EnSH)은 EnPBS 클러스터 노드의 분산된 Shell 환경을 단일 Shell 환경처럼
사용이 가능하도록 하는 프로그램으로 전체 클러스터 시스템의 CPU, Memory, Network 와 같은 자원
모니터링 기능과 파일 동기화 기능, 그리고 PBS Batch Scripts 자동 생성 기능등이 포함되어 있습니다.
3. EnPBS 설치 및 삭제
EnPBS 는 enpbs-x.x.x-x.i386.rpm, enpbs_client-x.x.x-x.i386.rpm, ensh-x.x.x-x.i386.rpm 3개의
패키지로 구성되어 있고, 패키징 방법은 RPM 형식으로 배포 되고 있습니다. 지원 되는 아키텍쳐는
Linux (x86, X86_64, ia64), Solaris, HP-Unix 등 UNIX 플랫폼기반은 운영체제를 지원하고 있습니다.
rpm 으로 제공 되는 패키지는 기존의 Redhat RPM 방식과 동일하게 관리 되어집니다.
EnPBS 설치는 크게 EnPBS Server System 과 EnPBS Client System 으로 나눌 수 있습니다.
EnPBS Server System 은 클러스터 전체 Node 를 관리하는 서버로 클러스터 그룹 별로 1대의 관리용
서버가 필요하며, Server 시스템에서 Client 기능을 동시에 수행이 가능합니다.
enpbs-x.x.x-x.i386.rpm 프로그램은 EnPBS Server 와 Clinet 기능이 모두 포함되어져 있으며,
enpbs_client-x.x.x-x.i386.rpm 프로그램은 EnPBS Client 전용 프로그램입니다.
– EnPBS Server System 설치
패키징 설치는 root 관리자 권한으로 설치 해야 합니다.
# rpm -Uvh enpbs-x.x.x-x.i386.rpm
EnPBS Shell Management 프로그램은 Server, Client 에 모두 설치합니다.
# rpm -Uvh ensh-x.x.x-x.i386.rpm
설치가 완료되면 아래 경로에 프로그램이 설치되어집니다.
/usr/clx/enpbs : EnPBS Command
/usr/clx/enpbsjob : EnPBS job management pool
/usr/clx/ensh : EnPBS Shell Management
– EnPBS Server System 삭제
RPM 으로 설치된 시스템에서는 rpm 의 -e flag 를 통해 간단히 삭제 할 수가 있습니다.
운영중인 시스템에서 삭제할 때는 현재 구동되고 있는 enpbs 데몬을 정지한 후에 삭제하도록 합니다.
# /etc/rc.d/init.d/enpbs_server stop
# rpm -e enpbs
# rpm -e ensh
/usr/clx 경로에서 enpbs, ensh 관련 디렉토리가 삭제된것을 확인한다.
– EnPBS Client System 설치
EnPBS Client 에서는 enpbs_client-x.x.x-x.i386.rpm, ensh-x.x.x-x.i386.rpm 두개의 패키지를 설치한다.
# rpm -Uvh enpbs_client-x.x.x-x.i386.rpm
# rpm -Uvh ensh-x.x.x-x.i386.rpm
– EnPBS Client System 삭제
# rpm -e enpbs_client
# rpm -e ensh
4. EnPBS 설정
EnPBS Server, Client 설정은 /usr/clx/enpbsjob 디렉토리 및에 있는 설정 파일을 통해 설정이 가능하다.
Server 의 주요 설정 파일은 다음과 같다.
# vi /usr/clx/enpbsjob/server_name
———————————————————————————————
SERVER_HOSTNAME
———————————————————————————————
EnPBS Server 의 hostname 혹은 Server 의 IP 를 입력한다.
# vi /usr/clx/enpbsjob/default_server
———————————————————————————————
SERVER_HOSTNAME
———————————————————————————————
EnPBS Server 의 hostname 혹은 Server 의 IP 를 입력한다.
# vi /usr/clx/enpbsjob/server_priv/nodes
———————————————————————————————
arh01 np=2
arh02 np=2
arh05 np=1
arh06 np=1
arh07 np=1
arh08 np=1
arhfw np=1
———————————————————————————————-
EnPBS Client 의 hostname 혹은 IP를 모두 나열해서 입력하고 np=<num> 에서는 CPU 의 갯수를 적어준다.
np=<num> 의 설정에 의해 실제 해당 노드에서의 동시 작업 허용 갯수가 정해진다.
Client 의 주요 설정 파일은 다음과 같다.
/usr/clx/enpbsjob/server_name
/usr/clx/enpbsjob/default_server
/usr/clx/enpbsjob/server_priv/nodes
위 설정은 EnPBS 서버의 설정과 동일하게 설정을 한다.
# vi /usr/clx/enpbsjob/mom_priv/config
———————————————————————————————-
$clienthost SERVER_HOSTNAME
———————————————————————————————-
SERVER_HOSTNAME 위치에 EnPBS Server 의 hostname 혹은 IP 를 입력한다.
이것으로 기본적인 EnPBS Server, EnPBS Client 설정이 모두 완료되었다.
5. EnPBS Server, Client 시작/종료하기
EnPBS Server, Client 의 시작과 종료는 /etc/rc.d/init.d 밑에 제공되는 init scripts 를 이용하여
제어한다.
– EnPBS Server 시작/ 종료하기
# /etc/rc.d/init.d/enpbs_server start : 시작
# /etc/rc.d/init.d/enpbs_server stop : 종료
– EnPBS Client 시작/ 종료하기
# /etc/rc.d/init.d/enpbs_client start : 시작
# /etc/rc.d/init.d/enpbs_client stop : 종료
5. EnPBS Server Queing 관리
작업 환경에 따라 스케줄링 및 작업 분배 정책을 입력해야 한다. EnPBS 는 기본적으로 2개의 Sample
정잭을 제공하며, Sample 설정을 해당 환경에 따라 수정하여 적용하면 된다.
해당 정책의 sample file 파일은 /usr/clx/enpbsjob 디렉토리에 sample.conf, sample1.conf 로 되어
있다.
# vi /usr/clx/enpbsjob/sample.conf
———————————————————————————————
#
# Create queues and set their attributes.
#
#
# Create and define queue workq
#
create queue workq
set queue workq queue_type = Execution
set queue workq enabled = True
set queue workq started = True
#
# Set server attributes.
#
set server scheduling = True
set server default_queue = workq
set server log_events = 511
set server mail_from = adm
set server query_other_jobs = True
set server scheduler_iteration = 600
———————————————————————————————
sample.conf 의 정책은 /usr/clx/enpbsjob/server_priv/nodes 에 정의된 노드와 np 수에 따라 작업을
순차적으로 계속 분배한다.
별도의 Queue 설정이 없기 때문에 시스템의 부하가 주어 져도 계속 작업이 Runing 이 되어 진다.
# vi /usr/clx/enpbsjob/sample1.conf
———————————————————————————————
# create and define queue verylong
create queue verylong
set queue verylong queue_type = Execution
set queue verylong Priority = 40
set queue verylong max_running = 10
set queue verylong resources_max.ncpus = 6
set queue verylong resources_min.ncpus = 1
set queue verylong resources_max.cput = 72:00:00
set queue verylong resources_min.cput = 12:00:01
set queue verylong resources_default.cput = 72:00:00
set queue verylong enabled = True
set queue verylong started = True
# create and define queue long
create queue long
set queue long queue_type = Execution
set queue long Priority = 60
set queue long max_running = 10
set queue long resources_max.ncpus = 6
set queue long resources_min.ncpus = 1
set queue long resources_max.cput = 12:00:00
set queue long resources_min.cput = 02:00:01
set queue long resources_default.cput = 22:00:00
set queue long enabled = True
set queue long started = True
# create and define queue medium
create queue medium
set queue medium queue_type = Execution
set queue medium Priority = 80
set queue medium max_running = 10
set queue medium resources_max.ncpus = 6
set queue medium resources_min.ncpus = 1
set queue medium resources_max.cput = 02:00:00
set queue medium resources_min.cput = 00:20:01
set queue medium resources_default.cput = 02:00:00
set queue medium enabled = True
set queue medium started = True
# create and define queue small
create queue small
set queue small queue_type = Execution
set queue small Priority = 100
set queue small max_running = 10
set queue small resources_max.ncpus = 6
set queue small resources_min.ncpus = 1
set queue small resources_max.cput = 00:20:00
set queue small resources_default.cput = 00:20:00
set queue small enabled = True
set queue small started = True
# create nad define queue default
create queue default
set queue default queue_type = Route
set queue default max_running =10
set queue default route_destinations = small
set queue default route_destinations += medium
set queue default route_destinations += long
set queue default route_destinations += verylong
set queue default enabled = True
set queue default started = True
# Set server attributes
set server scheduling = True
set server max_user_run = 6
set server acl_host_enable = True
set server acl_hosts = *
set server default_queue = default
set server log_events = 63
set server mail_from = admin@clunix.com
set server query_other_jobs = True
set server resources_default.cput = 01:00:00
set server resources_default.neednodes = 1
set server resources_default.nodect = 1
set server resources_default.nodes = 1
set server scheduler_iteration = 60
set server default_node = 1
——————————————————————————————–
sample1.conf 정책 파일은 verylong, long, medium, small 이름의 작업 시간으로 길이 별로 정의된
실행 큐와 default 와 같이 특정 작업을 작업 시간에 따라서 다른 실행 큐로 전달한는 라우터 타입의
큐로 구성되어진다.
위 정책은 CPU 의 사용 시간별로 작업 우선 순위가 다른 queue를 정의하고, 해당 queue 별로 작업
허용치에 제한을 두어 시스템에 과부하가 걸리지 않게 하고 있다.
즉 시스템의 리소스와 작업범위를예상하여 시스템에서 정상적인 성능으로 작업이 가능한 작업 수를
정해 두고 이 작업 수 보다 많은작업이 입력되면, 초과된 작업에 대해서는 queue 에 저장해 두었다가
선행되는 작업이 완료되면 자동으로 queue 에서 작업을 loading 하여 처리하게 하는 방식이다.
또한 사용자가 작업을 실행하면 처음 20분 동안은 small 이란 queue 에서 작업이 우선적으로 실행되고,
작업 시간이 20분이 넘어가면 이 작업은 medium 이란 queue 로 자동으로 넘어가게 된다.
이곳에서 small 보다는 낮은 우선 순위로 작업이 진행 되게 된다.
작업이 2시간이 넘어가면 long queue 로, 12시간이 넘어가면 verylong queue로 넘어 가서 처리 하게
되는 것이다.
설정 파일의 구성은 다음과 같다.
queue_type : execution 과 route 로 두가지가 있다. execution 은 실제 작업이 실행 되는 큐 이고
route 는 다른 큐로 작업을 넘길 때 사용되는 큐이다.
enabled : 큐를 사용할건지를 정의함
started : 큐를 시작할건지를 정의함
mail_from : 작업이 종료되거나 실행이 중단된 경우 메일로 메세지를 보내는데 이때 사용되어지는
메일 주소를 적는다.
query_other_jobs : 다른 사용자의 job 상태를 조회할 수 있는 지를 정의
이 정책 파일을 적용하는 방법은 qmgr 이란 명령어를 통해 가능하다.
# qmgr < sample1.conf
위와 같은 방법으로 sample1.conf 의 정책이 적용되어 진다.
이제 자기 시스템에 맞게 queue 설정을 해 보도록 하자
queue 설정의 관리 역시 qmgr shell 을 통해 가능하다.
shell 에서 qmgr 명령어를 입력하면, qmgr shell 로 들어가진다.
# qmgr
Max open servers: 4
Qmgr:
qmgr 명령 형식은 다음과 같다.
[ command ] [ object ] [ obj_name ] [ attribute ]
[ command ] 에는 다음과 같은 명령이 있다.
active(a) : 객체를 활성화 한다.
create(c) : 객체를 생성한다.
delete(d) : 객체를 삭제한다.
set(s) : 객체에 속성을 지정한다.
unset(u) : 객체의 속성을 제거 한다.
print : 객체의 설정 값을 출력한다.
list : 객체의 속성 값을 출력한다.
[ object ] 에는 다음과 같은 객체가 있다.
server
queue
node
[ name ] 은 실제 객체에 대한 이름이다. node 의 경우는 node_name 이 될것이고
queue 의 경우에는 앞서 큐잉 설정 파일에 create queue 로 생성한 queue 의 이름
이 될것이다.
[ attribute ] 는 실제 해당 객체의 세부 속성이다.
* 현재 서버의 속성을 확인해 보자
Qmgr: list server
—————————————————————————-
Server otn03
server_state = Active
scheduling = True
max_user_run = 6
total_jobs = 1
state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:1 Exiting:0
acl_host_enable = True
acl_hosts = *
default_queue = default
log_events = 63
mail_from = alang@clunix.com
query_other_jobs = True
resources_default.cput = 01:00:00
resources_default.nodect = 1
resources_default.nodes = 1
resources_assigned.ncpus = 6
resources_assigned.nodect = 1
scheduler_iteration = 60
default_node = 1
* 현재 서버의 설정 값을 확인해 보자
Qmgr: print server
—————————————————————————
.
생략..
.
.
set queue default enabled = True
set queue default started = True
#
# Set server attributes.
#
set server scheduling = True
set server max_user_run = 6
set server acl_host_enable = True
set server acl_hosts = *
set server default_queue = default
set server log_events = 63
set server mail_from = alang@clunix.com
set server query_other_jobs = True
set server resources_default.cput = 01:00:00
set server resources_default.nodect = 1
set server resources_default.nodes = 1
set server scheduler_iteration = 60
set server default_node = 1
* queue 의 속성을 확인해 보자
Qmgr: list queue small
————————————————————————-
Queue small
queue_type = Execution
Priority = 100
total_jobs = 1
state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:1 Exiting:0
max_running = 1
resources_max.cput = 00:20:00
resources_max.ncpus = 6
resources_min.ncpus = 1
resources_default.cput = 00:20:00
resources_assigned.ncpus = 6
resources_assigned.nodect = 1
enabled = True
started = True
* small queue 의 resources_min.ncpus 값을 1 에서 2로 변경해 보자
Qmgr: set queue small resources_min.ncpus=2
Qmgr: list queue small
————————————————————————-
Queue small
queue_type = Execution
Priority = 100
total_jobs = 1
state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:1 Exiting:0
max_running = 1
resources_max.cput = 00:20:00
resources_max.ncpus = 6
resources_min.ncpus = 2
resources_default.cput = 00:20:00
resources_assigned.ncpus = 6
resources_assigned.nodect = 1
enabled = True
started = True
————————————————————————-
** list, print 를 제외한 다른 명령은 반드시 PBS 관리자 권한에서 사용하여야 한다.
초기 PBS 관리자는 root 이다. 시스템 관리자와 PBS 관리자가 서로 다른 경우 PBS
관리자를 root 에서 다른 계정으로 변경해 주어야 한다.
* PBS 관리자 변경 방법
Qmgr: set server managers=clunix@otn03
Qmgr: print server managers
#
# Set server attributes.
#
set server managers = clunix@otn03
6. EnPBS 주요 명령어 사용 방법
EnPBS 의 주요 명령어는 다음과 같다.
* qsub : 작업을 사용자가 큐에 제출하는 명령어다. OpenPBS 에서는 작업내용을 PBS Scripts 에 배치
하고, qsub 를 통해 PBS scripts 를 실행하게 된다. 하지만 EnPBS 에서는 enrun 이란 명령어를 제공
하여 일반적인 작업 command 를 별도의 PBS Scripts 를 만들지 않고 바로 실행이 가능하다.
EnPBS 에서는 사용되지 않지만 PBS 에서 주로 사용하는 명령이다.
$ qsub <pbs_job_scripts>
$ qdel <job_id>
* job_id 는 qsub 실행시 출력되는 8.otn03 같은 형태의 메세지의 숫자에 해당하는 부
분이다.
* qstat : 현재 queue 에 진행되는 작업 상태를 확인하는 명령어 이다.
주요 옵션은
-Q : 큐의 상태 확인
-B : 서버의 상태 확인
-f : Job_queue 의 Detail 한 정보 확인
[clunix@otn03 Linux_ATHLON_BLAS]$ qstat
Job id Name User Time Use S Queue
—————- —————- —————- ——– – —–
11.otn03 hpl.sh clunix 00:00:00 R small
13.otn03 hpl.sh clunix 0 Q small
14.otn03 hpl.sh clunix 0 Q small
[clunix@otn03 Linux_ATHLON_BLAS]$ qstat -Q
Queue Max Tot Ena Str Que Run Hld Wat Trn Ext Type
—————- — — — — — — — — — — ———-
verylong 1 0 yes yes 0 0 0 0 0 0 Execution
long 1 0 yes yes 0 0 0 0 0 0 Execution
medium 1 0 yes yes 0 0 0 0 0 0 Execution
small 1 3 yes yes 2 1 0 0 0 0 Execution
default 1 0 yes yes 0 0 0 0 0 0 Route
[clunix@otn03 Linux_ATHLON_BLAS]$ qstat -B
Server Max Tot Que Run Hld Wat Trn Ext Status
—————- — — — — — — — — ———-
otn03 0 3 2 1 0 0 0 0 Active
[clunix@otn03 Linux_ATHLON_BLAS]$ qstat -f 14
—————————————————————————————
Job Id: 14.otn03
Job_Name = hpl.sh
Job_Owner = clunix@otn03
job_state = Q
queue = small
server = otn03
Checkpoint = u
ctime = Wed Mar 16 11:38:58 2005
Error_Path = otn03:/home/clunix/hpl/bin/Linux_ATHLON_BLAS/hpl.sh.e14
Hold_Types = n
Join_Path = n
Keep_Files = n
Mail_Points = a
mtime = Wed Mar 16 11:38:58 2005
Output_Path = otn03:/home/clunix/hpl/bin/Linux_ATHLON_BLAS/hpl.sh.o14
Priority = 0
qtime = Wed Mar 16 11:38:58 2005
Rerunable = True
Resource_List.cput = 00:20:00
Resource_List.ncpus = 6
* qalter : batch 작업의 속성을 변경
* qrls : qrls 명령은 qhold 명령으로 인해 hold 된 job 을 다시 풀어 놓는 명령이다.
[clunix@otn03 Linux_ATHLON_BLAS]$ qrls 11
[clunix@otn03 Linux_ATHLON_BLAS]$ qstat
Job id Name User Time Use S Queue
—————- —————- —————- ——– – —–
9.otn03 hpl.sh clunix 00:00:00 R small
11.otn03 hpl.sh clunix 0 Q small
* qdel : 큐에 있는 작업을 삭제함
* qhold : 작업에 스케줄 되어 실행 되지 않도록 함
* qmove : 작업을 다른 큐로 이동함
* qmsg : 실행 중인 작업의 기본 출력 다음에 임의의 메세지를 추가함
qmsg [-E] [-O] <message_string> <job_id>
qmsg 는 Job 의 처리가 완료될 경우 생성되는 error 출력파일과 output 출력파일에 >사용자의
임의의 메세지를 남기게 된다.
$ qmsg -E -O ‘Alang Job End’ 9
이와 같이 명령을 수행하면 9 번 job 이 완료된 후에 생성되는 출력파일에 Alang Job End
라는 메세지가 추가 되게 된다.
-E 옵션은 error 출력 파일에 사용자 메세지 추가
-O 옵션은 output 출력 파일에 사용자 메세지 추가
만일 아무런 옵션이 없을 경우는 표준 error 파일에 메세지가 추가 된다.
* qrerun : 실행 중인 작업을 장제 종료하고, 다시 큐로 돌려보냄
7. EnShell 사용 방법
EnShell 은 분산 다중 클러스터 시스템을 단일 시스템처럼 관리하는 Teragon HPC Cluster 관리 Shell
이다. 주요 기능은 전체 클러스터 노드에 동일한 shell command 를 동시 수행하게 하거나 File 을
모든 노드에 동기화 시켜 주며 전체 클러스터 노드의 계정 관리 및 주요 리소스 모니터링, EnPBS 의
효율적인 작업 실행 기능등을 제공한다.
주요 명령어는 다음과 같다.
dalive : 클러스터 전체 노드의 활성 상태를 일괄 체크하는 명령
dcpu : 클러스터 전체 노드의 주요 Process 를 일괄 체크하는 명령
ddisk : 클러스터 전체 노드의 디스크 사용 상태를 일괄 체크하는 명령
dhalt : 클러스터 전체 노드를 일괄 종료 하는 명령
dload : 클러스터 전체 노드의 load average 를 일괄 체크 하는 명령
dmem : 클러스터 전체 노드의 메모리 사용량을 일괄 체크 하는 명령
dnet : 클러스터 전체 노드의 네트워크 사용량을 일괄 체크 하는 명령
dpasswd : 클러스터 전체 노드의 사용자 계정의 패스워드를 일괄 체크 하는 명령
dreboot : 클러스터 전체 노드를 일괄 rebooting 하는 명령
duseradd : 클러스터 전체 노드에 사용자를 일괄 추가하는 명령
duserdel : 클러스터 전체 노드에 사용자를 일괄 제거하는 명령
enrun : EnPBS 에 작업 활당 시 PBSScripts 를 제작하지 않고 바로 처리 하도록 하는 명령
ensh : 클러스터 전체 노드에 shell command 를 일괄 적용하는 명령
ensync : 클러스터 전체 노드에 파일을 일괄 동기화 시키는 명령
mpisel : MPI Programe selector
timesync : 클러스터 전체 노드의 시스템 시간을 동기화 시키는 명령
timeview : 클러스터 전체 노드의 시스템 시간을 확인하는 명령
주요 명령어 사용 방법은 다음과 같다.
* timesync, timeview
: 클러스터 시스템의 전 노드를 표준 시간에 맞게 동기화를 시키는 명령
timesync 는 관리 노드에서 표준 시간을 맞추고, 계산 노드는 관리 노드와
시간을 동기화 시켜 주는 명령이다. 사용방법은 관리자 권한에서 timesync
명령을 수행하면 된다.
timeview 는 실제 클러스터 시스템의 현 시간을 확인하는 명령이다.
timeview 역시 그냥 timeview 란 명령을 입력하면 된다.
[root@otn03 bin]# timesync
* HPC system time synced ..
[root@otn03 bin]# timeview
—————————————————————–
[otn01] Tue Mar 22 13:42:57 KST 2005
[otn02] Tue Mar 22 13:42:57 KST 2005
[otn03] Tue Mar 22 13:42:57 KST 2005
* duseradd, duserdel, dpasswd
: 분산 시스템 계정 관리 방식에서 일괄적을 계정 생성, 삭제, 패스워드
변경등을 해주는 명령어
duseradd 는 분산 시스템의 계정을 일괄적으로 생성하는 명령어입니다.
duserdel 는 분산 시스템의 계정을 일괄적으로 삭제하는 명령어입니다.
dpasswd 는 분산 시스템의 계정의 패스워드를 일괄적으로 변경하는 명령어입니다.
사용방법은 다음과 같다.
# duseradd [account] [password]
[root@otn03 root]# duseradd test pass
————————————————————————–
[otn01] Changing password for user test.
[otn01] passwd: all authentication tokens updated successfully.
[otn02] Changing password for user test.
[otn02] passwd: all authentication tokens updated successfully.
[otn03] Changing password for user test.
[otn03] passwd: all authentication tokens updated successfully.
# dpasswd [account] [password]
[root@otn03 bin]# dpasswd test root///
————————————————————————-
[otn01] Changing password for user test.
[otn01] passwd: all authentication tokens updated successfully.
[otn02] Changing password for user test.
[otn02] passwd: all authentication tokens updated successfully.
[otn03] Changing password for user test.
[otn03] passwd: all authentication tokens updated successfully.
# duserdel [account]
[root@otn03 bin]# duserdel test
————————————————————————-
Do you delete home directory for this account? (yes/no)
* 사용자 홈디렉토리를 삭제할려면 yes, 보존할려면 no 를 입력
### executing in otn01
### executing in otn02
### executing in otn03
* dalive
: 클러스터 시스템의 서버 활성 상태 및 네트워크 상태 모니터링
dalive 는 클러스터 시스템 각각 서버의 활성 상태 및 네트워크 활성 상태를
한번에 모니터링 하는 것이다. 클러스터 구성 노드 수가 많은 경우 특정 노드
에 이상이 있을 경우 별도의 모니터링 툴이 없거나 있어도 웹 브라우저나 특정
프로그램 상에서 파악이 가능하면 콘솔이나 터미널 작업 시 즉각적으로 확인>
이
힘든 경우가 발생한다. 이때 간단히 command 기반에서 이를 확인할수 있다.
사용방법은 다음과 같다
# dalive [option] [ hostname ]
* option list
-n : 특정 노드에 대한 서버, 네트워크 상태 체크
-c : 활성 노드로 새로운 nodelist 생성
-d : 다운된 노드 리스트 출력
-h : 도움말
-r : 결과 리포트 작성
-m : 결과 리포트 메일 발송
null : nodelist 에 등록된 host 에 대한 서버, 네트워크 상태 체크
[root@otn03 bin]# ./dalive
——————————————————
hpc system alive state ..
otn01 is alive
otn02 is alive
otn03 is alive
——————————————————
[root@otn03 bin]# ./dalive -n otn01
——————————————————
otn01 is alive
——————————————————
[root@otn03 bin]# ./dalive -c
——————————————————
hpc system alive state ..
otn01 is alive
otn02 is alive
otn03 is alive
update new nodelist..
otn01
otn02
otn03
——————————————————
[root@otn03 bin]# ./dalive -d
——————————————————
deathed node list…
otn01
[root@otn03 bin]# dalive -r
——————————————————
creat report file 20050318-alive.txt to output..
[root@otn03 bin]# dalive -m
——————————————————
send to mail of output result
* dload (uptime)
: 클러스터 시스템의 전체 시스템 부하 및 활성 상태를 일괄적으로 모니터링
하는 명령
dload 사용 방법은 아래와 같다.
# dload [ option ]
* option
-r : 출력 결과 리포트 작성 하기
-m : 출력 결과 리포트 메일 발송하기
-h : 도움말
[root@otn03 bin]# dload
————————————————————————
* hpc system load average info
======================================================
hostname || date || uptime || load average
======================================================
[otn01] 15:15:40 20days, 0.00, 0.00, 0.00
[otn02] 15:09:27 23days, 0.00, 0.00, 0.00
[otn03] 15:15:01 28days, 0.00, 0.00, 0.00,
* dcpu (ps,head)
: 클러스터 시스템의 전체 CPU 사용량을 모니터링 – 대량 CPU 사용 프로세스
dcpu 는 클러스터 시스템의 프로세스별 CPU, MEM 사용량을 모니터링 하는 명령이다.
dcpu 는 시스템별로 CPU 사용량이 높은 10개의 프로세스에 대한 CPU, MEM 점유률을
보여 주며 특정 프로세스에 대한 모니터링도 가능하다.
dcpu 의 사용방법은 다음과 같다.
# dcpu [process_name]
* 특별히 모니터링 할 process 가 없는 경우엔 그냥 dcpu 라고 입력하면 됩니다.
그럼 각 서버별 CPU 상위 점유 프로세스를 출력한다.
* 특별히 모니터링 할 process 가 있는 경우엔 dcpu 뒤에 process 명을 적어준다.
[root@otn03 bin]# dcpu
======================================================================
Hostname || CPU || MEM || PROC
======================================================================
[otn01] 84.2 14.9 xhpl
[otn01] 77.7 15.8 xhpl
[otn01] 0.1 0.1 bin/esmd
[otn01] 0.1 0.0 bin/edbd -n eth0 -p 908 -d
[otn01] 0.0 0.5 emacs
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn02] 82.7 16.4 xhpl
[otn02] 79.0 16.4 xhpl
[otn02] 1.0 0.0 bin/el4d
[otn02] 0.1 0.1 bin/edbd -n eth0 -p 908 -d
[otn02] 0.0 0.1 ssh otn03
[otn02] 0.0 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid
[otn02] 0.0 0.0 /usr/sbin/sshd
[otn02] 0.0 0.0 /usr/pbs/sbin/pbs_mom
[otn02] 0.0 0.0 /usr/local/lam-gcc/bin/lamd -H 192.168.123.167 -P 41831
[otn03] 94.7 15.0 xhpl
[otn03] 81.2 17.9 xhpl
[otn03] 0.0 0.1 vim dload
[otn03] 0.0 0.1 ssh -n otn03 cd /usr/local/dutils/bin; ps
[otn03] 0.0 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid
[otn03] 0.0 0.0 xfs -droppriv -daemon
[otn03] 0.0 0.0 /usr/sbin/sshd
[otn03] 0.0 0.0 /usr/sbin/named -u named
[otn03] 0.0 0.0 /usr/sbin/atd
* dcpu (ps,head)
: 클러스터 시스템의 전체 CPU 사용량을 모니터링 – 대량 CPU 사용 프로세스
dcpu 는 클러스터 시스템의 프로세스별 CPU, MEM 사용량을 모니터링 하는 명령이다.
dcpu 는 시스템별로 CPU 사용량이 높은 10개의 프로세스에 대한 CPU, MEM 점유률을
보여 주며 특정 프로세스에 대한 모니터링도 가능하다.
dcpu 의 사용방법은 다음과 같다.
# dcpu [process_name]
* 특별히 모니터링 할 process 가 없는 경우엔 그냥 dcpu 라고 입력하면 됩니다.
그럼 각 서버별 CPU 상위 점유 프로세스를 출력한다.
* 특별히 모니터링 할 process 가 있는 경우엔 dcpu 뒤에 process 명을 적어준다.
[root@otn03 bin]# dcpu
======================================================================
Hostname || CPU || MEM || PROC
======================================================================
[otn01] 84.2 14.9 xhpl
[otn01] 77.7 15.8 xhpl
[otn01] 0.1 0.1 bin/esmd
[otn01] 0.1 0.0 bin/edbd -n eth0 -p 908 -d
[otn01] 0.0 0.5 emacs
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn01] 0.0 0.1 /usr/clx/bin/egid -f /usr/clx/rc/http/conf/egid.conf
[otn02] 82.7 16.4 xhpl
[otn02] 79.0 16.4 xhpl
[otn02] 1.0 0.0 bin/el4d
[otn02] 0.1 0.1 bin/edbd -n eth0 -p 908 -d
[otn02] 0.0 0.1 ssh otn03
[otn02] 0.0 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid
[otn02] 0.0 0.0 /usr/sbin/sshd
[otn02] 0.0 0.0 /usr/pbs/sbin/pbs_mom
[otn02] 0.0 0.0 /usr/local/lam-gcc/bin/lamd -H 192.168.123.167 -P 41831
[otn03] 94.7 15.0 xhpl
[otn03] 81.2 17.9 xhpl
[otn03] 0.0 0.1 vim dload
[otn03] 0.0 0.1 ssh -n otn03 cd /usr/local/dutils/bin; ps
[otn03] 0.0 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid
[otn03] 0.0 0.0 xfs -droppriv -daemon
[otn03] 0.0 0.0 /usr/sbin/sshd
[otn03] 0.0 0.0 /usr/sbin/named -u named
[otn03] 0.0 0.0 /usr/sbin/atd
[root@otn03 bin]# dcpu xhpl
======================================================================
Hostname || CPU || MEM || PROC
======================================================================
[otn01] 94.5 17.1 xhpl
[otn01] 91.8 16.2 xhpl
[otn02] 94.9 15.0 xhpl
[otn02] 86.0 16.6 xhpl
[otn03] 97.7 17.5 xhpl
[otn03] 93.8 16.4 xhpl
* dmem (free)
: 클러스터 시스템의 전체 MEM 사용량을 모니터링
dmem 은 클러스터 시스템의 전체 Memory 상태를 일괄적으로 모니터링 하는 명령이다.
dmem 의 사용방법은 다음과 같다.
Usage:
dload [option]
-r : create to output report
-m : mail to output report
-h : help message
[root@otn03 bin]# dmem
—————————————————————————–
* hpc system memory using info
=============================================================================
hostname || total || used || free || shared || buffers || cached
=============================================================================
[otn01] Mem: 1977 755 1221 0 199 103
[otn01] Swap: 2000 42 1957
[otn02] Mem: 1977 544 1433 0 126 97
[otn02] Swap: 2000 7 1992
[otn03] Mem: 1977 1959 17 0 20 1674
[otn03] Swap: 2000 9 1990
[root@otn03 bin]# dmem -r
—————————————————————————–
creat report file 20050321-dmem.txt to output..
[root@otn03 bin]# dmem -m
—————————————————————————–
send to mail of output result
* ddisk (df)
: 클러스터 시스템의 전체 디스크 사용량을 모니터링
ddisk 는 클러스터 시스템의 파티션별 디스크 사용량과 파일시스템 속성을 일괄적으로
모니터링 하는 명령이다.
사용방법은 다음과 같다.
Usage:
dload [option]
-r : create to output report
-m : mail to output report
-h : help message
[root@otn03 bin]# ddisk
—————————————————————————–
* hpc system disk using info
[otn01] Filesystem Type Size Used Avail Use% Mounted on
[otn01] /dev/sda2 ext3 2.9G 406M 2.4G 15% /
[otn01] /dev/sda1 ext3 198M 23M 165M 13% /boot
[otn01] /dev/sda7 ext3 18G 6.1G 11G 38% /home
[otn01] /dev/sda3 ext3 9.7G 4.7G 4.6G 51% /usr
[otn01] /dev/sda5 ext3 2.0G 90M 1.8G 5% /var
[otn02] Filesystem Type Size Used Avail Use% Mounted on
[otn02] /dev/sda2 ext3 2.9G 425M 2.4G 16% /
[otn02] /dev/sda1 ext3 198M 23M 165M 13% /boot
[otn02] /dev/sda7 ext3 18G 1.5G 15G 9% /home
[otn02] /dev/sda3 ext3 9.7G 4.6G 4.6G 51% /usr
[otn02] /dev/sda5 ext3 2.0G 89M 1.8G 5% /var
[otn03] Filesystem Type Size Used Avail Use% Mounted on
[otn03] /dev/sda2 ext3 2.9G 435M 2.4G 16% /
[otn03] /dev/sda1 ext3 198M 23M 165M 13% /boot
[otn03] /dev/sda7 ext3 18G 8.9G 7.4G 55% /home
[otn03] /dev/sda3 ext3 9.7G 3.2G 6.1G 35% /usr
[otn03] /dev/sda6 ext3 2.0G 244M 1.6G 14% /var
* dhalt, dreboot
: 클러스터 시스템 일괄 종료 및 재시작 명령
dhalt, dreboot 은 클러스터 시스템을 종료 혹은 리부팅 시키는 명령이다.
사용 방법은 다음과 같다.
Usage:
dhalt [hostname] [hostname] [hostname] ….
즉 dhalt 뒤에 종료를 원하는 시스템들의 hostname을 차례로 적어 주면 된다.
만일 hostname 을 별도로 정의 하지 않으면 dutils의 nodelist 에 정의된 모든
시스템에 종료된다. dreboot 역시 같다.
[root@otn03 bin]# dhalt
———————————————————————-
Halted otn01 System ..
Halted otn02 System ..
Halted otn03 System ..
Broadcast message from root (pts/0) (Mon Mar 21 20:07:21 2005):
The system is going down for system halt NOW!
[root@otn03 bin]# dreboot otn01 otn02
———————————————————————
Rebooted otn01 System ..
Rebooted otn02 System ..
* ensync
: 클러스터 시스템의 데이터 일괄 동기화 명령
ensync 는 분산 다중 시스템의 데이터 일괄 동기화 명령입니다. dua 와의 차이점을 수행
프로토콜을 기존의 rsh 에서 ssh 로 변경을 한것이다. 사용방법은 dua 와 동일 하다.
* ensh
: 클러스터 시스템의 일괄 명령 수행 명령
ensh 는 분산 다중 시스템의 일괄 명령 수행 프로그램으로 관리 노드에서 ensh 를
통해 입력하는 명령을 클러스터 모든 시스템에 일괄 수행하도록 하는 프로그램이다.
기존의 dush 과 유사하나 몇가지 차이점이 있다.
기존의 dush 는 rsh 를 이용한 방법이라 적절한 보안 조치가 없을 경우 보안에 취약점
을 내재 하고 있다. 하지만 ensh 는 ssh을 이용하여 보다 보안에 안전하다.
뿐만 아니라 dush 을 사용하기 위해서 rsh, rlogin 등의 운영체제 기반의 설정이 필요
한데 ensh 는 이런 부분을 자동화 해주는 기능을 내재 하고 있다.
ensh 는 관리자 전용으로 사용하며, Teragon HPC Management Tool의 핵심 모듈이다
사용방법은 dush 와 동일하다. 단 초기 관리자 인증키를 받을 때 –init 이란 옵션을
이용하면 된다.
[root@otn03 bin]# ./ensh –init
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <Enter>
Enter passphrase (empty for no passphrase): <Enter>
Enter same passphrase again: <Enter>
root@otn01’s password:
-> 최초의 인증키 생성 시 관리자 인증을 확인한다. 이는 최초에 한번 이루어 지며
그 이후에는 dush2 를 이용하여 관리자 인증 없이 인증키로 여러 시스템을 동시
에 관리 할수 있다.
[root@otn03 bin]# ensh -s uptime
[otn01] 23:14:49 up 19 days, 11:06, 2 users, load average: 0.01, 0.00, 0.00
[otn02] 23:08:43 up 23 days, 3:13, 4 users, load average: 0.00, 0.00, 0.00
[otn03] 23:14:13 up 27 days, 8:00, 3 users, load average: 0.00, 0.00, 0.00
* dnet
: 클러스터 시스템의 네트워크 사용량 모니터링
dnet은 클러스터 시스템 별 네트워크 트래픽을 일괄적으로 모니터링 하는 명령이다.
사용법은 다음과 같다.
Usage:
dnet [netdev] [netdev]
즉 dnet 명령 뒤에 트래픽 체크를 할 네트워크 장치명을 적어 주면 된다.
[root@otn03 bin]# dnet eth0 eth1
—————————————————————————–
** network bandwidth in eth0 device
[otn01] [ I N ] 20.76 Kb/s [ OUT ] 256 Bits/s
[otn02] [ I N ] 51.45 Kb/s [ OUT ] 750.03 Kb/s
[otn03] [ I N ] 0 Bits/s [ OUT ] 256 Bits/s
** network bandwidth in eth1 device
[otn01] [ I N ] 29.62 Kb/s [ OUT ] 14.10 Kb/s
[otn02] [ I N ] 795.41 Kb/s [ OUT ] 15.96 Kb/s
[otn03] [ I N ] 19.67 Kb/s [ OUT ] 3.68 Kb/s
* mpisel
MPI Selector 는 다양한 환경의 MPI Compiler 를 사용자 입장에서 효율적으로 모두 사용
하고자 할때 필요한 툴이다.
즉 mpi 의 경우 리눅스에서 대표적으로 lam-mpi 와 mpich 를 사용하는데 mpi 와 compiler
연동시 개발자가 사용하는 대표적인 컴파일러 하나만을 연동해서 설치를 하게 된다.
**** 여러개 설치는 가능하나 기본적인 MPI 환경 설정( PATH, LIB, INC ..)을 시스템
환경 변수로 설정하여 사용을 하기 때문에 MPI 중 하나를 설치 한후 다른 기종의 MPI
를 사용할려면 사용자 레벨에서 일일이 수동으로 환경 설정을 변경하여 사용하여야 한다.
MPI Selector 는 lam-mpi(gcc), lam-mpi(pgi), lam-mpi(intel), mpich(gcc), mpich(pgi)
mpich(intel) 중 원하는 MPI 환경을 사용하기 직전에 사용자가 임의로 선택해서 사용할
수 있다.
병렬 프로그램의 성격에 따라 MPI 종류별로 각각 성능의 차이가 있다. 사용자 입장에서
사용자의 어플리케이션에 최적의 MPI 환경을 손쉽게 찾을 수 있도록 되어져 있다.
사용 방법은 다음과 같다.
# mpisel < MPI > <Compiler>
여기서 < MPI > 에 해당하는 것으로 는 lam 과 mpich 가 있다.
<Compiler> 에 해당하는 것은 gcc, pgi, intel 이 있다.
즉 lam-mpi 에 pgi Compiler 가 연동된 MPI 환경에서 작업 하고 싶은 경우 아래와 같이
입력하면..
[root@otn03 bin]# ./mpisel lam pgi
lam-pgi development environment was applied.!!
otn03(lam-pgi) root # mpicc
pgcc-Warning-No files to process
위와 같이 pgi Compiler 와 연동된 MPI 를 사용할 수 있게 된다.
이 작업은 해당 쉘에서만 적용되어지며 logoff 후에는 다시 원래 환경 설정으로 돌아가게 된다.