服务器集群与PBS任务管理系统的常用命令

天河二号超级计算机

1. 服务器集群

  • 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器,集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。

  • 集群是一组独立的计算机(节点)的集合体,节点间通过高性能的互连网络连接;各节点除了可以作为一个单一的计算资源供交互式用户使用外,还可以协同工作并表现为一个单一的、集中的计算资源供并行计算任务使用。

1.1. 集群系统基本信息

  • 集群配制的刀片计算节点的CPU,GPU配制情况
  • 系统配备的并行文件系统,各组刀片机之间的网络连接
  • 系统配制的登陆管理节点,部署的集群管理系统。用户可根据登录节点IP,登录集群,提交作业,编译程序。

1.2. 集群计算资源列表

集群计算资源列表示例

  • 一般在搭建好集群之后,都会给出集群计算资源列表,类似于上图的几个部分。
    首先,会将整个集群划分为若干个队列(Queue),并根据队列的资源配置情况进行相应的命名; 其次,每个队列下有若干个计算节点(nodes),每个计算节点配制若干个CPU(ppn);最后,就是对集群的一些其他信息说明和限制情况说明,如,CPU的型号和核数,用户可提交的作业树,每个作业的最大运行时间等。
  • 在往集群上投递任务之前,首先要了解一下,该任务所需的计算资源是否能被集群所满足。

2. PBS任务管理系统

2.1 PBS 简介
PBS (Protable Batch System) 是一种常用的作业管理系统,其他类似的还有 LSF 和 SLURM。

  • PBS会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业(无论是批处理作业还是交互式作业)。

目前有两个版本:OpenPBS(开源)和PBSPro(商业)。TORQUE:基于PBS项目的开源软件,可以认为是开源的OpenPBS的改进版。主要包括:

  • PBS Server:运行于集群的管理节点。创建并接受作业、修改作业、激活调度器(PBS Scheduler)以及通知PBS执行器(PBS Moms)执行作业
  • PBS Scheduler:根据资源管理器获知各个节点的资源状况和系统的作业信息生成相应的作业优先级列表
  • PBS Moms:每个节点均有一个后台进程,该进程真正启动和停止提交到该节点的作业

2.2 PBS --- Torque 安装配置步骤 (来自博客)
该部分来自于博客,只为加深对PBS的理解

1、在 master(管理结点上)解压安装包

[root@master tmp]# tar zxvf torque-2.3.0.tar.gz

2、进入到解压后的文件夹
配置: ./configure--with-default-server=master
编译: make
安装: make install

[root@master torque-2.3.0]# ./configure--with-default-server=master
[root@master torque-2.3.0]# make
[root@master torque-2.3.0]# make install
  1. 生成后面安装计算节时需要的5个脚本文件, 作为在其它机器上安装用的安装包,运行完后会生成几个torque-package-*.sh文件
[root@master torque-2.3.0]# make packages
  1. 初始化配置
[root@master torque-2.3.0]# sudo ./torque.setup wangwei #设置wangwei用户为管理用户
  1. 设置计算节点
    配置 /var/spool/torque/server_priv/nodes 文件(如果没有就手动添加),指定哪些节点作为计算节点,若管理节点不参与计算则去掉ww-master
ww-master np=8
ww-slave1 np=8
ww-slave2 np=8
  1. 这里需要说明一下,Torque主要是由三个主要部件组成
    pbs_server PBS服务守护进程,负责接收作业提交,位于服务节点上
    pbs_sched PBS调度守护进程,负责调度作业,位于服务节点上
    pbs_mom PBS MOM守护进程, 负责监控本机并执行作业,位于所有计算节点上
# sudo pbs_server   //在服务器节点执行
# sudo pbs_sched   //在服务器节点执行
# sudo pbs_mom  //在计算节点执行
# sudo trqauthd 

主要步骤大概就这么多,不过一般也不需要自己去配置和安装。
以上所有代码均来自别人的博客

linux下,源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)
./configure的作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。
./configure --prefix --with;其中--prefix指的是安装路径,--with指的是安装本文件所依赖的库文件
如果不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share

./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包,
你先ls,看有没有configure或者makefile文件。
如果有configure,就./configure,有很多参数,看楼下的吧。如果系统环境合适,就会生成makefile,否则会报错。
如果有makefile,就直接make,然后make install。

2.3 常用PBS命令

  • 查看节点状态
    pbsnodes (查看所有节点)
    pbsnodes -l free (查看空闲节点)
    pbsnodes 某节点 (查看某节点状态)

  • 节点切换
    ssh 某节点 (转到某节点)

  • 退出节点
    exit (离开节点)

  • 查看任务运行状态
    qstat (列出所有作业运行状态)

