슬럼 워크로드 매니저

**슬럼 워크로드 매니저**()는 이전에는 **자원 관리를 위한 단순 리눅스 유틸리티**(, **SLURM**)로 알려졌으며, 간단히 **슬럼**(Slurm)이라고도 한다. 리눅스 및 유닉스 계열 커널을 위한 자유-오픈 소스 작업 스케줄러로, 전 세계의 많은 슈퍼컴퓨터와 컴퓨터 클러스터에서 사용된다.

슬럼은 세 가지 핵심 기능을 제공한다.
* 사용자가 일정 시간 동안 작업을 수행할 수 있도록 자원(컴퓨터 노드)에 대한 독점적 또는 비독점적 액세스를 할당한다.
* 할당된 노드 집합에서 메시지 전달 인터페이스(MPI)와 같은 병렬 작업을 시작, 실행 및 모니터링하기 위한 프레임워크를 제공한다.
* 대기 중인 작업의 큐를 관리하여 자원에 대한 경합을 중재한다.

슬럼은 TOP500 슈퍼컴퓨터의 약 60%에서 사용되는 워크로드 매니저이다.

슬럼은 병렬 컴퓨터에서 작업 할당의 지역성을 최적화하기 위해 힐베르트 곡선 스케줄링 또는 팻 트리(fat tree) 네트워크 토폴로지에 기반한 최적 적합 빈 패킹 알고리즘(best-fit bin packing algorithm)을 사용한다.

## 역사
슬럼은 로렌스 리버모어 국립연구소, SchedMD, Linux NetworX, 휴렛 팩커드, 그룹 불이 협력하여 자유 소프트웨어 자원 관리자로 개발하기 시작했다. 첫 번째 배포는 2002년에 이루어졌다. 이는 소스가 공개되지 않은 Quadrics RMS에서 영감을 받았으며 유사한 구문을 공유한다. 이름은 퓨처라마에 등장하는 음료에서 따온 것이다. 전 세계적으로 250명 이상의 사람들이 이 프로젝트에 기여했다. 이후 많은 대형 컴퓨터 센터의 요구 사항을 충족할 수 있는 정교한 배치 스케줄러로 진화했다.

, 세계에서 가장 강력한 컴퓨터 목록인 TOP500에 따르면 슬럼은 상위 10개 시스템 중 절반 이상에서 워크로드 매니저로 사용되고 있다.

## 구조
슬럼의 설계는 약 100개의 선택적 플러그인을 갖춘 고도의 모듈식 구조이다. 가장 단순한 구성에서는 몇 분 안에 설치 및 구성이 가능하다. 더 정교한 구성은 회계(accounting), 자원 제한 관리 및 워크로드 우선순위 지정을 위한 데이터베이스 통합을 제공한다.

## 특징
슬럼의 특징은 다음과 같다:

* 단일 장애점(SPOF) 없음, 백업 데몬, 결함 허용 작업 옵션
* 높은 확장성 (IBM 세쿼이아의 100,000개 소켓에서 최대 100,000개의 독립적인 작업 스케줄링)
* 고성능 (초당 최대 1,000건의 작업 제출 및 초당 600건의 작업 실행)
* 자유-오픈 소스 소프트웨어 (GNU 일반 공중 사용 허가서)
* 약 100개의 플러그인으로 고도의 설정 가능
* 계층적 은행 계정을 통한 페어 쉐어(Fair-share) 스케줄링
* 선점 및 갱(gang) 스케줄링 (병렬 작업의 시분할)
* 회계 및 구성을 위한 데이터베이스 통합
* 네트워크 토폴로지 및 노드 내 토폴로지(소켓, 코어 및 하이퍼스레드)에 최적화된 자원 할당
* 고급 예약
* 유휴 노드의 전원 차단 가능
* 작업마다 다른 운영체제 부팅 가능
* 범용 자원(예: 그래픽 처리 장치)에 대한 스케줄링
* 작업 단계까지 내려가는 실시간 회계 (높은 CPU 또는 메모리 사용량을 보이는 특정 작업 식별)
* 사용자 또는 은행 계정별 자원 제한
* 작업별 전력 소비량 회계
* IBM Parallel Environment (PE/POE) 지원
* 작업 배열(job arrays) 지원
* 작업 프로파일링 (각 작업의 CPU 사용량, 메모리 사용량, 전력 소비, 네트워크 및 파일 시스템 사용량의 정기적 샘플링)
* 정교한 다요소 작업 우선순위 지정 알고리즘
* MapReduce+ 지원
* 과학 데이터 이동을 가속화하는 버스트 버퍼 지원
* 이기종 범용 자원 지원
* 종료 값에 따른 자동 작업 재대기 정책

