이번 글에서는 HPC에서 많이 사용되는 SLURM 잡 스케줄러를 구축해보려고 한다.
slurm은 잡 스케줄러인만큼, 클러스터에 설치되어 대량의 노드에 작업을 배치성 작업을 제출하고 관리하는데 유용하다.
slurm을 구성하는 가장 간단한 방법 중 하나를 수행해보고자 한다.
대규모의 slurm cluster를 구성하기 위해서는 많은 구성이 필요하지만 여기서는 하나의 노드에 slurm을 구성하는 것을 시작으로 하여, 규모가 좀 있는 (수~ 수십개의 노드) 클러스터에서는 어떤 구성들이 추가되는 지 하나씩 차근차근 발전시켜 나가보자.
이 글에서는 다음과 같은 환경에서 slurm cluster가 구성된다
설치 환경
- 1개의 Master Node
- OS는 Ubuntu 22.04
- CPU 2 Cores, RAM 4GB
소스코드 설치
# 의존 패키지 구성
apt update
apt install -y bzip2
# source code build
cd /opt
wget https://download.schedmd.com/slurm/slurm-23.02.4.tar.bz2
tar -xf slurm-23.02.4.tar.bz2
cd slurm-23.02.4
./configure
빌드 끝 ?
첫 판 부터 잘 될리가 없죠 ?
root@slurm-master:/home/ubuntu/slurm-23.02.4# ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... no
checking whether make supports nested variables... no
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether to include rpath in build... yes
checking whether make supports the include directive... no
checking for gcc... no checking for cc... no
checking for cl.exe... no
checking for clang... no
configure: error: in `/home/ubuntu/slurm-23.02.4':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
여기서 많은 분들이 포기합니다. 여기서 중요한 것은 로그를 잘 살펴봐야합니다.
이게 무슨상황이냐하면, 컴퓨터 (여기서는 slurm-master 노드)가 사용자의 명령에 따라 slurm 이라는 패키지를 build하기전에 개발자가 만들어놓은 체크리스트를 보고 build에 필요한 프로그램이 다 있는지 확인하는 과정에서 에러가 발생했습니다. 서버환경이 무엇이고 무슨 프로그램이 어디있고 찾는과정에서,
checking whether make sets $(MAKE)... no
make 라는 프로그램이 있는지 확인했는데 없다고 (no) 라고 알려주는 상황입니다.
사실 상황만 두고 보면 아주 행운인거죠. 아무런 내용도 출력하지 않고 작동하지 않는 최악의 상황에 빗대면 말이죠.
그럼, 우리는 어떻게 하면 될까요 ?
아주 간단합니다. make 프로그램을 설치해볼까요?
apt install make -y
자, 다시 빌드를 해봅시다.
root@slurm-master:/home/ubuntu/slurm-23.02.4# ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether to include rpath in build... yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... no checking for cc... no
checking for cl.exe... no checking for clang... no
configure: error: in `/home/ubuntu/slurm-23.02.4':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
잘 찾아보면, 이번에는 make가 존재한다고 나타납니다. 이렇게 해결하시면 됩니다.
모든 과정을 다 해볼 수 없으니 중복되는 내용은 조금 빠르게 넘어가봅시다.
나머지 의존성 패키지를 설치합니다.
apt install -y gcc
이번에는 configure가 에러 없이 잘 되었습니다.
에러는 프롬프트에 직접적으로 출력되기도 하지만, config.log 파일에는 더 상세하게 기록되어 있습니다.
configure가 정상적으로 끝났으니 다음 단계로 넘어가봅시다.
make && make install
이제 본격적으로 빌드를 해보겠습니다.
make && make install
위 명령어를 사용해 build를 종료해줍니다.
slurm build 성공입니다.
근데 아직 끝난 게 아니라 build한 slurm 프로그램이 어디있는지 확인해봅시다.
$ which slurmd
/usr/local/sbin/slurmd # 이 위치에 있네요.
$ which sinfo
/usr/local/bin/sinfo
$ ls /usr/local/bin/s*
/usr/local/bin/sacct /usr/local/bin/sbcast /usr/local/bin/sinfo /usr/local/bin/sshare /usr/local/bin/sacctmgr /usr/local/bin/scancel /usr/local/bin/sprio /usr/local/bin/sstat /usr/local/bin/salloc /usr/local/bin/scontrol /usr/local/bin/squeue /usr/local/bin/strigger /usr/local/bin/sattach /usr/local/bin/scrontab /usr/local/bin/sreport /usr/local/bin/sbatch /usr/local/bin/sdiag /usr/local/bin/srun
configure에서 prefix를 별도로 지정해주지 않으면 이렇게 slurm 관련 프로그램이 /usr/local/sbin, /usr/local/bin에 설치됩니다. 이때 prefix를 설정하려면, ./configure --prefix=[설치경로] 와 같이 옵션을 추가해주시면 됩니다.
아직까지는
slurm 프로그램을 실행하면 에러가 발생합니다.
root@slurm-master:/home/ubuntu/slurm-23.02.4# sinfo
sinfo: error: resolve_ctls_from_dns_srv: res_nsearch error: Unknown host
sinfo: error: fetch_config: DNS SRV lookup failed
sinfo: error: _establish_config_source: failed to fetch config
sinfo: error: _establish_config_source: failed to fetch config
sinfo: fatal: Could not establish a configuration source
다음 포스팅에서는 이 문제를 어떻게 해결하고 또 slurm.conf 파일 구성을 어떻게 구성해야하는지 다뤄보도록 하겠습니다.
'HPC > Scheduler' 카테고리의 다른 글
SLURM configuration 파일 톺아보기 (0) | 2023.09.09 |
---|