大数跨境
0
0

利用作业调度系统提升在高性能集群中生物信息数据分析效率

利用作业调度系统提升在高性能集群中生物信息数据分析效率 Dr.X的基因空间
2024-02-29
0
导读:利用PBS或SLURM作业调度管理系统加速生物信息大数据分析进程

PBS及SLURM作业管理系统背景和初级使用方法介绍

写在前面的
高性能计算集群通常是面向用户群体数据分析而设计的,在高性能计算集群中不同的用户会在任意的时间提交若干数据分析任务。每个任务可能会占用若干计算资源。由于高性能计算集群依然存在资源上限,为了满足同时处理不同用户的分析需求而合理调配相应资源,作业管理调度系统便诞生。作业管理系统会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业(无论是批处理作业还是交互式作业)。当所有的用户都使用作业管理调度系统时,才能充分保证合理地理由集群资源。也能对集群的软件使用寿命起到最大程度的保护。面向生物信息大型数据分析,用户有必要学习了解相关作业管理调度系统的使用及相应作业设置的编写。这样也能从一个方面提高自己分析数据的效率。

作业管理调度系统分类

目前市场上主要流行四大作业管理系统,它们分别是LSF/SGE/PBS/Slurm。这四大作业管理系统有各自的特点。由于不同的行业对作业的需求及使用习惯不同,因此对作业管理系统的的调度器和对应的支持力度不同,往往存在偏好差异。比如高校和超算经常使用Slurm,于半导体相关的材料公司偏好使用LSF和SGE,偏向应用或工业生产的单位倾向于使用PBS。在生物信息领域,我发现不同的单位比较偏好使用PBS或Slurm作业管理系统。因此这一期推送主要介绍PBS和Slurm作业管理系统的背景及初级使用方法。便于每一个有集群生物信息数据分析需求的读者能方便地利用作业管理调度系统高效地完成自己的数据分析。

PBS作业管理系统

PBS作业管理系统(PBS Job Management System)是一种用于管理和调度计算资源的高性能计算(HPC)软件。它具有以下特点:

  1. 高可靠性:PBS作业管理系统是一种分布式系统,能够运行在多台计算机上,并具有高度容错和自动故障恢复功能,确保作业的正常运行。

  2. 灵活性:PBS作业管理系统可以根据用户提交的作业需求进行灵活调度,根据资源的可用性、作业的优先级、用户的权限等因素,实现智能调度。

  3. 高性能:PBS作业管理系统可以对作业进行合理的分配和优化,利用计算资源的最大化,提高计算效率和作业完成速度

  4. 扩展性:PBS作业管理系统支持大规模集群计算,能够同时管理数千甚至数万个计算节点,可便捷地扩展到更多的计算资源。

  5. 用户友好性:PBS作业管理系统提供了用户友好的命令行界面和图形化界面,使用户可以方便地提交和管理作业,查看作业状态和统计信息。

  6. 权限管理:PBS作业管理系统可以对不同用户或用户组设置不同的权限,确保安全性并方便管理员进行作业的管理和监控。

  7. 作业调度策略:PBS作业管理系统支持多种作业调度策略,如先进先出(FIFO)、最短作业优先(SJF)、公平共享(Fair-Share)等,可以根据实际需求进行灵活调整。

  8. 任务依赖性管理:PBS作业管理系统可以管理作业之间的依赖关系,设置作业的前置条件和后置操作,确保作业按照指定的顺序运行。

SLURM作业管理系统

SLURM(Simple Linux Utility for Resource Management)是一种用于管理和调度计算资源的开源作业管理系统。SLURM系统具有和PBS系统类似的特征,如上面所述。但是由于两个作业调度系统诞生的年代不同,因此SLURM系统于PBS系统相比还存在其他的差异:

1.发展历史:SLURM是从2002年开始开发的,而PBS作业管理系统的起源可以追溯到1970年代。SLURM在设计上更加现代化,并利用了更多的新技术和方法。

