SGE的使用和管理.docx
《SGE的使用和管理.docx》由会员分享,可在线阅读,更多相关《SGE的使用和管理.docx(18页珍藏版)》请在冰豆网上搜索。
SGE的使用和管理
网格计算和SGE
从概念上讲,网格很简单。
它是执行任务的计算资源的集合。
对用户而言,它就是一个大系统,提供单个切入点,以访问强大而分散的资源。
用户将网格视作单个计算资源。
资源管理软件(如SunGridEngine)接受由用户提交的作业,并根据资源管理策略将作业安排在网格内适当的系统上执行。
用户可以一次提交数千个作业,而不必考虑它们在何处运行。
什么是Clustergrids?
网格的类型:
Clustergrids,campusgridsandglobalgrids.
集群网格(clustergrids)包括许多计算资源,SGE帮助我们将这些一起工作的资源合理地提供给一个项目或一个部门的用户。
SGE的工作原理
SunGridEngine软件为用户提供了向SunGridEngine系统提交要求计算的任务的方法,以透明地分配相关的工作负荷。
用户可以向SunGridEngine系统提交批处理作业、交互式作业和并行作业。
SunGridEngine用以下方式调解可用资源和作业需求。
通过SunGridEngine系统提交作业的用户描述出作业需求的概况。
此外,系统还要检索用户的身份以及他或她与项目或用户组的从属关系。
用户提交作业的时间也将存储起来。
准确地说,在队列被定为可以对新作业执行操作的那一刻,SunGridEngine系统就决定了适合该队列的作业,并立即分派具有最高优先级或等待时间最长久的作业。
?
SunGridEngine队列允许同时执行许多作业。
SunGridEngine系统将尽量在负荷最小且最适合的队列中开始新的作业。
为什么用SGE?
?
用户:
用户能够自由地在单一的控制节点上投放上千个的任务,而不必关心任务在哪个节点运行,这样就大大简化了用户的使用。
?
管理员:
提供广泛的工具,用以监控投放的任务。
SGE能做什么?
?
系统接受用户所投放的任务,并基于最优的资源管理方案,将任务列队在适合的网格内系统上,等待运行。
?
SGE依据由管理者制定的规则,检测到网格内的所有可用资源,聚集资源,并在该网格内自动地最优地分配和路由资源。
SGE怎样工作?
?
接受用户投放的任务;
?
在任务运行以前,将任务放在一个存储区域;
?
发送任务到一个执行设备,并监控任务的运行;
?
运行结束时写回结果并记录运行日志。
SGE的组成
?
节点(Hosts)
?
后台程序(Daemons)
?
队列(Queues)
?
用户命令(ClientCommands)
SGE的组成
?
节点(Hosts)
?
MasterHosts
?
ExecutionHosts
?
AdministrationHosts
?
SubmitHosts
?
后台程序(Daemons)
?
队列(Queues)
?
用户命令(ClientCommands)
SGE的组成
?
节点(Hosts)
?
后台程序(Daemons)
?
sge_qmaster–theMasterDaemon
?
sge_schedd–theSchedulerDaemon
?
sge_execd–theExecutionDaemon
?
sge_commd–theCommunicationDaemon
?
队列(Queues)
?
用户命令(ClientCommands)
队列的概念
?
队列为任务提供服务;
?
SGE允许同时运行多个任务,系统会试着这最小负荷的合适队列开始新的任务;
?
在SGE中队列就是存放能在某一节点上运行的所有任务的容器。
一个队列从某种方面也决定了所含任务的属性。
用户命令
用户命令是一组辅助程序命令。
他可以帮助我们管理队列,提交和删除任务,检测任务的状态,中断/开始队列和任务。
qacct qalter qconf qdel
qhold qhosh qlogin qmake
qmod qmon qresub qrls
qrsh qselect qsh qstat
qsub qtcsh
?
qacct–此命令从群集日志文件中抽取任意帐户信息。
?
qalter–此命令更改已提交但正处于暂挂状态的作业的属性。
?
qconf–此命令为群集和队列配置提供用户界面。
?
qdel–用户、操作人员或管理人员可使用此命令向作业或其子集发送信号。
?
qhold–此命令阻止已提交作业的执行。
?
qhost–此命令显示SunGridEngine执行主机的状态信息。
?
qlogin–此命令启动telnet或类似的登录会话,并自动选择负荷较低并且较
?
为适合的主机。
?
qmake–此命令可取代标准的UNIXmake命令工具。
它扩充了make的功能,能够将相互独立的make步骤分配到一组适合的机器。
?
qmod–此命令使拥有者可以暂停或启用队列(将信号发送给当前与此队列相关的所有活动进程)。
?
qmon–此命令提供了X-windowsMotif命令界面和监视工具。
?
qresub–此命令通过复制正在运行或暂挂的作业,创建新的作业。
?
qrls–此命令释放先前被阻止执行的作业,例如通过qhold(见上)阻止执行。
?
qrsh–此命令用途很多,比如:
?
提供通过SunGridEngine系统执行的远程交互应用程序—与标准的UNIX命令工具rsh相似
?
允许提交批处理作业,一经执行便可支持终端I/O(标准/错误输出和标准输入)以及终端控制提供批处理作业提交客户机,该客户机在作业完成之前一直保持活动状态允许SunGridEngine软件控制并行作业的任务远程执行
?
qselect–此命令显示与指定选择标准相对应的队列名称列表。
qselect的输出结果通常送往其它SunGridEngine命令,以便对选定的一组队列执行操作。
?
qsh–此命令在负荷较低的主机上打开交互式shell(在xterm中)。
所有类型的交互式作业均可以在此shell内运行。
?
qstat–此命令列出所有与群集相关的作业和队列的状态。
?
qsub–此命令是将作业提交到SunGridEngine系统的用户界面。
?
qtcsh–此命令与众所周知并普遍使用的UnixC-Shell(csh)派生物tcsh完全兼容,并能替代它。
它扩展了命令shell的功能,即通过SunGridEngine软件将指定应用程序的执行透明地分配给适合的并且负荷较低的主机。
察看队列属性
%qconf¨Csql¨C显示队列列表
%qconf-sq队列名¨C显示该队列属性
?
qname–所请求的队列名称。
?
hostname–队列所处的主机。
?
processors–多处理器系统中此队列有权访问的处理器。
?
qtype–允许在此队列中运行的作业类型。
目前包括批处理作业、交互式作业、点检查作业、并行作业或它们的任意组合或相互转换的作业。
?
slots–可在队列上同时执行的作业数量。
察看队列属性
?
owner_list–队列的拥有者。
?
user_lists–此参数下所列的用户访问列表中标识的用户或组有权访问此队列。
?
xuser_lists–此参数下所列的用户访问列表中标识的用户或组无权访问此队列。
?
complex_list–列于此参数下的属性组与队列相关联,而且这些属性组中所含的属性构成此队列的可请求属性组。
?
complex_values–提供给此队列的某些属性组属性的赋值。
察看主控主机
?
由于主控主机会随时可能在当前的主控主机和某个影像主控主机之间切换,主控主机的位置对用户来说应该是透明的。
?
用文本编辑器,打开
/opt/grid-engineer/default/common/act_qmaster文件。
此文件中有当前主控主机的名称。
显示执行主机
?
%qconf¨Csel
显示当前配置为执行主机的所有主机的列表。
?
%qconf-se主机名称
显示指定的执行主机的详细信息
?
%qhost
显示执行主机的状态和负荷信息
显示管理主机
%qconf-sh
显示有管理权限的主机列表
显示提交主机
%qconf-ss
可请求的属性
?
提交一个SunGridEngine作业时,可指定该作业的需求概况。
用户可以指定作业所需的主机或队列的属性或特性以保证作业成功运行。
SunGridEngine将这些作业需求映射到SunGridEngine群集的主机和队列的配置,从而找到适合该作业的主机。
?
可用的属性包括队列特性列表、全局属性和主机相关属性的列表,以及管理员定义的属性。
但是,为方便起见,SunGridEngine管理员通常只将一个所有可用属性的子集定义为可请求。
显示可请求属性列表
%qconf–scl
显示已配置的属性组列表
属性组包含一组属性的定义。
有三种标准属性组:
global–针对群集全局属性(可选)
host–针对主机特有的属性
queue–针对队列特性的属性
显示可请求属性列表
%qconf-sc属性组名称[,...]
显示某个特定属性组的属性
?
名称一栏中的显示与qconf-sq命令显示的第一栏基本相同
?
缩写名一栏包含可由管理员定义的第一栏中全名的缩写
?
可否请求一栏表明是否可将相应的项用于qsub
?
关系栏定义关系运算以用于计算队列是否满足用户请求
?
可否使用栏和缺省值栏对管理员极其有用,管理员可以用它们声明?
°可使用资源?
±,。
用户可以像请求其它属性一样请求可使用资源
用户访问权限
?
获得当前配置的ACL列表
%qconf-sul
?
显示一个或多个访问列表中的项
%qconf-suACL名称[,...]
注:
ACL包含用户帐户名和UNIX组名,UNIX组名用前缀“@”标识出来。
这样即可确定您的帐户所属的ACL。
从命令行运行简单作业
?
执行任何SunGridEngine命令之前,必须设置适当的可执行搜索路径和其它环境条件。
?
%qsub/opt/grid-engineer/examples/jobs/simple.sh
?
qsub命令应确认作业已成功提交:
您的作业1("simple.sh")已提交
?
%qstat命令检索作业的状态信息
?
若qstat命令没有产生输出,则系统实际上无已知作业。
结果:
simple.sh.o1和simple.sh.e1。
提交批处理作业
Shell脚本即批处理作业,主要指集成到一个文件中的一系列命令行指令。
chmod命令可使脚本文件变成可执行文件。
一旦调用脚本,即可启动相应的命令解释器(例如,csh、tcsh、sh或ksh),解释每条指令,其结果等同于执行脚本的用户手动输入这些指令。
您可以在一个shell脚本内调用任意命令、应用程序和其它shell脚本。
脚本文件示例
#!
/bin/csh
#Thisisasamplescriptfileforcompilingand
#runningasampleFORTRANprogramunderSunGridEngine.
cdTEST
#Nowweneedtocompiletheprogram'flow.f'and
#nametheexecutable'flow'.
f77flow.f-oflow
资源需求定义
实际上要执行主机成功完成作业,大部分作业要求一些先决条件。
这些先决条件包括足够的可用内存、安装所需软件或某种操作系统体系结构。
而且,群集管理者也经常对群集中的机器加上一些使用限制。
例如,作业可使用的CPU时间就常常受到限制。
资源需求示例
?
%qsub-larch=solaris64,h_vmem=750M,permas=1\
permas.sh
?
要求至少有750MB内存的solaris64主机,且该主机要有可用的permas许可证。
SGE如何分配资源
资源分配算法
1.读入并分析所有缺省的请求文件。
2.处理脚本文件的内嵌选项。
3.提交作业时读取所有脚本的内嵌选项,而不考虑其在脚本文件中的位置。
4.从命令行读取和分析所有请求。
SGE如何分配资源
评估请求优先顺序
1.脚本/缺省请求文件从左到右
2.脚本/缺省请求文件从上到下
3.命令行从左到右
SGE如何分配资源
评估请求优先顺序
1.脚本/缺省请求文件从左到右
2.脚本/缺省请求文件从上到下
3.命令行从左到右
SGE如何分配资源
?
分配所请求的硬性资源。
若请求无效,将拒绝提交。
若提交时无法满足一个或多个请求(例如被请求的队列正忙),作业将假脱机,稍后重新调度。
若所有硬性请求都能满足,将分配这些资源,作业可以运行。
?
检查所请求的软性资源。
即使部分或全部请求无法满足,作业仍可运行。
若多个队列(已满足硬性资源请求)提供了部分软性资源列表(重叠或不同),SunGridEngine软件将选择满足最多软性请求的队列。
提交作业
?
%qsubflow.sh
?
%qsub-NFlow-p-111-a200012240000.00-cwd\-S/bin/tcsh-oflow.out-jyflow.shbig.data
?
%qsub-NFlow-p-111-a200012240000.00-cwd\
-S/bin/tcsh-oflow.out-jy-pempi4-16\
-vSHARED_MEM=TRUE,MODEL_SIZE=LARGE\-acJOB_STEP=preprocessing,PORT=1234\
-AFLOW-ww-ry-ms,e-qbig_q\
-Mme@,me@other.address\
flow.shbig.data
提交交互式作业
?
qlogin¨C类似于telnet会话,在SunGridEngine软件选定的主机上启动。
?
qrsh¨C这是一个等效于标准的UNIXrsh的工具。
命令在SunGridEngine系统选定的主机上远程执行,若未指定要执行的命令,会在远程主机上启动远程登录(rlogin)会话。
?
qsh¨C这是一个xterm,它从执行作业的计算机启动,其显示设置与您的指定值或DISPLAY环境变量相对应。
若未设定DISPLAY变量且未明确定义显示目标,SunGridEngine将把xterm定向到提交交互式作业的主机的X服务器的0.0屏幕。
调度SunGridEngine作业
基本上,SunGridEngine5.3软件使用两套标准调度作业:
?
作业优先级
?
等份额
作业优先级
关于不同作业的调度过程顺序,缺省情况下应用先进先出(fifo)规则。
所有暂挂(尚未调度)作业均插入到一个列表中,第一个提交的作业在列表的头部,接下来是第二项提交的作业,等等。
首先尝试调度先提交的作业。
若至少有一个可用的合适队列,则作业将得到调度。
SunGridEngine软件此后将试图调度第二项作业,而不论第一项作业是否已分配。
暂挂作业中的此优先顺序可通过由群集管理员分配给作业的优先级值覆盖。
实际的优先级值可通过使用qstat命令显示(优先级值包含在标题为P的暂挂作业显示的最后一栏)
等份额调度
fifo规则有时会导致问题,尤其是若用户试图同时提交一系列作业的情况下(例如,通过shell脚本发出一个接一个的提交)。
所有后来提交的和指定到同一组队列的作业均不得不等待很长的时间。
等份额调度将已拥有运行作业的用户的作业排列在优先级列表的结尾,从而避免了这一问题。
排序仅在同一优先级值范围的作业中执行。
若SunGridEngine调度程序配置项user_sort设置为TRUE(请参考sched_conf手册页以获得细节),激活等份额调度。
队列选择
SunGridEngine系统不分配请求非特定队列的作业,如果它们不能即时启动的话。
此类作业将在sge_qmaster中标记为假脱机,该命令会不时尝试重新调度它们。
于是,作业将分配给下一个可用的合适队列。
与此相反,在请求中指明队列名的作业将直接进入该队列,无论它们是否能启动者处于假脱机状态。
若作业被调度,并且有多个空闲队列满足其资源请求,则在合适的队列中,通常作业将被分配给负荷最轻的主机上的队列。
no,群集管理者可将此依赖于负荷的方案更改为固定的顺序算法。
点检查作业
?
用户级别
?
内核级别
点检查作业脚本
#!
/bin/sh
#Force/bin/shinSunGridEngine
#$-S/bin/csh
#Testifrestarted/migrated
if[$RESTARTED=0];then
#0=notrestarted
#Partstobeexecutedonlyduringthefirst
#startgoinhere
set_up_grid
fi
#Startthecheckpointingexecutable
fem
#Endofscriptfile
命令行操作点检查作业
#qsub选项自变量
除qsub-ckpt和-c选项(它们请求点检查机制并且定义对作业进行点检查的时机)外,提交点检查作业的方式与常规批处理脚本相同
-ckpt选项带一个自变量,它是要使用的点检查环境的名称
-c选项不是必需的,它也带一个自变量。
它可用于覆盖点检查环境配置中when参数的定义
-c选项的自变量
?
n–不执行点检查。
此项优先级最高。
?
s–检查点仅在作业主机上的sge_execd关闭时才产生。
?
m–按相应队列配置中定义的最小CPU时间间隔产生检查点。
?
x–作业暂停时产生检查点。
?
interval–以给定时间间隔产生检查点,但其频率不高于min_cpu_interval定义的值(参见上文)。
时间值必须以hh:
mm:
ss形式指定(小时两位、分钟两位、秒两位,用冒号分开)。
监视和控制SGE作业
原则上,有三种方法可监视提交的作业。
?
使用SunGridEngine图形用户界面QMON
?
在命令行使用qstat命令
?
通过电子邮件
用qstat监视作业
%qstat
提供已提交作业的概述
%qstat-f
另外包含了有关当前配置队列的信息
qstat
job-ID prior name user state submit/startat queue function
231 0 hydra craig r 07/13/9620:
27:
15 durin.q MASTER
232 0 compilepenny r 07/13/9620:
30:
40 durin.q MASTER
230 0 blackholedon r 07/13/9620:
26:
10 dwain.q MASTER
233 0 mac elaine r 07/13/9620:
30:
40 dwain.q MASTER
234 0 golf shannonr 07/13/9620:
31:
44 dwain.q MASTER
236 5 word elaine qw 07/13/9620:
32:
07
235 0 andrun penny qw 07/13/9620:
31:
43
注:
state栏包含的单个字符代码含义如下:
r表示正运行,
s表示已暂停,q表示已排队,w表示在等待
qstat-f
queuename qtype used/free load_avg arch states
dq BIP 0/