openlava는 LSF 코드를 기반으로 한 것인지.. 똑같게 흉내 낸 것인지는 모르겠지만.. LSF를 사용해 본 유저로서는 상당히 메리트가 있는 job 스케쥴러임.. 현재 사이트는 내려가 있는 상태인데.. 아마도.. LSF 측에서 항의를 한 듯..
openlava 빌드
http://www.openlava.org/download/download.html
% cd ~
% mkdir LSF
% cd LSF
% tar xvfz openlava-2.2.tar.gz
% cd openlava-2.2
% ./configure
Tcl 없이는 빌드할 수 없다 한다.
Tcl 설치
% tar xvfz tcl8.5.17-src.tar.gz
% cd tcl8.5.17/unix
% ./configure --enable-threads
% make
% su
% make install
% exit
이제 다시 openlava를 빌드한다.
openlave 재빌드
% cd ~/LSF/openlava-2.2
% ./configure
% make
% su
% make install
openlave 셋팅
% cd ~/LSF/openlava-2.2
% cd config
% su
% cp lsb.hosts lsb.params lsb.queues lsb.users lsf.cluster.openlava lsf.conf lsf.shared openlava.* /opt/openlava-2.2/etc
% useradd -r openlava
% chown -R openlava:openlava /opt/openlava-2.2
% cp /opt/openlava-2.2/etc/openlava /etc/init.d
% cp /opt/openlava-2.2/etc/openlava.* /etc/profile.d
% chkconfig openlava on
% cd /opt/openlava-2.1/etc
% vim lsf.cluster.openlava
아래 부분의 호스트 이름을 수정한다.
Begin Host
HOSTNAME model type server r1m RESOURCES
# yourhost IntelI5 linux 1 3.5 (cs)
End Host
위를 아래처럼..
Begin Host
HOSTNAME model type server r1m RESOURCES
ihmin ! ! 1 - -
End Host
다음 host를 추가한다.
% vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.6 ihmin localhost localhost.localdomain
openlava 데몬 실행
% . /etc/profile.d/openlava.sh
% vim /etc/init.d/openlava
# This is the root of openlava installation
# change it if installed somewhere else.
export OPENLAVA_TOP=/opt/openlava-2.2
# 아래의 라인을 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
% service openlava start
Starting daemons...
lim started
res started
sbatchd started
% vim /etc/bashrc
# 끝 부분에 아래를 추가
export PATH=$PATH:/opt/openlava-2.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
% source /etc/bashrc
% bjobs
No unfinished job found
이제 bjobs가 제대로 실행된다.
submit 테스트
% vim test.job
find / -name "*.so"
# 아래와 같이 queue 이름과 CPU 갯수, 프로젝트 이름, 로그 파일 이름을 지정
% bsub -q normal -n 1 -P test -o test.log < test.job
Job <104> is submitted to queue <normal>.
$ bsub -q normal -n 1 -P test -o test.log < test.job
Job <105> is submitted to queue <normal>.
$ bsub -q normal -n 1 -P test -o test.log < test.job
Job <106> is submitted to queue <normal>.
$ bsub -q normal -n 1 -P test -o test.log < test.job
Job <107> is submitted to queue <normal>.
$ bsub -q normal -n 1 -P test -o test.log < test.job
Job <108> is submitted to queue <normal>.
$ bjobs
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
105 ihmin RUN normal ihmin ihmin *me "*.so" Jan 16 11:51
106 ihmin PEND normal ihmin *me "*.so" Jan 16 11:51
107 ihmin PEND normal ihmin *me "*.so" Jan 16 11:51
108 ihmin PEND normal ihmin *me "*.so" Jan 16 11:51
openlava를 통해서 스케쥴링이 잘 되는 것을 확인할 수 있다.
이 외에도 LSF와 호환되기에 LSF의 커맨드를 그대로 이용가능하다..
cd /opt/openlava-2.2/bin/
$ ls
badmin bkill bqueues bsub lam-mpirun lsid lsrcp
bbot bmgroup brequeue bswitch lsacct lsinfo lsrmhost
bchkpnt bmig brestart btop lsaddhost lsload lsrun
bhist bmod bresume bugroup lsadmin lsloadadj mpich2-mpiexec
bhosts bparams brun busers lseligible lsmon mpich-mpirun
bjobs bpeek bstop esync lshosts lsplace openmpi-mpirun