Linux,  Programming

[Linux] LSF 사용법

LSF는 Load Sharing Facility의 약자로 IMB에서 제공하는 서비스다. 이는 UNIX 운영체제에서 범용적인 분산 컴퓨팅 시스템이다. 이전에 앞서 포스팅 한 slurm과 같은 역할을 한다.
(Slurm 사용법)

LSF도 기본적으로 유용한 명령어에 대해 소개한다.

bsub

Job을 LSF로 전달하는 명령어로 argument를 함께 전달한다. 가장 많이 사용되는 명령어다.

$ bsub [options] command [arguments]
OptionDescription
-q [queue name]bqueues에 명시된 queue 중 하나에 job을 추가
-o [stdout file]standard output file을 명시
-app [specified app profile]어떤 이름의 app으로 명명할지 지정
-n [the number of tasks in the job]Parallel job을 제출 할 때 사용하는 옵션
-R [resource requirement]Job을 던질 때 server의 hardware spec이 특정 조건을 만족하는 server로 돌아갈 수 있도록 명시
Ex.) -R “rusage[mem=1024:duration=60]”

Resource requirement list는 다음과 같다.
1) A selection section (select). The selection section specifies the criteria for selecting execution hosts from the system.
2) An ordering section (order). The ordering section indicates how the hosts that meet the selection criteria should be sorted.
3) A resource usage section (rusage). The resource usage section specifies the expected resource consumption of the task.
4) A job spanning section (span). The job spanning section indicates if a parallel job should span across multiple hosts.
5) A same resource section (same). The same section indicates that all processes of a parallel job must run on the same type of host.
6) A compute unit resource section (cu). The compute unit section specifies topological requirements for spreading a job over the cluster.
7) A CPU and memory affinity resource section (affinity). The affinity section specifies CPU and memory binding requirements for tasks of a job.

bsub Example

$ bsub -q short -o my_output_file "pwd; ls"
$ ls
a.out  assembly  bsub  cpp  main.cpp  my_output_file  python  system_programming  systemc
$ cat my_output_file
/user/sip/users/km.hero.lee.l/07_Workspace/tests
1541427.out
a.out
assembly
bsub
cpp
main.cpp
my_output_file
python
system_programming
systemc

------------------------------------------------------------
Sender: LSF System <gsspool@slice0642>
Subject: Job 1560408: <pwd; ls> in cluster <gscr1> Done
...

bqueues

Job queue들의 상태를 나열해준다.

$ bqueues
QUEUE_NAME      PRIO STATUS          MAX JL/U JL/P JL/H NJOBS  PEND   RUN  SUSP 
bigmem           70  Open:Active       -    -    -    -     0     0     0     0
PTMC1216         70  Open:Active       -    -    -    -  2601     0  2601     0
multicore16      60  Open:Active       -    -    -    - 28080   688 27392     0
gui              50  Open:Active       -    -    -    -  1828    19  1809     0
gvc              50  Open:Active       -    -    -    -     0     0     0     0
multicore12      50  Open:Active       -    -    -    -  6632     0  6632     0
multicore        40  Open:Active       -    -    -    - 18056  1332 16724     0
multinode        30  Open:Active       -    -    -    -  2032     0  2032     0
totem_large      30  Open:Active       -    -    -    -     5     0     5     0

bjobs

현재 running 중인 job들을 출력한다.

$ bjobs
JOBID      USER    STAT  QUEUE      FROM_HOST EXEC_HOST      JOB_NAME   SUBMIT_TIME  APPLICATION
1542475    shumin  PEND  normal     host            -        *PUT a.out Aug 24 13:56 perf

bkill

Kill signal을 전달하기 위한 명령어로, job을 죽이거나 중지할 때 사용한다.
참고로 kill에 사용되는 signal 종류는 다음과 같다.

$ bkill -l
HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST URG USR1 USR2 
OptionDescription
-lList of kill signals
-u특정 user의 job에 kill signal 전달
0현재 queue에 들어간 모든 job들을 kill 한다.
$ bkill 0

Reference

  1. https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=reference-bkill

Leave a Reply

Your email address will not be published. Required fields are marked *