쿼드코어 PBS 실행속도가 느립니다.
안녕하세요..
회사에서 클러스터를 사용하고 있습니다.
총 120대인데 이중에
Node 1 ~ 48은 RHEL 4.6에 쿼드코어(2.6GHz) CPU 1개를 사용하고요
Node 49 ~ 120은 레드햇 8.0에 싱글코어(2.4GHz) CPU 2개를 사용합니다.
PBS Pro를 사용하고 있는데 라이센스 문제로
Node 1을 헤드노드로 하고 torque를 설치했고 Node 2 ~ 48을 계산노드로 설정했습니다.
torque 설치 한 방법입니다.(torque-2.3.3, mpich-1.2.7p1)
헤드노드 : ./configure --prefix=/usr/pbs --with-server-home=/var/spool/PBS && make & make install
계산노드 : ./configure --prefix=/usr/pbs --disable-server && make & make install
실행되는 스크립트입니다.
=====test50.qsub=====
#PBS -l nodes=5:quad:ppn=4
#PBS -j oe
#PBS -o node1:/home/rams3/opn50/log/run50_2008_1203_1712_1.log
np=`cat $PBS_NODEFILE | wc -l `
/usr/mpich/bin/mpirun -machinefile $PBS_NODEFILE -np 1 /home/rams3/bin_ether/rams-4.3.0 -f RAMSIN_MAKESFC
/usr/mpich/bin/mpirun -machinefile $PBS_NODEFILE -np 1 /home/rams3/bin_ether/rams-4.3.0 -f RAMSIN_MAKESST
/usr/mpich/bin/mpirun -machinefile $PBS_NODEFILE -np 1 /home/rams3/bin_ether/rams-4.3.0 -f RAMSIN_MAKEVFILE
/usr/mpich/bin/mpirun -machinefile $PBS_NODEFILE -np 5 /home/rams3/bin_ether/rams-4.3.0 -f RAMSIN_INITIAL
(마지막 라인의 명령이 오래걸리는 작업입니다.)
=====queue50.sh=====
/usr/pbs/bin/qsub test50.qsub
queue50.sh를 실행함으로써 병렬연산이 이루어지는데요
병렬연산은 잘 수행되지만
문제는 쿼드코어로 실행할때 기존의(Node48~120) 노드서버보다 실행속도가 2배이상 느린것에 있습니다.
(싱글코어 2CPU로 하면 1시간인데 쿼드코어는 2시간이 넘습니다.)
위 스크립트를 실행시키면
Node 2, 3, 4, 5, 6을 사용합니다.
Node2에 들어가서 top 명령으로 cpu 사용률을 보니 CPU0 ~ CPU3중에(쿼드코어라서 CPU개수가 4개로 나옵니다.)
CPU0만 30% 정도 사용을 하고, 다른 CPU는 전혀 작업을 하고 있지 않습니다.
ps명령으로 확인해 보아도 rams-4.3.0의 명령은 1개만 올라와 있구요..
조언 부탁드리겠습니다.
MPI 작업
MPI 작업을 PBS Pro를 이용하여 qsub 하셨군요.
-np 5로 되어 있고 노드도 5개를 잡아서 던지신걸로 보면 한 노드에 1개의 MPI 프로세스가 들어갈 것입니다. 그러면 한 노드에는 하나의 프로세스만 들어가게 됩니다.
만약 한 노드의 다른 Core까지 쓰실거면 하이브리드 방식(MPI+OpenMP)를 사용하시면 자원의 활용도가 더 높아질 것입니다.
한 노드의 CPU 사용율이 30% 정도밖에 안되는 것에 대한 이유는 잘 모르겟지만, 혹시 IO가 많거나 %user가 아닌 %system 또는 $iowait가 높아서 그럴지도 모르겠습니다.
sar 또는 top으로 전체적인 자원 활용도를 한번 확인해보세요.
인용:만약 한 노드의
요즘 나오는 리눅스 클러스터용 Job Scheduler가 core단위, socket 단위, node단위로 작업을 분배해주지 않나요?
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
그런데 PBS Pro는
그런데 PBS Pro는 뭐하는 프로그램인가요?
특정목적(공학 한분야) 시뮬레이터는 아닌가 보지요?
내 혼에 불을 놓아 ..
Job
Job scheduler죠...
클러스터 노드에서 여러가지 job을 비어있는 시스템에 할당해서 run을 시켜주는 프로그램이죠.
상용이 PBS Pro, 오픈소스가 Open PBS죠.
비슷한 제품으로 Platform Computing 것도 있고, MS 애들은 아예 공짜로 오에스랑 같이 다 포함해서 주고...
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
오호 검색을 해보니,
오호 검색을 해보니, 매트랩도 PBS 기반으로 돌리는것 같군요~
질문입니다.
그렇다면 병렬화 코딩이 되어있지 않은 어플리케이션도 클러스터에서 돌아가게 해준다는것인가요?
궁금합니다.
내 혼에 불을 놓아 ..
당연하죠...병렬화되
당연하죠...
병렬화되지 않은 프로그램들을 클러스터에서 뿌려주는 방식을 보통 parametric study라고 하고, 이런거를 잘 지원하는 것도 job scheduler에서 처리하게 되는거죠.
예를 들어서 실행해야할 프로그램이 a.exe 이고 input file이 b.in 이고 output을 c.out에 받는다고 한다면 job script에서 다음과 같이 실행하면 잘되죠.
a.exe b.in.1 c.out.1
a.exe b.in.2 c.out.2
....
뭐 이런식으로 돌릴 수 있도록 해주죠.
Linux + PBS 조합으로 만들어도 되고,
Windows HPCS + HPC Job manager 로 만들어도 됩니다.
초심자나 막돌릴사람, 회사에서 돈주고 살 사람에게는 후자를 추천하죠. 비용도 싸게 먹히니까...
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
a.exe b.in.1 c.out.1 a.exe
a.exe b.in.1 c.out.1
a.exe b.in.2 c.out.2
....
같은건 b.in.1 과 b.in.2 가 독립적일때 가능하겟군요..
시뮬레이션시에 서로 종속적일때는 불가능하겠네요.
내 혼에 불을 놓아 ..
M사가 만든 Job
M사가 만든 Job Scheduler는 종속적인 Task에 대해서 연속적으로
실행하는 것을 지원합니다.
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
멋지군요~ 요즘은
멋지군요~
요즘은 OpenPBS 보다 TORQUE 를 더 많이 쓴다는데
어떤 차이가 있는건지요?
내 혼에 불을 놓아 ..
요즘 리눅스쪽은
요즘 리눅스쪽은 손떼서 잘 모르겠네요...
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
답변 고맙습니다. -np
답변 고맙습니다.
-np x 부분이 노드대수 인줄 알았는데 프로세스 수 더군요..
-np $np 로 수정은 했습니다.
다른 코어까지 사용은 하는데 문제는 사용률이 10% 정도밖에 되지 않는군요..
-----------
OpenPBS는 개발이 중지 된것으로 알고 있습니다.
torque는 현재 개발이 되고 있구요.
안녕하세요..
항상 리눅스에 관심은 가지고 있는데
제대로 실행을 못하고 있습니다.
KLDP를 통해 많은 정보도 얻고
리눅스에 대해 알수 있었으면 좋겠습니다.
댓글 달기