Проект

Общее

Профиль

Manual queue » История » Редакция 5

Редакция 4 (Дмитрий Чубаров, 10.08.2018 15:38) → Редакция 5/6 (Дмитрий Чубаров, 10.08.2018 15:47)

h1. Система очередей 

 Для доступа к ресурсам кластера используется система управления вычислительными ресурсами "SLURM":https://slurm.schedmd.com/. 

 {{toc}} 

 h2. Использование 

 Система выполняет как традиционные команды PBS (qsub, qstat), так и специфические команды SLURM. 

 h2. 

 h3. Структура кластера 

 Структура и состояние кластера отображается командой "@sinfo@":https://slurm.schedmd.com/sinfo.html 

 <pre> 
 PARTITION AVAIL    TIMELIMIT    NODES    STATE NODELIST 
 fogs           up     infinite        2    alloc fog[2,8] 
 fogs           up     infinite        6     idle fog[1,3-7] 
 fms            up     infinite        1    alloc fm1 
 fms            up     infinite        3     idle fm[2-4] 
 preempt        up     infinite        4    alloc fm1,fog[2,8],mathserv 
 preempt        up     infinite       10     idle fm[2-4],fog[1,3-7],ts 
 preempt        up     infinite        1     down gis-eng3 
 all*           up     infinite        4    alloc fm1,fog[2,8],mathserv 
 all*           up     infinite       10     idle fm[2-4],fog[1,3-7],ts 
 all*           up     infinite        1     down gis-eng3 
 </pre> 

 В структуре кластера выделены два подраздела fogs и fms, представляющие собой однородные кластеры  

 |_. подраздел |_. число узлов |_. основной процессор |_. коммуникация |_. сопроцессор | 
 | fogs | 8 | 2x AMD O2435 | InfiniBand DDR | нет | 
 | fms    | 4 | 2x Intel Xeon X5675 | Gigabit Ethernet | 4x NVIDIA Tesla C2070 | 

 Все узлы кластера объединены в раздел @all@. Раздел @preempt@ выделен для служебных задач. 

 Узел @gis-eng3@ служит головным узлом кластера и выведен из под управления SLURM. 

 h2. 

 h3. Интерактивный режим 

 h3. h4. Команды SLURM 

 Для работы в интерактивном режиме необходимо 

 # Зарезервировать ресурсы командой "@salloc@":https://slurm.schedmd.com/salloc.html @salloc@ 
 # Выполнять команды в рамках выделенных ресурсов командой "@srun@":https://slurm.schedmd.com/srun.html srun 
 # Освободить ресурсы командой @exit@ 

 Примеры: 

 h4. h5. Пример 1. Запуск нескольких команд на одном узле из раздела @fms@ 

 <pre> 
 (gis-eng3)$ salloc -N1 -p fms --exclusive  
 salloc: Granted job allocation 19877 
 (gis-eng3)$ srun /bin/hostname 
 fm2.cl.localnet 
 (gis-eng3)$ srun gcc --version 
 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 
 Copyright (C) 2015 Free Software Foundation, Inc. 
 This is free software; see the source for copying conditions.    There is NO 
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

 (gis-eng3)$ exit 
 exit 
 salloc: Relinquishing job allocation 19877 
 </pre> 

 h4. h5. Пример 2. Запуск интерпретатора команд на узле 

 <pre> 
 (gis-eng3)$ salloc -N1 -p fms --exclusive 
 salloc: Granted job allocation 19878 
 (gis-eng3)$ srun --pty /bin/bash 
 (fm2)$ /bin/hostname 
 fm2.cl.localnet 
 (fm2)$ gcc --version 
 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 
 Copyright (C) 2015 Free Software Foundation, Inc. 
 This is free software; see the source for copying conditions.    There is NO 
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

 (fm2)$ exit 
 exit 
 (gis-eng3)$ exit 
 exit 
 salloc: Relinquishing job allocation 19878 
 </pre> 
 Этот вариант удобен, если выполняемые команды требуют установки переменных окружения. 

 h4. h5. Пример 3. Запуск команды одной строкой 

 <pre> 
 (gis-eng3)$ srun -N1 -p fms /bin/hostname 
 fm2.cl.localnet 
 </pre> 

 h3. h4. Команды PBS 

 Команда @qsub -I@ эквивалентна команде @salloc@ 

 h4. h5. Пример 4 

 <pre> 
 (gis-eng3)$ qsub -I 
 salloc: Granted job allocation 19880 
 (gis-eng3)$ srun /bin/hostname 
 fm2.cl.localnet 
 (gis-eng3)$ exit 
 exit 
 salloc: Relinquishing job allocation 19880 
 </pre> 

 h2. h3. Пакетный режим 

 h3. h4. Команды SLURM 

 Для резервирования ресурсов и запуска задач в пакетном режиме используется команда "@sbatch@":https://slurm.schedmd.com/sbatch.html. @sbatch@. 

 Аргументы для команды можно включить в текст скрипта пакетной задачи: 

 <pre> 
 #!/bin/bash 
 #SBATCH --nodes=1 
 #SBATCH --ntasks=1 
 #SBATCH --cpus-per-task=12 
 #SBATCH --partition=fms 

 srun /bin/hostname 
 </pre> 

 Поставить задачу в очередь на выполнение можно командой 
 <pre> 
 sbatch slurm-test.job 
 </pre> 
 Когда ресурсы освободятся, этот скрипт выполнится на одном из узлов из раздела @fms@. 

 h3. h4. Команды PBS 

 <pre> 
 $ qsub qsub-test.sh 
 </pre> 

 Скрипт @qsub-test.sh@ может использовать в качестве синтаксиса резервирования ресурсов как синтаксис Torque, так и синтаксис PBS Professional 

 <pre> 
 #!/bin/bash 
 # Using Torque syntax 
 #PBS -q fms 
 #PBS -l nodes=1:ppn=12 

 /bin/hostname 
 </pre> 

 <pre> 
 #!/bin/bash 
 # Using PBS Professional syntax 
 #PBS -q fms 
 #PBS -l select=1:ncpus=12 

 /bin/hostname 
 </pre> 

 При успешной постановке в очередь будет показан id, присвоенный задаче. 

 Команда @qsub scriptname@ эквивалентна команде с учетом трансляции директив @#PBS@ в директивы @#SLURM@ 
 <pre>/usr/bin/sbatch -e scriptname.e%A -o scriptname.o%A scriptname 2>&1</pre> 

 h2. Просмотр состояния очереди 

 h3. Команды SLURM 

 Для отображения состояния очереди используется команда "@squeue@":https://slurm.schedmd.com/squeue.html 

 Формат отображения представлен ниже 
 <pre> 
 JOBID PARTITION       NAME       USER ST         TIME    NODES NODELIST(REASON) 
 19074     preempt gitlab-c       root    R 16-00:42:19        1 fog8 
 19246         all jupyter-      user1    R 15-04:20:50        1 fog2 
 19257         all jupyter-      user2    R 14-23:24:30        1 fm1 
 19868         all    taverna      user3    R       5:10:41        1 mathserv 
 </pre> 

 h3. Команды PBS 

 Команда @qstat@ отображает список задач в очереди в формате, привычном пользователям PBS 

 <pre> 
 Job id                Name               Username          Time Use S Queue           
 ------------------- ---------------- --------------- -------- - --------------- 
 19074                 gitlab-ci          root              16:00:45 R preempt         
 19246                 jupyter-           user1             15:04:24 R all             
 19257                 jupyter-           user2             14:23:28 R all             
 19868                 taverna            user3             00:05:14 R all             
 </pre>