## 지원 플랫폼
최근 슬럼 릴리스는 리눅스에서만 실행된다. 이전 버전은 FreeBSD, NetBSD, OpenBSD를 포함한 몇몇 다른 POSIX 기반 운영체제로 이식된 적이 있었으나, 현재 슬럼은 핵심 동작을 위해 Cgroups를 필요로 하므로 더 이상 가능하지 않다. 리눅스 이외의 운영체제를 실행하는 클러스터는 LPJS와 같은 다른 배치 시스템을 사용해야 한다. 슬럼은 다음과 같은 몇 가지 독특한 컴퓨터 아키텍처도 지원한다:
* 20 페타플롭급 IBM 세쿼이아를 포함한 IBM BlueGene/Q 모델
* Cray XT, XE 및 Cascade
* 32,000개의 인텔 아이비브리지 칩과 48,000개의 인텔 제온 파이 칩을 탑재하여 총 310만 개의 코어를 가진 33.9 페타플롭급 시스템인 텐허-2
* IBM Parallel Environment
* Anton

## 라이선스
슬럼은 GNU 일반 공중 사용 허가서 v2에 따라 사용할 수 있다.

## 상용 지원
2010년, 슬럼 개발자들은 표준 소스를 유지 관리하고 개발, 레벨 3 상용 지원 및 교육 서비스를 제공하는 SchedMD를 설립했다. 상용 지원은 Bull, Cray 및 Science + Computing(Atos의 자회사)에서도 받을 수 있다.

## 사용법
섬네일|슬럼은 작업의 여러 단계를 구분한다
`slurm` 시스템은 세 가지 주요 부분으로 구성된다:

* `slurmctld`: 단일 제어 노드에서 실행되는 중앙 제어 데몬 (선택적으로 장애 극복 기능 백업 포함)
* `slurmd`: 각 컴퓨팅 노드에서 실행되는 하나 이상의 데몬
* 클라이언트: 주로 ssh를 통해 매니저 노드에 연결

클라이언트는 제어 데몬에 명령을 내릴 수 있으며, 제어 데몬은 이를 수락하고 컴퓨팅 데몬에 워크로드를 분배한다.

클라이언트의 주요 명령은 `srun`(대화형 작업 대기열 등록), `sbatch`(작업 대기열 등록), `squeue`(작업 대기열 출력) 및 `scancel`(대기열에서 작업 제거)이다.

작업은 배치 모드 또는 대화형 모드로 실행될 수 있다. 대화형 모드의 경우, 컴퓨팅 노드는 셸을 시작하고 클라이언트를 여기에 연결하여 작업을 실행한다. 사용자는 작업이 실행되는 동안 이를 관찰하고 상호작용할 수 있다. 일반적으로 대화형 작업은 초기 디버깅에 사용되며, 디버깅 후에는 동일한 작업이 `sbatch`를 통해 제출된다. 배치 모드 작업의 경우, `stdout` 및 `stderr` 출력은 나중에 확인하기 위해 일반적으로 텍스트 파일로 저장된다.

## 같이 보기
* 클러스터용 작업 스케줄러 및 배치 큐잉
* 네트워크 스케줄러
* 베오울프 클러스터

## 각주

## 더 읽어보기

* 
* 
* 
* 

## 외부 링크
* 
* Slurm 문서
* Slurm Workload Manager 아키텍처 구성 및 사용법
* Caltech HPC 센터: 작업 스크립트 생성기

분류:병렬 컴퓨팅
분류:클러스터 컴퓨팅
분류:C로 작성된 자유 소프트웨어
분류:GPL 라이선스 소프트웨어