PBS实验指导书Word下载.docx
《PBS实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《PBS实验指导书Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
![PBS实验指导书Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/12/aa321382-88c7-4521-967b-07235a9ada93/aa321382-88c7-4521-967b-07235a9ada931.gif)
2 调度策略。
PBS为了调度那些应该放在执行队列的作业,提供了一个单独的进程。
这是一个灵活的机制,可以实现大量的策略。
这个调度程序使用标准的PBSAPI来和服务器通信,使用一个额外的API来和PBS执行进程通信。
通过使用一些额外提供的API,可以增强调度的策略,进而实现一个可替换的调度程序。
第一代批处理系统和许多其他的批处理系统都使用大量基于限制作业或控制调度作业的队列。
为了按照时间来控制作业的排序,队列会被打开或关闭,或者限制载队列里运行作业的数量;
而PBS支持多重队列,并且这些队列有很多其他批处理系统所使用的作业调度属性,PBS服务器本身并不运行作业,也不添加任何限制,这些都是由队列属性实现的。
事实上,调度程序仅仅拥有不超过一个有管理员特权的客户端。
控制调度的服务器和队列属性可以通过拥有特权的客户端来调整,这些特权命令是qmgr。
然而,这些控制通常驻留在调度程序上,而不是服务器上。
这些调度程序必须检查服务器、队列和作业的状态,决定服务器和队列属性的设置。
在之后的决策中,调度程序必须使用这些设置。
另一个方法就是wholepool方法,所有的作业都放在一个单独的队列中,调度程序评估每个作业的特点并且决定运行哪一个作业。
这些策略能很容易地包括一些因素,如每天的运行时间、系统的装载、作业的大小等。
队列里作业的顺序不需要被考虑。
这个方法的主要优势在于用户可以根据自己的主要需求来产生策略,通过调度,使当前的作业更好地适应当前可用的资源。
3 PBS系统中的作业执行。
PBS系统中的作业执行主要依靠服务进程、调度进程、执行进程等部分,如图3-1,简单的执行过程如下。
a.由客户产生事件,时间通知服务进程开始一个调度周期;
b.服务进程发送一个调度命令给作业调度器;
c.作业调度器向执行过程请求可利用的资源信息;
d.执行做成返回给作业调度器一个资源信息;
e.得到资源信息后,调度器向服务进程请求作业信息;
f.服务进程接受请求,并发送作业信息至作业调度器,产生执行作业的策略;
g.作业调度器发送执行作业请求至服务进程;
h.服务进程接受请求后,发送作业至执行进程执行作业。
图3-1PBS的执行过程
2.PBS的安装
PBS的安装应该说是一个标准的Linux的tarball安装方式。
安装过程主要有如下几个步骤。
1 下载PBS的源码包。
OpenPBS-2.3.12sc2.tar
2 解压缩软件包。
#tarzxvpfOpenPBS-2.3.12sc2.tar
3 进入相应的目录,配置、编译。
#cdSPBS-1.0.0$./configure--docs--disable-gui$make
#makeinstall
其中,选项--enable-docs指定要编译文档,选项--disable-gui指定去掉图形界面;
选项--enable-scp,先使用scp命令,再使用rcp命令进行数据的复制。
默认情况下,PBS会安装在.usr/spoole/PBS目录下,该目录在./configure的时候指定-prefix。
3.PBS的配置
1)配置server_name
编辑所有的节点的$PBS_HOME/server_name,在里面写入选定的server的主机名,例如:
manager
2)配置管理节点
在manager的$PBS_HOME/server_priv目录下建立nodes文件。
#touchnodes
在nodes文件写入所有mom节点的名称。
bc1n1np=4
bc1n2np=4
......
bc1n14np=4
其中的np代表的是虚拟处理器的个数,实际上也就是该节点最多可以同时运行多少个任务。
3)配置计算节点
为了使计算节点接受管理节点的控制,需编辑每个计算节点$PBS_HOME/mom_priv目录下的config文件,写入如下信息。
$logevent0x1ff$clienthostmanager
$logevent用于指定日志的级别,使用默认值就可以了,$clienthost为指定server的地址。
4.PBS的作业管理
PBS安装配置完毕后需启动服务,可以手动执行启动,也可以载rc.local文件中加入启动脚本,最好按mom、server、sched的顺序启动命令,具体如下。
#/usr/local/sbin/pbs_mom
#/usr/local/sbin/pbs_server-tcreate
#
/usr/local/sbin/pbs_sched
其中-tcreate在第一次启动的时候要用,用于创建一些初始化必要的环境,以后启动就不再需要了。
接下来要创建作业队列,PBS中的队列分为两种类型,即执行队列和路由队列,下面是一个创建队列的脚本。
#Createanddefinequeueverylong
createqueueverylong
setqueueverylongqueue_type=Execution
setqueueverylongPriority=40
setqueueverylongmax_running=10
setqueueverylongresources_max.cput=72:
00:
00
setqueueverylongresources_min.cput=12:
01
setqueueverylongresources_default.cput=72:
setqueueverylongenabled=True
setqueueverylongstarted=True
#Createanddefinequeuelong
Createqueuelong
setqueuelongqueue_type=Execution
setqueuelongPriority=60
setqueuelongmax_running=10
setqueuelongresources_max.cput=12:
setqueuelongresources_min.cput=02:
setqueuelongresources_default.cput=12:
setqueuelongenabled=True
setqueuelongstarted=True
#Createanddefinequeuemedium
createqueuemedium
setqueuemediumqueue_type=Execution
setqueuemediumPriority=80
setqueuemediummax_running=10
setqueuemediumresources_max.cput=02:
setqueuemediumresources_min.cput=00:
20:
setqueuemediumresources_default.cput=02:
setqueuemediumenabled=True
setqueuemediumstarted=True
#Createanddefinequeuesmall
createqueuesmall
setqueuesmallqueue_type=Execution
setqueuesmallPriority=100
setqueuesmallmax_running=10
setqueuesmallresources_max.cput=00:
setqueuesmallresources_min.cput=00:
setqueuesmallresources_default.cput=00:
setqueuesmallenabled=True
setqueuesmallstarted=True
#Createanddefinequeuedefault
createqueuedefault
setqueuedefaultqueue_type=Route
setqueuedefaultmax_running=10
setqueuedefaultroute_destination=small
setqueuedefaultroute_destination+=medium
setqueuedefaultroute_destination+=long
setqueuedefaultroute_destination+=verylong
setqueuedefaultenabled=True
setqueuedefaultstarted=True
#Setserverattributes.
setserverscheduling=True
setservermax_user_run=6
setserveracl_host_enable=True
setserveracl_hosts=*
setserverdefalult_queue=default
setserverlog_events=63
setservermail_from=adm
setserverquery_other_jobs=True
setserverresources_default.cput=01:
setserverresources_default.neednodes=1
setserverresources_default.nodect=1
setserverresources_default.nodes=1
setserverscheduler_iteration=60
setserverdefault_node=1
#shared