[Linux] LSF 사용법
LSF는 Load Sharing Facility의 약자로 IMB에서 제공하는 서비스다. 이는 UNIX 운영체제에서 범용적인 분산 컴퓨팅 시스템이다. 이전에 앞서 포스팅 한 slurm과 같은 역할을 한다.
(Slurm 사용법)
LSF도 기본적으로 유용한 명령어에 대해 소개한다.
bsub
Job을 LSF로 전달하는 명령어로 argument를 함께 전달한다. 가장 많이 사용되는 명령어다.
$ bsub [options] command [arguments]
Option | Description |
---|---|
-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
Option | Description |
---|---|
-l | List of kill signals |
-u | 특정 user의 job에 kill signal 전달 |
0 | 현재 queue에 들어간 모든 job들을 kill 한다.$ bkill 0 |
Reference
- https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=reference-bkill