2.架构:SLURM是基于分布式架构设计的,可以跨多个计算节点进行扩展,具有良好的可伸缩性和容错性。而PBS系统则是一个集中式的架构,管理和调度由中央服务器完成。

3.可扩展性:SLURM的可扩展性非常好,可以管理数千台计算节点,并提供强大的资源管理和作业调度功能。而PBS系统在大规模高性能计算环境中的扩展性可能相对较差。

4.社区支持:SLURM是一个开源项目,具有活跃的社区支持和持续的开发更新。而PBS系统的源代码并不是开源的,分为商业版本和开放版本。

5.生态系统:SLURM在学术界和科学研究领域得到广泛应用,尤其在大规模计算集群环境中。而PBS系统在商业环境中较为常见,许多大型科研机构和企业使用PBS作为其高性能计算的管理系统。

PBS作业系统常用命令

qsub:提交作业 
qdel:取消作业 
qsig:给作业发送信号 
qhold:挂起作业 
qrls:释放挂起的作业 
qrerun:重新运行作业 
qmove:将作业移动到另一个队列 
qalter: 更改作业资源属性
qstat:显示作业状态
showq: 查看所有作业
pbsnodes:列出集群中所有节点的状态和属性

PBS脚本常用设置

#!/bin/bash
#PBS -l nodes=3:ppn=6 //即设定该作业所需3个节点,每个节点使用6核
#PBS -l Nodes=node1:ppn=6+node2:ppn=5 //设定node1中6个核及node2中5个核计算
#PBS -l walltime=1500:00:00 //设定最大运行等待时间
#PBS -j oe
#PBS -q batch
cd $PBS_O_WORKDIR //进入到工作路径

source /home/mishika/miniconda3/envs/NGS   #导入环境变量文件

bash NGS-data-pipeline.sh

Slurm作业系统常用命令

sacct: 查看激活的或已完成作业的记录信息。
salloc:分配资源启动shell
sbatch:提交并运行作业程序
scancel:取消排队或运行中的作业
scontrol:显示或设定Slurm作业、队列、节点等状态。
sinfo:显示队列或节点状态。
squeue:显示队列中的作业及作业步状态。

Slurm脚本常用设置

#!/bin/bash                     %运行shell
#SBATCH --job-name=JOBNAME      %设置作业名称
#SBATCH --partition=debug       %设置分区
#SBATCH --nodes=6               %设置节点数量
#SBATCH --cpus-per-task=6       %设置每个进程使用核数
#SBATCH -n 36       %设置总进程数
#SBATCH --ntasks-per-node=16    %设置每个节点进程数/核数,使用-n参数(优先级更高),变为每个节点最多运行的任务数
#SBATCH --nodelist=node[3,4]    %设置优先使用节点
#SBATCH --exclude=node[1,5-6]   %设置避免使用节点
#SBATCH --time=dd-hh:mm:ss      %作业最大运行时长,参考格式填写
#SBATCH --output=file_name      %设置输出文件输出
#SBATCH --error=file_name       %设置错误文件输出

source /home/mishika/miniconda3/envs/NGS   #导入环境变量文件

bash NGS-data-pipeline.sh 

写在后面的
作业管理系统的熟悉需要在计算集群上实际操作分析,不同的操作系统及作业管理系统版本的不同可能会带来一些细微的命令差异。本推送中的命令代码不一定适用于所有PBS或SLURM系统


【声明】内容源于网络
0
0
Dr.X的基因空间
【中国科学院博士】10年生命科学数据挖掘研究经验,关注生物医药领域体外诊断(IVD)方向,如肿瘤早筛、传染病未知病原快速检测中的技术创新及其与人工智能(AI)的赋能应用
内容 176
粉丝 0
Dr.X的基因空间 【中国科学院博士】10年生命科学数据挖掘研究经验,关注生物医药领域体外诊断(IVD)方向,如肿瘤早筛、传染病未知病原快速检测中的技术创新及其与人工智能(AI)的赋能应用
总阅读92
粉丝0
内容176