主要会包括以下几个方面信息:

  • Job ID 任务ID号
  • Name 任务脚本名称
  • User 用户名
  • Time Use 任务运行时间
  • S State 任务状态
    * B 只用于任务向量,表示任务向量已经开始执行
    * E 任务在运行后退出
    * H 任务被服务器或用户或者管理员阻塞
    * Q 任务正在排队中,等待被调度运行
    * R 任务正在运行
    * S 任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源
    * T 任务被转移到其它执行节点了
    * U 由于服务器繁忙,任务被挂起
    * W 任务在等待它所请求的执行时间的到来(qsub -a)
    * X 只用于子任务,表示子任务完成
    * C 表示程序正在被关闭,一般是程序运行错误,报错
  • Queue 任务执行所在队列
    qstat -q (列出队列使用信息)
    qstat -n (列出队列中使用的节点)
    qstat -f jobid (查看jobid任务的详细信息)

  • 提交任务到集群
    qsub 文件名.pbs/.sh (提交任务)
    echo "script.py" | qsub -l q batch1 -l nodes=1:ppn=2 (直接在终端设置PBS资源命令,并在此资源下提交可执行脚本)

  • 任务挂起,释放,重新加载
    qhold:挂起作业
    qrls:释放挂起的作业
    qrerun:重新运行作业

  • 任务更改
    qmove:将作业移动到另一个队列
    qalter: 更改作业资源属性
    修改pbs队列:
    将任务号为JOBID的任务,转移到Batch5 队列继续排队
    qalter <JOBID> -W queue=Batch5
    改变cpu数量:
    qalter -l nodes=1:ppn=10 <JOBID>
    qalter pbs

  • 删除任务
    qdel jobid (取消任务)

2.4 qsub 提交任务

2.4.1 通过终端提交任务

  • 通过命令行参数传递给 qsub 命令
echo "python script.py -i inputdir -o outdir " | qsub -q Batch1 -l nodes=1:ppn=1 -l mem=40gb -N jobname

执行script.py 脚本, 通过pbs投递任务, 任务提交到Batch1队列,所需资源为,1个节点,节点使用1个cpu, 40GB物理内存,该任务命名jobname

  • -N 任务名称
  • -q 指定Queue
  • -l resource_list 指定任务所需资源
    一般包括:
    * cput=N, 请求N秒CPU时间,N也可以写成hh:mm::ss,单位分别是 时:分:秒
    * mem=N[K|M|G|][B|W], 请求N大小的内存
    * nodes=N, N个节点
    * ppn=M, 每个节点需要M个cpu
  • -e path 将标准错误重定向到path
  • -o path 标准输出重定向到path
  • -j join 将标准输出信息与标准错误信息合并到同一个文件join中去
  • -p priority 任务优先级,整数,无定义默认0
  • -m mail_options mail_option =a:左右abort时给用户发信;=b:作业开始时发信;=e:作业结束时发信. 默认=a

2.4.2 PBS通过sh脚本执行命令

  • 在 PBS 脚本中以 #PBS 方式指定
    在PBS系统中,用户使用qsub命令提交用户程序。用户运行程序的命令 以及 PBS环境变量设置 共同组成了PBS作业脚本。
  • 注释为 “#” 开头
  • PBS指令为 “#PBS” 开头
  • shell命令 (运行脚本的命令)

例如 run.sh

#参数解析
#指定节点数目 ppn指每个节点运行的cpu数量(4个小节点,每个48个CPU)
#PBS -l nodes=1:ppn=16
#指定合并到标准输出文件中
#PBS -j oe
#设置程序运行的最大时间192小时
#PBS -l walltime=192:00:00
#指定qsub的所有环境变量都传递到批处理作业中
#PBS -V
#输出文件
#PBS -o /public/home/tang/chaim/back_info/$jobname.out
#错误输出文件
#PBS -e /public/home/tang/chaim/back_info/$jobname.err
cd PBS_O_OUTDIR
# 程序执行命令
python script.py -i inputdir -o outdir 
# 执行脚本
qsub run.sh
# 制定命令开始运行的时间  
qusb -a 070000 run.s  #7天后运行程序,此时是处于W状态(等待状态)
qsub -a 2400 run.s #24h后运行程序

2.4.3 通过交互式的方式执行任务

  • qsub -I
  • qsub -I -q Batch1 -l nodes=1:ppn=1 -l mem=80gb -N jobname
[#11#Rd01@login ~]$
$qsub -I -q Batch1 -l nodes=1:ppn=1 -l mem=80gb -N jobname
qsub: waiting for job 1230615.admin to start
qsub: job 1230615.admin ready

[#1#Rd01@comput4 ~]$
$

2.5 PBS常用环境变量

  • PBS_ENVIRONMENT:批处理作业为 PBS_BATCH,交互式作业为 PBS_INTERACTIVE
  • PBS_JOBID:PBS 系统给作业分配的标识号
  • PBS_JOBNAME:用户指定的作业名称
  • PBS_NODEFILE:包含作业所用计算节点的文件名
  • PBS_QUEUE:作业所执行的队列名称
  • PBS_O_HOME:执行 qsub 命令的 HOME 环境变量值
  • PBS_O_PATH:执行 qsub 命令的 PATH 环境变量值
  • PBS_O_SHELL:执行 qsub 命令的 SHELL 环境变量值
  • PBS_O_HOST:执行 qsub 命令节点名称
  • PBS_O_QUEUE:提交的作业的最初队列名称
  • PBS_O_WORKDIR:执行 qsub 命令所在的绝对路径

Ref

  1. https://blog.csdn.net/pursuitbeauty/article/details/42642117
  2. https://www.jianshu.com/p/062c58bea2a2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
  3. https://www.jianshu.com/p/682f1f64e53c
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容