# slurm 기초 명령어
다음은 각각의 SLURM 명령어에 대한 간략한 설명입니다:
1. **sinfo**: SLURM 클러스터의 노드와 파티션의 상태 정보를 보여줍니다. 사용 가능한 노드, 파티션, 그리고 각 상태의 세부 사항들을 제공합니다.
2. **squeue**: 클러스터에 제출된 작업 목록을 보여줍니다. 작업의 ID, 상태, 사용자, 실행 시간 등과 같은 정보를 포함합니다.
3. **scancel**: 진행 중이거나 대기 중인 작업을 취소합니다. 특정 작업 ID나 사용자의 모든 작업을 취소할 수 있습니다.
4. **scontrol**: SLURM 리소스와 설정을 관리하고 수정합니다. 노드의 설정을 변경하거나 작업의 우선순위를 조정하는 등의 기능을 수행합니다.
5. **sstat**: 실행 중인 작업의 세부 리소스 사용 정보를 제공합니다. CPU 사용량, 메모리 사용량, 입출력 정보 등을 확인할 수 있습니다.
6. **sview**: SLURM 클러스터의 상태를 그래픽 인터페이스를 통해 시각적으로 보여줍니다. 이 도구는 작업과 노드의 상태를 한눈에 파악할 수 있게 도와줍니다.
uclick@slurm-master2:/storage/slurm-23.11.6$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
cpu up infinite 2 idle slurm-worker[1-2]
all* up infinite 1 down* slurm-master2
all* up infinite 2 idle slurm-worker[1-2]
uclick@slurm-master2:/storage/slurm-23.11.6$ squeue -w slurm-worker1
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
uclick@slurm-master2:/storage/slurm-23.11.6$ scontrol show node slurm-worker1
NodeName=slurm-worker1 Arch=x86_64 CoresPerSocket=1
CPUAlloc=0 CPUTot=8 CPULoad=0.00
AvailableFeatures=(null)
ActiveFeatures=(null)
Gres=(null)
NodeAddr=slurm-worker1 NodeHostName=slurm-worker1 Version=20.02.1
OS=Linux 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020
RealMemory=3943 AllocMem=0 FreeMem=689 Sockets=8 Boards=1
State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
Partitions=cpu,all
BootTime=2024-05-09T01:55:41 SlurmdStartTime=2024-05-10T03:11:36
CfgTRES=cpu=8,mem=3943M,billing=8
AllocTRES=
CapWatts=n/a
CurrentWatts=0 AveWatts=0
ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
7. **srun**: 지정된 클러스터 자원에서 바로 명령이나 스크립트를 실행하는 명령어입니다.
8. *salloc**: SLURM 클러스터에서 특정 리소스를 할당받고 사용자가 쉘에서 직접 명령을 실행할 수 있도록 하는 명령어입니다.
9. **sbatch**: 스크립트 파일을 제출하여 비동기적으로 클러스터에서 실행되도록 하는 명령어입니다.
10. **sacctmgr**: SLURM 계정 관리 도구로, 계정, 사용자, 클러스터 리소스의 사용량 관리 및 모니터링을 할 수 있습니다.
11. **sreport**: SLURM 클러스터의 사용 데이터와 통계를 생성하고 보고하는 도구로, 자원 사용률, 작업 완료 시간 등 다양한 정보를 제공합니다.
# srun 활용법
==============================================================================
# slurm 구성
- slurm.conf
- slurmdbd.conf
- topology.conf
- 그 외 : plugstack.conf, gres.conf, cgroup.conf, ...
# slurm.conf 설명
1. Management Policies
- controller, backup, log, state info 위치
- Authentication
- Accounting
2. Scheduling Policies
- SchedulerType
=> sched/builtin
=> Sched/backfill
3. Allocation policies
4. Node Definition
- 각 Node 설정
5. Partition Definition
- 각 Partition 설정
# 스케줄링 방식
* SchedulerType
=> sched/builtin : Default FIFO
=> Sched/backfill: backfill 방식 (작업들이 우선순위 정책에 따라 queue에 정렬됨. 가장 우선순위가 높은 작업이 필요로 하는 리소스를 충족하지 못하는 동안, SLURM은 남아 있는 자원을 활용하여 더 작은 요구 사항을 가진 다른 작업들을 실행 가능)
* Preemption policies (클러스터에서 자원을 우선순위가 높은 작업에게 할당하기 위해 현재 실행 중이거나 대기 중인 우선순위가 낮은 작업을 일시 중지하거나 취소하는 정책)
=> preempt/partition_prio: 파티션 우선순위에 따라 선점이 이루어집니다. 높은 우선순위 파티션의 작업이 낮은 우선순위 파티션의 작업을 선점할 수 있습니다.
ex>
PartitionName=all Nodes=trek[0-63] Shared=NO Default=YES
PartitionName=P2 Nodes=trek[0-63] Shared=NO Priority=2 PreemptMode=CANCEL
PartitionName=P3 Nodes=trek[0-63] Shared=NO Priority=3 PreemptMode=REQUEUE
PartitionName=P4 Nodes=trek[0-63] Priority=1000 AllowGroups=vip
=> preempt/qos: Quality of Service (QoS) 설정에 따라 선점이 이루어집니다. 특정 QoS에 더 높은 선점 우선순위를 할당하여, 그 QoS에 속한 작업이 다른 낮은 우선순위 QoS의 작업을 선점할 수 있습니다.
=> preempt/job_prio: 작업 우선순위에 따라 선점이 이루어집니다. 우선순위가 높은 작업이 낮은 우선순위의 작업을 선점합니다.
* Allocation policies (클러스터 자원을 작업에 할당하는 방식을 결정하는 규칙이나 메커니즘을 의미)
=> Conservative Allocation (SelectType=select/cons_res) : 가장 보수적인 자원 할당 방식을 사용하여, 작업에 필요한 정확한 수의 CPU와 다른 자원을 예약
=> Linear Allocation (SelectType=select/linear) : 노드를 순차적으로 할당하며, 사용 가능한 첫 번째 노드부터 리소스를 할당
=> Cray Allocation (SelectType=select/cray) : 슈퍼컴퓨터에서 사용되는 특수한 자원 할당 정책으로, 특정 유형의 하드웨어와 환경에서 최적화된 자원 할당을 제공
=> Cloud Allocation (SelectType=select/cloud) : 클라우드 기반 환경에서 동적으로 자원을 할당하고 해제할 수 있는 정책
* Accounting (클러스터의 자원 사용과 관련된 데이터를 기록, 분석, 보고하는 프로세스)
=> 명령어 : sacctmgr , sacct, sstat, sreport
=> sacctmgr : 회계 데이터베이스 관리 명령어
- 사용자 및 계정 관리 : 클러스터를 사용하는 모든 사용자와 계정에 대한 정보를 추가, 수정, 삭제
<계정(프로젝트, 연구 그룹, 부서 또는 조직 단위) 추가> : sacctmgr add account TEST Description="Description of the account"
<사용자(유저 개인) 추가> : sacctmgr add user bob Account=example
- 리소스 사용 보고 : 특정 사용자, 계정, 또는 작업에 대한 리소스 사용 세부사항을 조회
<리소스 사용 조회> : sacctmgr show user bob
* Multifactor Prirotiy Plugin
=> PriorityType=priority/basic : FIFO 방식 (default)
=> PriorityType=priority/multifactor : Multi-factor Job Priority plugin. Accounting DB가 있어야한다.
-> Multifactor 우선순위는 작업에 대한 여러 요소를 고려하여 종합적인 우선순위 점수를 계산
-> 각 요인에 가중치를 부여하여 우선순위 조정 가능
-> slurm.conf에서 설정이 가능하며 다음과 같은 예시로 사용 가능
ex>
PriorityType=priority/multifactor
PriorityWeightAge=1000
PriorityWeightFairshare=1000
PriorityWeightJobSize=1000
PriorityWeightPartition=1000
PriorityWeightQOS=1000
'Nvidia > AI' 카테고리의 다른 글
DeepOps로 Slurm 테스트 (0) | 2024.05.20 |
---|---|
slurm ~ enroot/pyxis (0) | 2024.05.20 |
slurm 설치 (0) | 2024.05.20 |
Nvidia Nemo를 이용하여 gemma-7b 모델 사용하기 (0) | 2024.04.25 |
CNN (0) | 2023.09.05 |