qsh - submit an interactive X-windows session to Grid Engine.
qlogin - submit an interactive login session to Grid Engine.
qrsh - submit an interactive rsh session to Grid Engine.
qalter - modify a pending batch job of Grid Engine.
qresub - submit a copy of an existing Grid Engine job.
语法:
qsub [ options ] [ command | -- [ command_args ]]
qsh [ options ] [ -- xterm_args ]
qlogin [ options ]
qrsh [ options ] [ command [ command_args ]]
qalter [ options ] wc_job_range_list [ -- [ command_args ]]
qalter [ options ] -u user_list | -uall [ -- [ command_args ]]
qresub [ options ] job_id_list
qsub命令用来向SGE提交批处理作业,SGE支持单或多节点作业。
Command可以是一个二进制文件路径或一个作业运行脚本,这个脚本指定了作业运行的shell类型、作业类型、可执行文件路径、输入输出文件等参数。
qsh命令用来提交带xterm交互式作业,在执行主机上开启X-windows.
qlogin命令与qsh相似也是提交交互式作业到队列中,只是它不开启X-windows,而是利用现在的终端传送I/O,该命令与远程主机建立telnet连接,使用标准的server-client命令
qrsh命令与qlogin类似,与远程主机通过rsh连接。该命令同时集成了一个在集成交互式作业时非常有用的特性,当设定了
QRSH_WRAPPER变量时,该变量可代替用户的login in shell.
qalter可用来改变处于pending状态的作业属性。
qresub命令允许用户通过拷贝处于pengding或runing状态的作业来创建新的作业。新建作业与原作业具有相同的属性,并被分配了新的job
ID和hold状态。该命令可用来先拷贝一个作业再修改其属性。
options
-a date_time 作业开始运行时间
-b y[es]|n[o]判断作业指定是二进制文件或scripts。y :是 n:scripts
-c 定义作业是否进行checkpoint. n 不进行checkpoint,s
当批处理服务器当机时进行checkpoint,m当CPU负载小时进行checkpoint,x当作业暂停时进行checkpoint,<interval>
每隔一定时间进行checkpoint。m,<interval>参数将在queue中定义
-ckpt 定义checkpoint环境,同时用来声明该作业需进行checkpoint
-cwd 从当前工作路径运行作业
-display 使用X-windows
-dl date_time 定义作业到期时间,在作业到期时间之前,作业的优先级会逐步提高,直到管理员指定的最高级别。
-e 指定输出error文件的路径及文件名
-hard 定义作业被调度的硬性要求
-h 作业hold类型。u:表示用户hold,s:表示系统hold,o:表示被操作员hold,n:取消hold
,U:取消用户hold,S:取消系统hold,O:取消操作员hold。
-hold_jid wc_job_list 定义作业的依赖关系,制定作业需要在指定作业正常结束后才可以开始运行。wc_job_list 可以是JOB
ID或作业名
-hold_jid_ad wc_job_list 定义阵列作业的依赖关系
-i 定义输入文件
-inherit 该参数只能 qrsh
、qmake可以使用。qrsh允许在一个已经被调度的并行作业中开启新的任务,使用该参数时大部分的参数都将被忽略,只有-verbose, -v 和
-V 可以使用。 可以使用-v PWD 来代替-cwd
-j y[es]|n[o] 定义作业的标准错误输出是否写入的输出文件中
-js job_share 定义作业与其他作业共享关系.
-jsv
-l resource=value, 表明作业运行所需要的资源。
-m b|e|a|s|n 。定义邮件发送规则。b:作业开始时发送。e:作业结束时发送。a:作业失败时发送 s:作业挂起时发送。n:不发送
-M user[@host] 定义邮件地址
-masterq wc_queue_list :定义主队列。????
-notify :定义发送SIGSTOP or SIGKILL信号的延迟时间
-now y[es]|n[o]:立即执行作业
-N 作业名
-noshell
-nostdin
-o [[hostname]:]path :定义输出文件路径、文件名
-ot override_tickets:定义覆盖票
-P project_name:定义项目名称
-p priority :定义优先级
-pe parallel_environment:定义并行环境
-q wc_queue_list:定义作业运行队列
-R y[es]|n[o]:定义是否为作业保留资源。
-r y[es]|n[o]:定义作业失败后是否重新运行
-soft 定义作业被调度的软性要求
-sync y[es]|n[o]:定义qsub是否等待直到作业结束
-u username,只有qlter命令可以使用该参数。修改作业的用户名
-v variable:定义环境变量
-verbose 使qrsh命令输出信息
-verify 验证作业参数时使用
-V 传递当前命令的所有环境变量
-wd working_dir :定义工作目录
---------------------------------------------------------------------------
USE of Sun Grid Engine(SGE)
Jobs submition
qsub ---> submit batch job
Job information display
qstat ---> displays status listings
Job management
qhold ---> hold back a pending submitted job from execution
qrls ---> release held job for execution
qdel ---> delete a job from a queue
qmod -s ---> suspend a job from execution
qmod -us ---> release suspended job for execution
A first look at job submission:
create a shell script and make it executable
vi script1.sh # create a shell script
chmod u+x script1.sh # make it executable
the shell script
#!/bin/sh
#$ -S /bin/sh
/share/apps/bin/blastall -p blastp -i test.fa -d nr
submit shell script with a given job name (note use of -N option)?
qsub -N mytest script1.sh
check the status of job (note use of -u option)?
qstat -u test
the output of stdout and stderr appear in files in your home directory
ls *.o*, *.e*
qdel:
To terminate a job, first get the job-id with qstatqstat -u userid
Terminate the job
qdel job-id
Terminate the job that is running (forced)?
qdel -f job-id
qmod:
To suspend a job, first get the job-id with qstatqstat -u userid
Suspend the job
qmod –s job-id
Release the job for execution?
qmod -us job-id
网格计算和SGE
从概念上讲,网格很简单。它是执行任务的计算资源的集合。对用户而言,它就是一个大系统,提供单个切入点,以访问强大而分 散的资源。用户将网格视作单个计算资源。资源管理软件(如Sun Grid Engine)接受由用户提交的作业,并根据资源管理策略将作业安排在网格内适当的系统上执行。用户可以一次提交数千个作业,而不必考虑它们在何处运行。
什么是Cluster grids?
网格的类型:Cluster grids , campus grids and global grids.
集群网格(cluster grids)包括许多计算资源,SGE帮助我们将这些一起工作的资源合理地提供给一个项目或一个部门的用户。
SGE的工作原理
Sun Grid Engine 软件为用户提供了向Sun Grid Engine 系统提交要求计算的任务的方法,以透明地分配相关的工作负荷。用户可以向Sun Grid Engine 系统提交批处理作业、交互式作业和并行作业。
Sun Grid Engine用以下方式调解可用资源和作业需求。
通过Sun Grid Engine 系统提交作业的用户描述出作业需求的概况。此外,系统还要检索用户的身份以及他或她与项目或用户组的从属关系。用户提交作业的时间也将存储起来。
准确地说,在队列被定为可以对新作业执行操作的那一刻, Sun Grid Engine 系统就决定了适合该队列的作业,并立即分派具有最高优先级或等待时间最长久的作业。
Sun Grid Engine 队列允许同时执行许多作业。Sun Grid Engine 系统将尽量在负荷最小且最适合的队列中开始新的作业。
为什么用SGE?
用户:用户能够自由地在单一的控制节点上投放上千个的任务,而不必关心任务在哪个节点运行,这样就大大简化了用户的使用。
管理员:提供广泛的工具,用以监控投放的任务。
SGE能做什么?
系统接受用户所投放的任务,并基于最优的资源管理方案,将任务列队在适合的网格内系统上,等待运行。
SGE依据由管理者制定的规则,检测到网格内的所有可用资源,聚集资源,并在该网格内自动地最优地分配和路由资源。
SGE怎样工作?
接受用户投放的任务;
在任务运行以前,将任务放在一个存储区域;
发送任务到一个执行设备,并监控任务的运行;
运行结束时写回结果并记录运行日志。
SGE的组成
节点(Hosts)
后台程序(Daemons)
队列(Queues)
用户命令(Client Commands)
SGE的组成
节点(Hosts)
Master Hosts
Execution Hosts
Administration Hosts
Submit Hosts
后台程序(Daemons)
队列(Queues)
用户命令(Client Commands)
SGE的组成
节点(Hosts)
后台程序(Daemons)
sge_qmaster – the Master Daemon
sge_schedd – the Scheduler Daemon
sge_execd – the Execution Daemon
sge_commd – the Communication Daemon
队列(Queues)
用户命令(Client Commands)
队列的概念
队列为任务提供服务;
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 – 此命令显示Sun Grid Engine 执行主机的状态信息。
qlogin – 此命令启动telnet 或类似的登录会话,并自动选择负荷较低并且较
为适合的主机。
qmake – 此命令可取代标准的UNIX make 命令工具。它扩充了make 的功能,能够将相互独立的make 步骤分配到一组适合的机器。
qmod – 此命令使拥有者可以暂停或启用队列(将信号发送给当前与此队列相关的所有活动进程)。
qmon – 此命令提供了X-windows Motif 命令界面和监视工具。
qresub – 此命令通过复制正在运行或暂挂的作业,创建新的作业。
qrls – 此命令释放先前被阻止执行的作业,例如通过qhold (见上)阻止执行。
qrsh – 此命令用途很多,比如:
提供通过Sun Grid Engine 系统执行的远程交互应用程序— 与标准的UNIX命令工具rsh 相似
允许提交批处理作业,一经执行便可支持终端I/O (标准/ 错误输出和标准输入)以及终端控制提供批处理作业提交客户机,该客户机在作业完成之前一直保持活动状态允许Sun Grid Engine 软件控制并行作业的任务远程执行
qselect – 此命令显示与指定选择标准相对应的队列名称列表。qselect的输出结果通常送往其它Sun Grid Engine 命令,以便对选定的一组队列执行操作。
qsh – 此命令在负荷较低的主机上打开交互式shell (在xterm 中)。所有类型的交互式作业均可以在此shell 内运行。
qstat – 此命令列出所有与群集相关的作业和队列的状态。
qsub – 此命令是将作业提交到Sun Grid Engine 系统的用户界面。
qtcsh – 此命令与众所周知并普遍使用的Unix C-Shell (csh) 派生物tcsh 完全兼容,并能替代它。它扩展了命令shell 的功能,即通过Sun Grid Engine 软件将指定应用程序的执行透明地分配给适合的并且负荷较低的主机。
察看队列属性
% 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
可请求的属性
提交一个Sun Grid Engine 作业时,可指定该作业的需求概况。用户可以指定作业所需的主机或队列的属性或特性以保证作业成功运行。Sun Grid Engine 将这些作业需求映射到Sun Grid Engine 群集的主机和队列的配置,从而找到适合该作业的主机。
可用的属性包括队列特性列表、全局属性和主机相关属性的列表,以及管理员定义的属性。但是,为方便起见, Sun Grid Engine 管理员通常只将一个所有可用属性的子集定义为可请求。
显示可请求属性列表
% qconf –scl
显示已配置的属性组列表
属性组包含一组属性的定义。有三种标准属性组:
global – 针对群集全局属性(可选)
host – 针对主机特有的属性
queue – 针对队列特性的属性
显示可请求属性列表
% qconf -sc 属性组名称[,...]
显示某个特定属性组的属性
名称一栏中的显示与qconf -sq 命令显示的第一栏基本相同
缩写名一栏包含可由管理员定义的第一栏中全名的缩写
可否请求一栏表明是否可将相应的项用于qsub
关系栏定义关系运算以用于计算队列是否满足用户请求
可否使用栏和缺省值栏对管理员极其有用,管理员可以用它们声明?°可使用资源?±,。用户可以像请求其它属性一样请求可使用资源
用户访问权限
获得当前配置的ACL 列表
% qconf -sul
显示一个或多个访问列表中的项
% qconf -su ACL 名称[,...]
注:ACL 包含用户帐户名和UNIX 组名, UNIX 组名用前缀“@”标识出来。这样即可确定您的帐户所属的ACL。
从命令行运行简单作业
执行任何Sun Grid Engine 命令之前,必须设置适当的可执行搜索路径和其它环境条件。
% 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
# This is a sample script file for compiling and
# running a sample FORTRAN program under Sun Grid Engine.
cd TEST
# Now we need to compile the program 'flow.f' and
# name the executable 'flow'.
f77 flow.f -o flow
资源需求定义
实际上要执行主机成功完成作业,大部分作业要求一些先决条件。这些先决条件包括足够的可用内存、安装所需软件或某种操作系统体系结构。而且,群集管理者也经常对群集中的机器加上一些使用限制。例如,作业可使用的CPU 时间就常常受到限制。
资源需求示例
% qsub -l arch=solaris64,h_vmem=750M,permas=1 \
permas.sh
要求至少有750 MB 内存的solaris64 主机,且该主机要有可用的permas 许可证。
SGE如何分配资源
资源分配算法
1. 读入并分析所有缺省的请求文件。
2. 处理脚本文件的内嵌选项。
3. 提交作业时读取所有脚本的内嵌选项,而不考虑其在脚本文件中的位置。
4. 从命令行读取和分析所有请求。
SGE如何分配资源
评估请求优先顺序
1. 脚本/ 缺省请求文件从左到右
2. 脚本/ 缺省请求文件从上到下
3. 命令行从左到右
SGE如何分配资源
评估请求优先顺序
1. 脚本/ 缺省请求文件从左到右
2. 脚本/ 缺省请求文件从上到下
3. 命令行从左到右
SGE如何分配资源
分配所请求的硬性资源。若请求无效,将拒绝提交。若提交时无法满足一个或多个请求(例如被请求的队列正忙),作业将假脱机,稍后重新调度。若所有硬性请求都能满足,将分配这些资源,作业可以运行。
检查所请求的软性资源。即使部分或全部请求无法满足,作业仍可运行。若多个队列(已满足硬性资源请求)提供了部分软性资源列表(重叠或不同), Sun GridEngine 软件将选择满足最多软性请求的队列。
提交作业
% qsub flow.sh
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \ -S /bin/tcsh -o flow.out -j y flow.sh big.data
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \
-S /bin/tcsh -o flow.out -j y -pe mpi 4-16 \
-v SHARED_MEM=TRUE,MODEL_SIZE=LARGE \ -ac JOB_STEP=preprocessing,PORT=1234 \
-A FLOW -w w -r y -m s,e -q big_q\
-M me@myhost.com,me@other.address \
flow.sh big.data
提交交互式作业
qlogin ¨C 类似于telnet 会话,在Sun Grid Engine 软件选定的主机上启动。
qrsh ¨C 这是一个等效于标准的UNIX rsh 的工具。命令在Sun Grid Engine 系统选定的主机上远程执行,若未指定要执行的命令,会在远程主机上启动远程登录(rlogin) 会话。
qsh ¨C 这是一个xterm,它从执行作业的计算机启动,其显示设置与您的指定值或DISPLAY 环境变量相对应。若未设定DISPLAY 变量且未明确定义显示目标, Sun Grid Engine 将把xterm 定向到提交交互式作业的主机的X 服务器的0.0 屏幕。
调度Sun Grid Engine 作业
基本上, Sun Grid Engine 5.3 软件使用两套标准调度作业:
作业优先级
等份额
作业优先级
关于不同作业的调度过程顺序,缺省情况下应用先进先出(fifo) 规则。所有暂挂(尚未调度)作业均插入到一个列表中,第一个提交的作业在列表的头部,接下来是第二项提交的作业,等等。首先尝试调度先提交的作业。若至少 有一个可用的合适队列,则作业将得到调度。Sun Grid Engine 软件此后将试图调度第二项作业,而不论第一项作业是否已分配。暂挂作业中的此优先顺序可通过由群集管理员分配给作业的优先级值覆盖。实际的优先级值可通过 使用qstat 命令显示(优先级值包含在标题为P 的暂挂作业显示的最后一栏)
等份额调度
fifo 规则有时会导致问题,尤其是若用户试图同时提交一系列作业的情况下(例如,通过shell 脚本发出一个接一个的提交)。所有后来提交的和指定到同一组队列的作业均不得不等待很长的时间。等份额调度将已拥有运行作业的用户的作业排列在优先级列表 的结尾,从而避免了这一问题。排序仅在同一优先级值范围的作业中执行。若Sun Grid Engine 调度程序配置项user_sort 设置为TRUE (请参考sched_conf 手册页以获得细节),激活等份额调度。
队列选择
Sun Grid Engine 系统不分配请求非特定队列的作业,如果它们不能即时启动的话。此类作业将在sge_qmaster 中标记为假脱机,该命令会不时尝试重新调度它们。于是,作业将分配给下一个可用的合适队列。与此相反,在请求中指明队列名的作业将直接进入该队列,无论它 们是否能启动者处于假脱机状态。
若作业被调度,并且有多个空闲队列满足其资源请求,则在合适的队列中,通常作业将被分配给负荷最轻的主机上的队列。no,群集管理者可将此依赖于负荷的方案更改为固定的顺序算法。
点检查作业
用户级别
内核级别
点检查作业脚本
#!/bin/sh
#Force /bin/sh in Sun Grid Engine
#$ -S /bin/csh
# Test if restarted/migrated
if [ $RESTARTED = 0 ]; then
# 0 = not restarted
# Parts to be executed only during the first
# start go in here
set_up_grid
fi
# Start the checkpointing executable
fem
#End of scriptfile
命令行操作点检查作业
#qsub 选项自变量
除qsub -ckpt 和 -c 选项(它们请求点检查机制并且定义对作业进行点检查的时机)外,提交 点检查作业的方式与常规批处理脚本相同
-ckpt 选项带一个自变量,它是要使用的点检查环境的名称
-c 选项不是必需的,它也带一个自变量。它可用于覆盖点检查环境配置中 when 参数的定义
-c 选项的自变量
n – 不执行点检查。此项优先级最高。
s – 检查点仅在作业主机上的 sge_execd 关闭时才产生。
m – 按相应队列配置中定义的最小 CPU 时间间隔产生检查点。
x – 作业暂停时产生检查点。
interval – 以给定时间间隔产生检查点,但其频率不高于min_cpu_interval 定义的值(参见上文)。时间值必须以 hh:mm:ss 形式指定(小时两位、分钟两位、秒两位,用冒号分开)。
监视和控制SGE作业
原则上,有三种方法可监视提交的作业。
使用Sun Grid Engine图形用户界面QMON
在命令行使用qstat命令
通过电子邮件
用qstat监视作业
% qstat
提供已提交作业的概述
% qstat -f
另外包含了有关当前配置队列的信息
qstat
job-ID prior name user state submit/start at queue function
231 0 hydra craig r 07/13/96 20:27:15 durin.q MASTER
232 0 compile penny r 07/13/96 20:30:40 durin.q MASTER
230 0 blackhole don r 07/13/96 20:26:10 dwain.q MASTER
233 0 mac elaine r 07/13/96 20:30:40 dwain.q MASTER
234 0 golf shannon r 07/13/96 20:31:44 dwain.q MASTER
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
注:state 栏包含的单个字符代码含义如下:r 表示正运行,
s 表示已暂停, q 表示已排队, w 表示在等待
qstat -f
queuename qtype used/free load_avg arch states
dq BIP 0/1 99.99 sun4 au
durin.q BIP 2/2 0.36 sun4
231 0 hydra craig r 07/13/96 20:27:15 MASTER
232 0 compile penny r 07/13/96 20:30:40 MASTER
dwain.q BIP 3/3 0.36 sun4
230 0 blackhole don r 07/13/96 20:26:10 MASTER
233 0 mac elaine r 07/13/96 20:30:40 MASTER
234 0 golf shannon r 07/13/96 20:31:44 MASTER
fq BIP 0/3 0.36 sun4
####################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS -
####################################################
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
命令行控制作业
可以使用qdel 命令取消Sun Grid Engine 作业,无论它们是正在运行还是处于假脱机状态。qmod 命令可以暂停和取消暂停(恢复)已经在运行的作业。
使用这两个命令都需要知道作业标识号,此标识号可由qsub 命令得到。若忘了标识号,可通过qstat 检索。
% qdel 作业ID
% qdel -f 作业ID 1, 作业ID 2
% qmod -s 作业ID
% qmod -us -f 作业ID 1, 作业ID 2
% qmod -s 作业ID. 任务ID 范围
用qmod 控制队列
% qmod -s 队列名
% qmod -us -f 队列名1 、队列名2
% qmod -d 队列名
% qmod -e 队列名1 、队列名2 、队列名3
注意:注意– 暂停/ 取消暂停和禁用/ 启用队列都需要拥有者、Sun Grid Engine 管理人员或操作人员权限
SGE的管理
主 控主机¨C 主控主机是一切群集活动的中心。它运行主控守护程序sge_qmaster。sge_qmaster 控制所有的Sun Grid Engine 组件(如队列和作业),并维护关于组件状态和用户访问权限之类的表单。主控主机通常运行SGE调度程序sge_schedd。除了在安装过程中执行的配置 外,主控主机不需要进一步配置。
执行主机¨C 执行主机是有权执行Sun Grid Engine 作业的节点。因此,该主机上有Sun Grid Engine 队列,并运行Sun Grid Engine 执行守护程序sge_execd 。
管理主机¨C 可为主控主机以外的其它主机赋予权限,以在Sun Grid Engine 中完成任何种类的管理活动。管理主机可用以下命令设置:qconf -ah 主机名
提 交主机¨C 提交主机仅允许提交和控制批处理作业。尤其是登录到提交主机的用户可通过qsub 提交作业,可通过qstat 或运行Sun Grid Engine 的OSF/1Motif 图形用户界面QMON 控制作业状态。提交主机可用以下命令设置:qconf -as 主机名
配置管理主机
qconf -ah 主机名
添加管理主机— 将指定主机添至管理主机列表。
qconf -dh 主机名
删除管理主机— 将指定主机从管理主机列表中删除。
qconf -sh
显示管理主机— 显示所有当前已配置的管理主机的列表。
配置提交主机
qconf -as 主机名
添加提交主机— 将指定主机添至提交主机列表。
qconf -ds 主机名
删除提交主机— 将指定主机从提交主机列表中删除。
qconf -ss
显示提交主机— 显示所有当前配置为提供提交权限的主机列表。
配置执行主机
qconf -ae [ 执行主机模板]
添加执行主机?? 此命令启动一个编辑器,其中显示执行主机配置模板。
qconf -de 主机名
删除执行主机?? 将指定主机从执行主机列表中删除。执行主机配置中的所有项都将丢失。
qconf -me 主机名
修改执行主机?? 此命令启动一个编辑器(缺省情况下为vi 或$EDITOR 环境变量对应的编辑器),其中显示指定的执行主机配置(即模板)。通过更改模板并将其保存至磁盘来修改执行主机配置。
配置执行主机
qconf -Me 文件名
修改执行主机?? 将文件名的内容用作执行主机配置模板。指定文件中的配置必须关涉现有执行主机。此执行主机的配置将由该文件的内容代替。此qconf 选项对于脱机更改执行主机配置很有用。
qconf -se 主机名
显示执行主机?? 显示所指定执行主机的配置。
qconf ¨Csel
显示执行主机列表?? 显示配置为执行主机的主机名列表。
中止守护程序
qconf ¨Ckej
中止当前所有活动的作业,并关闭所有Sun Grid Engine 执行守护程序。
qconf -ke
SGE执行守护程序将中止,但不会取消活动的作业。
qconf ¨Cks
关闭Sun Grid Engine 调度程序sge_schedd
qconf ¨Ckm
强制终止sge_qmaster 进程
重新启动守护程序
% <sge 根目录>/< 单元>/common/rcsge
注意:以root 用户身份登录到要重新启动Sun Grid Engine 5.3 守护程序的机器。此脚本将寻找通常在此主机上运行的守护程序,然后启动相应的守护程序。
显示基本群集配置
% qconf –sconf
显示全局配置
% qconf -sconf global
显示全局配置
% qconf -sconf < 主机>
显示主机的本地配置
修改基本群集配置
% qconf -mconf global
修改全局配置
% qconf -mconf < 主机>
指定的执行主机或主控主机的本地配置
配置队列
qconf -aq [ 队列名]
添加队列?? 此命令启动一个编辑器,其中显示队列配置模板。如果提供可选参数队列名,则此队列的配置将用作模板。可通过更改模板并将其保存至磁盘来配置队列。
qconf -Aq 文件名
添加队列?? 用文件文件名来定义一个队列。
qconf -cq 队列名[,...]
清除队列?? 清除指定队列的状态,使之闲置,停止运行作业。状态复位,且不考虑当前状态。该选项对于排除错误情形很有用,但不宜在常规操作模式下使用。
配置队列
qconf -dq 队列名[,...]
删除队列?? 从可用队列列表中删除自变量列表中指定的队列。
qconf -mq 队列名
修改队列?? 修改指定的队列。启动一个编辑器环境变量对应的编辑器),其中显示欲更改的队列的配置。
qconf -Mq 文件名
修改队列?? 用文件文件名来定义已修改的队列配置。
qconf -sq [ 队列名[,...]]
显示队列?? 显示缺省模板队列配置(若不带自变量)或以逗号分隔的自变量列表中所列队列的当前配置。
qconf ¨Csql
显示队列列表?? 显示所有当前已配置队列的列表。
配置日历
qconf -Acal, -acal
添加日历¨C 此命令向Sun Grid Engine 群集添加一个新的日历配置。要添加的日历要么从文件读取,要么是打开一个编辑器,其中显示模板配置,您可在此输入日历。
qconf ¨Cdcal
删除¨C 日历。
qconf -Mcal, -mcal
修改日历¨C 此命令修改现有的日历配置。
qconf -scal, -scall
显示日历¨C 此命令显示现有日历配置(-scal),或显示一份所有已配置日历的列表(-scall)。
修改属性组配置
qconf -Ac, -ac
将新属性组添加到可用属性组列表。
qconf -Mc, -mc
修改现有属性组。
qconf -sc licenses
SGE的用户
管理人员¨C 管理人员可以对Sun Grid Engine 进行全面操控。缺省情况下,主控主机及队列所在的任何计算机的超级用户均有管理人员权限。
操作人员¨C 操作人员可执行许多与管理人员相同的命令,但不能添加、删除或修改队列。
拥有者¨C 队列拥有者只限于暂停/ 取消暂停或禁用/ 启用其所拥有的队列。这些权限对qidle 的成功使用是必要的。用户通常声明为位于其桌面工作站上的队列的拥有者。
配置管理人员帐户
qconf -am 用户名[,...]
添加管理人员¨C 此命令将一位或多位用户添加到Sun Grid Engine 管理人员列表。缺省情况下,所有Sun Grid Engine 受托主机的root 账户均为Sun Grid Engine 管理人员。
qconf -dm 用户名[,...]
删除管理人员¨C 此命令从Sun Grid Engine 管理人员列表删除指定用户。
qconf ¨Csm
显示管理人员¨C 此命令显示所有Sun Grid Engine 管理人员的列表。
配置操作人员帐户
qconf -ao 用户名[,...]
添加操作人员¨C 此命令将一位或多位用户添加到Sun Grid Engine 操作人员列表。
qconf -do 用户名[,...]
删除操作人员¨C 此命令从Sun Grid Engine 操作人员列表删除指定用户。
qconf ¨Cso
显示操作人员¨C 此命令显示所有Sun Grid Engine 操作人员的列表。
配置用户访问列表
qconf -au 用户名[,...] 访问列表名[,...]
添加用户¨C 此命令将一个或多个用户添加到指定的访问列表。
qconf -du 用户名[,...] 访问列表名[,...]
删除用户¨C 此命令从指定的访问列表中删除一个或多个用户。
qconf -su 访问列表名[,...]
显示用户访问列表¨C 此命令显示指定的访问列表。
qconf ¨Csul
显示用户访问列表¨C 此命令显示当前已定义的所有访问列表清单。
配置点检查环境
qconf -ackpt 点检查名称
添加点检查环境?? 此命令启动一个带点检查环境配置模板的编辑器,更改模板并将其保存到磁盘,即可配置点检查环境。
qconf -dckpt 点检查名称
删除点检查环境?? 此命令删除指定的点检查环境。
qconf -mckpt 点检查名称
修改点检查环境?? 此命令启动一个以指定点检查环境作为配置模板的编辑器更改模板。
qconf -sckpt 点检查名称
显示点检查环境?? 此命令将指定点检查环境的配置显示到标准输出。
qconf ¨Csckptl
显示点检查环境列表?? 此命令显示所有当前已配置的点检查环境的名称列表。
常见错误处理
sge_qmaster 日志文件:
/opt/gridengineer//default/spool/qmast/message
qstat -j < 作业ID>
qalter -w v < 作业ID>
常见错误处理
问题– 作业的输出文件显示:Warning: no access to tty; thus no job control in this shell...。
可能原因1– 一个或多个登录文件包含了stty 命令。这些命令仅在存在终端时有用。
可能原因2 –脚本错误。
qsh - submit an interactive X-windows session to Grid Engine.
qlogin - submit an interactive login session to Grid Engine.
qrsh - submit an interactive rsh session to Grid Engine.
qalter - modify a pending batch job of Grid Engine.
qresub - submit a copy of an existing Grid Engine job.
语法:
qsub [ options ] [ command | -- [ command_args ]]
qsh [ options ] [ -- xterm_args ]
qlogin [ options ]
qrsh [ options ] [ command [ command_args ]]
qalter [ options ] wc_job_range_list [ -- [ command_args ]]
qalter [ options ] -u user_list | -uall [ -- [ command_args ]]
qresub [ options ] job_id_list
qsub命令用来向SGE提交批处理作业,SGE支持单或多节点作业。
Command可以是一个二进制文件路径或一个作业运行脚本,这个脚本指定了作业运行的shell类型、作业类型、可执行文件路径、输入输出文件等参数。
qsh命令用来提交带xterm交互式作业,在执行主机上开启X-windows.
qlogin命令与qsh相似也是提交交互式作业到队列中,只是它不开启X-windows,而是利用现在的终端传送I/O,该命令与远程主机建立telnet连接,使用标准的server-client命令
qrsh命令与qlogin类似,与远程主机通过rsh连接。该命令同时集成了一个在集成交互式作业时非常有用的特性,当设定了
QRSH_WRAPPER变量时,该变量可代替用户的login in shell.
qalter可用来改变处于pending状态的作业属性。
qresub命令允许用户通过拷贝处于pengding或runing状态的作业来创建新的作业。新建作业与原作业具有相同的属性,并被分配了新的job
ID和hold状态。该命令可用来先拷贝一个作业再修改其属性。
options
-a date_time 作业开始运行时间
-b y[es]|n[o]判断作业指定是二进制文件或scripts。y :是 n:scripts
-c 定义作业是否进行checkpoint. n 不进行checkpoint,s
当批处理服务器当机时进行checkpoint,m当CPU负载小时进行checkpoint,x当作业暂停时进行checkpoint,<interval>
每隔一定时间进行checkpoint。m,<interval>参数将在queue中定义
-ckpt 定义checkpoint环境,同时用来声明该作业需进行checkpoint
-cwd 从当前工作路径运行作业
-display 使用X-windows
-dl date_time 定义作业到期时间,在作业到期时间之前,作业的优先级会逐步提高,直到管理员指定的最高级别。
-e 指定输出error文件的路径及文件名
-hard 定义作业被调度的硬性要求
-h 作业hold类型。u:表示用户hold,s:表示系统hold,o:表示被操作员hold,n:取消hold
,U:取消用户hold,S:取消系统hold,O:取消操作员hold。
-hold_jid wc_job_list 定义作业的依赖关系,制定作业需要在指定作业正常结束后才可以开始运行。wc_job_list 可以是JOB
ID或作业名
-hold_jid_ad wc_job_list 定义阵列作业的依赖关系
-i 定义输入文件
-inherit 该参数只能 qrsh
、qmake可以使用。qrsh允许在一个已经被调度的并行作业中开启新的任务,使用该参数时大部分的参数都将被忽略,只有-verbose, -v 和
-V 可以使用。 可以使用-v PWD 来代替-cwd
-j y[es]|n[o] 定义作业的标准错误输出是否写入的输出文件中
-js job_share 定义作业与其他作业共享关系.
-jsv
-l resource=value, 表明作业运行所需要的资源。
-m b|e|a|s|n 。定义邮件发送规则。b:作业开始时发送。e:作业结束时发送。a:作业失败时发送 s:作业挂起时发送。n:不发送
-M user[@host] 定义邮件地址
-masterq wc_queue_list :定义主队列。????
-notify :定义发送SIGSTOP or SIGKILL信号的延迟时间
-now y[es]|n[o]:立即执行作业
-N 作业名
-noshell
-nostdin
-o [[hostname]:]path :定义输出文件路径、文件名
-ot override_tickets:定义覆盖票
-P project_name:定义项目名称
-p priority :定义优先级
-pe parallel_environment:定义并行环境
-q wc_queue_list:定义作业运行队列
-R y[es]|n[o]:定义是否为作业保留资源。
-r y[es]|n[o]:定义作业失败后是否重新运行
-soft 定义作业被调度的软性要求
-sync y[es]|n[o]:定义qsub是否等待直到作业结束
-u username,只有qlter命令可以使用该参数。修改作业的用户名
-v variable:定义环境变量
-verbose 使qrsh命令输出信息
-verify 验证作业参数时使用
-V 传递当前命令的所有环境变量
-wd working_dir :定义工作目录
---------------------------------------------------------------------------
USE of Sun Grid Engine(SGE)
Jobs submition
qsub ---> submit batch job
Job information display
qstat ---> displays status listings
Job management
qhold ---> hold back a pending submitted job from execution
qrls ---> release held job for execution
qdel ---> delete a job from a queue
qmod -s ---> suspend a job from execution
qmod -us ---> release suspended job for execution
A first look at job submission:
create a shell script and make it executable
vi script1.sh # create a shell script
chmod u+x script1.sh # make it executable
the shell script
#!/bin/sh
#$ -S /bin/sh
/share/apps/bin/blastall -p blastp -i test.fa -d nr
submit shell script with a given job name (note use of -N option)?
qsub -N mytest script1.sh
check the status of job (note use of -u option)?
qstat -u test
the output of stdout and stderr appear in files in your home directory
ls *.o*, *.e*
qdel:
To terminate a job, first get the job-id with qstatqstat -u userid
Terminate the job
qdel job-id
Terminate the job that is running (forced)?
qdel -f job-id
qmod:
To suspend a job, first get the job-id with qstatqstat -u userid
Suspend the job
qmod –s job-id
Release the job for execution?
qmod -us job-id
网格计算和SGE
从概念上讲,网格很简单。它是执行任务的计算资源的集合。对用户而言,它就是一个大系统,提供单个切入点,以访问强大而分 散的资源。用户将网格视作单个计算资源。资源管理软件(如Sun Grid Engine)接受由用户提交的作业,并根据资源管理策略将作业安排在网格内适当的系统上执行。用户可以一次提交数千个作业,而不必考虑它们在何处运行。
什么是Cluster grids?
网格的类型:Cluster grids , campus grids and global grids.
集群网格(cluster grids)包括许多计算资源,SGE帮助我们将这些一起工作的资源合理地提供给一个项目或一个部门的用户。
SGE的工作原理
Sun Grid Engine 软件为用户提供了向Sun Grid Engine 系统提交要求计算的任务的方法,以透明地分配相关的工作负荷。用户可以向Sun Grid Engine 系统提交批处理作业、交互式作业和并行作业。
Sun Grid Engine用以下方式调解可用资源和作业需求。
通过Sun Grid Engine 系统提交作业的用户描述出作业需求的概况。此外,系统还要检索用户的身份以及他或她与项目或用户组的从属关系。用户提交作业的时间也将存储起来。
准确地说,在队列被定为可以对新作业执行操作的那一刻, Sun Grid Engine 系统就决定了适合该队列的作业,并立即分派具有最高优先级或等待时间最长久的作业。
Sun Grid Engine 队列允许同时执行许多作业。Sun Grid Engine 系统将尽量在负荷最小且最适合的队列中开始新的作业。
为什么用SGE?
用户:用户能够自由地在单一的控制节点上投放上千个的任务,而不必关心任务在哪个节点运行,这样就大大简化了用户的使用。
管理员:提供广泛的工具,用以监控投放的任务。
SGE能做什么?
系统接受用户所投放的任务,并基于最优的资源管理方案,将任务列队在适合的网格内系统上,等待运行。
SGE依据由管理者制定的规则,检测到网格内的所有可用资源,聚集资源,并在该网格内自动地最优地分配和路由资源。
SGE怎样工作?
接受用户投放的任务;
在任务运行以前,将任务放在一个存储区域;
发送任务到一个执行设备,并监控任务的运行;
运行结束时写回结果并记录运行日志。
SGE的组成
节点(Hosts)
后台程序(Daemons)
队列(Queues)
用户命令(Client Commands)
SGE的组成
节点(Hosts)
Master Hosts
Execution Hosts
Administration Hosts
Submit Hosts
后台程序(Daemons)
队列(Queues)
用户命令(Client Commands)
SGE的组成
节点(Hosts)
后台程序(Daemons)
sge_qmaster – the Master Daemon
sge_schedd – the Scheduler Daemon
sge_execd – the Execution Daemon
sge_commd – the Communication Daemon
队列(Queues)
用户命令(Client Commands)
队列的概念
队列为任务提供服务;
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 – 此命令显示Sun Grid Engine 执行主机的状态信息。
qlogin – 此命令启动telnet 或类似的登录会话,并自动选择负荷较低并且较
为适合的主机。
qmake – 此命令可取代标准的UNIX make 命令工具。它扩充了make 的功能,能够将相互独立的make 步骤分配到一组适合的机器。
qmod – 此命令使拥有者可以暂停或启用队列(将信号发送给当前与此队列相关的所有活动进程)。
qmon – 此命令提供了X-windows Motif 命令界面和监视工具。
qresub – 此命令通过复制正在运行或暂挂的作业,创建新的作业。
qrls – 此命令释放先前被阻止执行的作业,例如通过qhold (见上)阻止执行。
qrsh – 此命令用途很多,比如:
提供通过Sun Grid Engine 系统执行的远程交互应用程序— 与标准的UNIX命令工具rsh 相似
允许提交批处理作业,一经执行便可支持终端I/O (标准/ 错误输出和标准输入)以及终端控制提供批处理作业提交客户机,该客户机在作业完成之前一直保持活动状态允许Sun Grid Engine 软件控制并行作业的任务远程执行
qselect – 此命令显示与指定选择标准相对应的队列名称列表。qselect的输出结果通常送往其它Sun Grid Engine 命令,以便对选定的一组队列执行操作。
qsh – 此命令在负荷较低的主机上打开交互式shell (在xterm 中)。所有类型的交互式作业均可以在此shell 内运行。
qstat – 此命令列出所有与群集相关的作业和队列的状态。
qsub – 此命令是将作业提交到Sun Grid Engine 系统的用户界面。
qtcsh – 此命令与众所周知并普遍使用的Unix C-Shell (csh) 派生物tcsh 完全兼容,并能替代它。它扩展了命令shell 的功能,即通过Sun Grid Engine 软件将指定应用程序的执行透明地分配给适合的并且负荷较低的主机。
察看队列属性
% 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
可请求的属性
提交一个Sun Grid Engine 作业时,可指定该作业的需求概况。用户可以指定作业所需的主机或队列的属性或特性以保证作业成功运行。Sun Grid Engine 将这些作业需求映射到Sun Grid Engine 群集的主机和队列的配置,从而找到适合该作业的主机。
可用的属性包括队列特性列表、全局属性和主机相关属性的列表,以及管理员定义的属性。但是,为方便起见, Sun Grid Engine 管理员通常只将一个所有可用属性的子集定义为可请求。
显示可请求属性列表
% qconf –scl
显示已配置的属性组列表
属性组包含一组属性的定义。有三种标准属性组:
global – 针对群集全局属性(可选)
host – 针对主机特有的属性
queue – 针对队列特性的属性
显示可请求属性列表
% qconf -sc 属性组名称[,...]
显示某个特定属性组的属性
名称一栏中的显示与qconf -sq 命令显示的第一栏基本相同
缩写名一栏包含可由管理员定义的第一栏中全名的缩写
可否请求一栏表明是否可将相应的项用于qsub
关系栏定义关系运算以用于计算队列是否满足用户请求
可否使用栏和缺省值栏对管理员极其有用,管理员可以用它们声明?°可使用资源?±,。用户可以像请求其它属性一样请求可使用资源
用户访问权限
获得当前配置的ACL 列表
% qconf -sul
显示一个或多个访问列表中的项
% qconf -su ACL 名称[,...]
注:ACL 包含用户帐户名和UNIX 组名, UNIX 组名用前缀“@”标识出来。这样即可确定您的帐户所属的ACL。
从命令行运行简单作业
执行任何Sun Grid Engine 命令之前,必须设置适当的可执行搜索路径和其它环境条件。
% 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
# This is a sample script file for compiling and
# running a sample FORTRAN program under Sun Grid Engine.
cd TEST
# Now we need to compile the program 'flow.f' and
# name the executable 'flow'.
f77 flow.f -o flow
资源需求定义
实际上要执行主机成功完成作业,大部分作业要求一些先决条件。这些先决条件包括足够的可用内存、安装所需软件或某种操作系统体系结构。而且,群集管理者也经常对群集中的机器加上一些使用限制。例如,作业可使用的CPU 时间就常常受到限制。
资源需求示例
% qsub -l arch=solaris64,h_vmem=750M,permas=1 \
permas.sh
要求至少有750 MB 内存的solaris64 主机,且该主机要有可用的permas 许可证。
SGE如何分配资源
资源分配算法
1. 读入并分析所有缺省的请求文件。
2. 处理脚本文件的内嵌选项。
3. 提交作业时读取所有脚本的内嵌选项,而不考虑其在脚本文件中的位置。
4. 从命令行读取和分析所有请求。
SGE如何分配资源
评估请求优先顺序
1. 脚本/ 缺省请求文件从左到右
2. 脚本/ 缺省请求文件从上到下
3. 命令行从左到右
SGE如何分配资源
评估请求优先顺序
1. 脚本/ 缺省请求文件从左到右
2. 脚本/ 缺省请求文件从上到下
3. 命令行从左到右
SGE如何分配资源
分配所请求的硬性资源。若请求无效,将拒绝提交。若提交时无法满足一个或多个请求(例如被请求的队列正忙),作业将假脱机,稍后重新调度。若所有硬性请求都能满足,将分配这些资源,作业可以运行。
检查所请求的软性资源。即使部分或全部请求无法满足,作业仍可运行。若多个队列(已满足硬性资源请求)提供了部分软性资源列表(重叠或不同), Sun GridEngine 软件将选择满足最多软性请求的队列。
提交作业
% qsub flow.sh
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \ -S /bin/tcsh -o flow.out -j y flow.sh big.data
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \
-S /bin/tcsh -o flow.out -j y -pe mpi 4-16 \
-v SHARED_MEM=TRUE,MODEL_SIZE=LARGE \ -ac JOB_STEP=preprocessing,PORT=1234 \
-A FLOW -w w -r y -m s,e -q big_q\
-M me@myhost.com,me@other.address \
flow.sh big.data
提交交互式作业
qlogin ¨C 类似于telnet 会话,在Sun Grid Engine 软件选定的主机上启动。
qrsh ¨C 这是一个等效于标准的UNIX rsh 的工具。命令在Sun Grid Engine 系统选定的主机上远程执行,若未指定要执行的命令,会在远程主机上启动远程登录(rlogin) 会话。
qsh ¨C 这是一个xterm,它从执行作业的计算机启动,其显示设置与您的指定值或DISPLAY 环境变量相对应。若未设定DISPLAY 变量且未明确定义显示目标, Sun Grid Engine 将把xterm 定向到提交交互式作业的主机的X 服务器的0.0 屏幕。
调度Sun Grid Engine 作业
基本上, Sun Grid Engine 5.3 软件使用两套标准调度作业:
作业优先级
等份额
作业优先级
关于不同作业的调度过程顺序,缺省情况下应用先进先出(fifo) 规则。所有暂挂(尚未调度)作业均插入到一个列表中,第一个提交的作业在列表的头部,接下来是第二项提交的作业,等等。首先尝试调度先提交的作业。若至少 有一个可用的合适队列,则作业将得到调度。Sun Grid Engine 软件此后将试图调度第二项作业,而不论第一项作业是否已分配。暂挂作业中的此优先顺序可通过由群集管理员分配给作业的优先级值覆盖。实际的优先级值可通过 使用qstat 命令显示(优先级值包含在标题为P 的暂挂作业显示的最后一栏)
等份额调度
fifo 规则有时会导致问题,尤其是若用户试图同时提交一系列作业的情况下(例如,通过shell 脚本发出一个接一个的提交)。所有后来提交的和指定到同一组队列的作业均不得不等待很长的时间。等份额调度将已拥有运行作业的用户的作业排列在优先级列表 的结尾,从而避免了这一问题。排序仅在同一优先级值范围的作业中执行。若Sun Grid Engine 调度程序配置项user_sort 设置为TRUE (请参考sched_conf 手册页以获得细节),激活等份额调度。
队列选择
Sun Grid Engine 系统不分配请求非特定队列的作业,如果它们不能即时启动的话。此类作业将在sge_qmaster 中标记为假脱机,该命令会不时尝试重新调度它们。于是,作业将分配给下一个可用的合适队列。与此相反,在请求中指明队列名的作业将直接进入该队列,无论它 们是否能启动者处于假脱机状态。
若作业被调度,并且有多个空闲队列满足其资源请求,则在合适的队列中,通常作业将被分配给负荷最轻的主机上的队列。no,群集管理者可将此依赖于负荷的方案更改为固定的顺序算法。
点检查作业
用户级别
内核级别
点检查作业脚本
#!/bin/sh
#Force /bin/sh in Sun Grid Engine
#$ -S /bin/csh
# Test if restarted/migrated
if [ $RESTARTED = 0 ]; then
# 0 = not restarted
# Parts to be executed only during the first
# start go in here
set_up_grid
fi
# Start the checkpointing executable
fem
#End of scriptfile
命令行操作点检查作业
#qsub 选项自变量
除qsub -ckpt 和 -c 选项(它们请求点检查机制并且定义对作业进行点检查的时机)外,提交 点检查作业的方式与常规批处理脚本相同
-ckpt 选项带一个自变量,它是要使用的点检查环境的名称
-c 选项不是必需的,它也带一个自变量。它可用于覆盖点检查环境配置中 when 参数的定义
-c 选项的自变量
n – 不执行点检查。此项优先级最高。
s – 检查点仅在作业主机上的 sge_execd 关闭时才产生。
m – 按相应队列配置中定义的最小 CPU 时间间隔产生检查点。
x – 作业暂停时产生检查点。
interval – 以给定时间间隔产生检查点,但其频率不高于min_cpu_interval 定义的值(参见上文)。时间值必须以 hh:mm:ss 形式指定(小时两位、分钟两位、秒两位,用冒号分开)。
监视和控制SGE作业
原则上,有三种方法可监视提交的作业。
使用Sun Grid Engine图形用户界面QMON
在命令行使用qstat命令
通过电子邮件
用qstat监视作业
% qstat
提供已提交作业的概述
% qstat -f
另外包含了有关当前配置队列的信息
qstat
job-ID prior name user state submit/start at queue function
231 0 hydra craig r 07/13/96 20:27:15 durin.q MASTER
232 0 compile penny r 07/13/96 20:30:40 durin.q MASTER
230 0 blackhole don r 07/13/96 20:26:10 dwain.q MASTER
233 0 mac elaine r 07/13/96 20:30:40 dwain.q MASTER
234 0 golf shannon r 07/13/96 20:31:44 dwain.q MASTER
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
注:state 栏包含的单个字符代码含义如下:r 表示正运行,
s 表示已暂停, q 表示已排队, w 表示在等待
qstat -f
queuename qtype used/free load_avg arch states
dq BIP 0/1 99.99 sun4 au
durin.q BIP 2/2 0.36 sun4
231 0 hydra craig r 07/13/96 20:27:15 MASTER
232 0 compile penny r 07/13/96 20:30:40 MASTER
dwain.q BIP 3/3 0.36 sun4
230 0 blackhole don r 07/13/96 20:26:10 MASTER
233 0 mac elaine r 07/13/96 20:30:40 MASTER
234 0 golf shannon r 07/13/96 20:31:44 MASTER
fq BIP 0/3 0.36 sun4
####################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS -
####################################################
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
命令行控制作业
可以使用qdel 命令取消Sun Grid Engine 作业,无论它们是正在运行还是处于假脱机状态。qmod 命令可以暂停和取消暂停(恢复)已经在运行的作业。
使用这两个命令都需要知道作业标识号,此标识号可由qsub 命令得到。若忘了标识号,可通过qstat 检索。
% qdel 作业ID
% qdel -f 作业ID 1, 作业ID 2
% qmod -s 作业ID
% qmod -us -f 作业ID 1, 作业ID 2
% qmod -s 作业ID. 任务ID 范围
用qmod 控制队列
% qmod -s 队列名
% qmod -us -f 队列名1 、队列名2
% qmod -d 队列名
% qmod -e 队列名1 、队列名2 、队列名3
注意:注意– 暂停/ 取消暂停和禁用/ 启用队列都需要拥有者、Sun Grid Engine 管理人员或操作人员权限
SGE的管理
主 控主机¨C 主控主机是一切群集活动的中心。它运行主控守护程序sge_qmaster。sge_qmaster 控制所有的Sun Grid Engine 组件(如队列和作业),并维护关于组件状态和用户访问权限之类的表单。主控主机通常运行SGE调度程序sge_schedd。除了在安装过程中执行的配置 外,主控主机不需要进一步配置。
执行主机¨C 执行主机是有权执行Sun Grid Engine 作业的节点。因此,该主机上有Sun Grid Engine 队列,并运行Sun Grid Engine 执行守护程序sge_execd 。
管理主机¨C 可为主控主机以外的其它主机赋予权限,以在Sun Grid Engine 中完成任何种类的管理活动。管理主机可用以下命令设置:qconf -ah 主机名
提 交主机¨C 提交主机仅允许提交和控制批处理作业。尤其是登录到提交主机的用户可通过qsub 提交作业,可通过qstat 或运行Sun Grid Engine 的OSF/1Motif 图形用户界面QMON 控制作业状态。提交主机可用以下命令设置:qconf -as 主机名
配置管理主机
qconf -ah 主机名
添加管理主机— 将指定主机添至管理主机列表。
qconf -dh 主机名
删除管理主机— 将指定主机从管理主机列表中删除。
qconf -sh
显示管理主机— 显示所有当前已配置的管理主机的列表。
配置提交主机
qconf -as 主机名
添加提交主机— 将指定主机添至提交主机列表。
qconf -ds 主机名
删除提交主机— 将指定主机从提交主机列表中删除。
qconf -ss
显示提交主机— 显示所有当前配置为提供提交权限的主机列表。
配置执行主机
qconf -ae [ 执行主机模板]
添加执行主机?? 此命令启动一个编辑器,其中显示执行主机配置模板。
qconf -de 主机名
删除执行主机?? 将指定主机从执行主机列表中删除。执行主机配置中的所有项都将丢失。
qconf -me 主机名
修改执行主机?? 此命令启动一个编辑器(缺省情况下为vi 或$EDITOR 环境变量对应的编辑器),其中显示指定的执行主机配置(即模板)。通过更改模板并将其保存至磁盘来修改执行主机配置。
配置执行主机
qconf -Me 文件名
修改执行主机?? 将文件名的内容用作执行主机配置模板。指定文件中的配置必须关涉现有执行主机。此执行主机的配置将由该文件的内容代替。此qconf 选项对于脱机更改执行主机配置很有用。
qconf -se 主机名
显示执行主机?? 显示所指定执行主机的配置。
qconf ¨Csel
显示执行主机列表?? 显示配置为执行主机的主机名列表。
中止守护程序
qconf ¨Ckej
中止当前所有活动的作业,并关闭所有Sun Grid Engine 执行守护程序。
qconf -ke
SGE执行守护程序将中止,但不会取消活动的作业。
qconf ¨Cks
关闭Sun Grid Engine 调度程序sge_schedd
qconf ¨Ckm
强制终止sge_qmaster 进程
重新启动守护程序
% <sge 根目录>/< 单元>/common/rcsge
注意:以root 用户身份登录到要重新启动Sun Grid Engine 5.3 守护程序的机器。此脚本将寻找通常在此主机上运行的守护程序,然后启动相应的守护程序。
显示基本群集配置
% qconf –sconf
显示全局配置
% qconf -sconf global
显示全局配置
% qconf -sconf < 主机>
显示主机的本地配置
修改基本群集配置
% qconf -mconf global
修改全局配置
% qconf -mconf < 主机>
指定的执行主机或主控主机的本地配置
配置队列
qconf -aq [ 队列名]
添加队列?? 此命令启动一个编辑器,其中显示队列配置模板。如果提供可选参数队列名,则此队列的配置将用作模板。可通过更改模板并将其保存至磁盘来配置队列。
qconf -Aq 文件名
添加队列?? 用文件文件名来定义一个队列。
qconf -cq 队列名[,...]
清除队列?? 清除指定队列的状态,使之闲置,停止运行作业。状态复位,且不考虑当前状态。该选项对于排除错误情形很有用,但不宜在常规操作模式下使用。
配置队列
qconf -dq 队列名[,...]
删除队列?? 从可用队列列表中删除自变量列表中指定的队列。
qconf -mq 队列名
修改队列?? 修改指定的队列。启动一个编辑器环境变量对应的编辑器),其中显示欲更改的队列的配置。
qconf -Mq 文件名
修改队列?? 用文件文件名来定义已修改的队列配置。
qconf -sq [ 队列名[,...]]
显示队列?? 显示缺省模板队列配置(若不带自变量)或以逗号分隔的自变量列表中所列队列的当前配置。
qconf ¨Csql
显示队列列表?? 显示所有当前已配置队列的列表。
配置日历
qconf -Acal, -acal
添加日历¨C 此命令向Sun Grid Engine 群集添加一个新的日历配置。要添加的日历要么从文件读取,要么是打开一个编辑器,其中显示模板配置,您可在此输入日历。
qconf ¨Cdcal
删除¨C 日历。
qconf -Mcal, -mcal
修改日历¨C 此命令修改现有的日历配置。
qconf -scal, -scall
显示日历¨C 此命令显示现有日历配置(-scal),或显示一份所有已配置日历的列表(-scall)。
修改属性组配置
qconf -Ac, -ac
将新属性组添加到可用属性组列表。
qconf -Mc, -mc
修改现有属性组。
qconf -sc licenses
SGE的用户
管理人员¨C 管理人员可以对Sun Grid Engine 进行全面操控。缺省情况下,主控主机及队列所在的任何计算机的超级用户均有管理人员权限。
操作人员¨C 操作人员可执行许多与管理人员相同的命令,但不能添加、删除或修改队列。
拥有者¨C 队列拥有者只限于暂停/ 取消暂停或禁用/ 启用其所拥有的队列。这些权限对qidle 的成功使用是必要的。用户通常声明为位于其桌面工作站上的队列的拥有者。
配置管理人员帐户
qconf -am 用户名[,...]
添加管理人员¨C 此命令将一位或多位用户添加到Sun Grid Engine 管理人员列表。缺省情况下,所有Sun Grid Engine 受托主机的root 账户均为Sun Grid Engine 管理人员。
qconf -dm 用户名[,...]
删除管理人员¨C 此命令从Sun Grid Engine 管理人员列表删除指定用户。
qconf ¨Csm
显示管理人员¨C 此命令显示所有Sun Grid Engine 管理人员的列表。
配置操作人员帐户
qconf -ao 用户名[,...]
添加操作人员¨C 此命令将一位或多位用户添加到Sun Grid Engine 操作人员列表。
qconf -do 用户名[,...]
删除操作人员¨C 此命令从Sun Grid Engine 操作人员列表删除指定用户。
qconf ¨Cso
显示操作人员¨C 此命令显示所有Sun Grid Engine 操作人员的列表。
配置用户访问列表
qconf -au 用户名[,...] 访问列表名[,...]
添加用户¨C 此命令将一个或多个用户添加到指定的访问列表。
qconf -du 用户名[,...] 访问列表名[,...]
删除用户¨C 此命令从指定的访问列表中删除一个或多个用户。
qconf -su 访问列表名[,...]
显示用户访问列表¨C 此命令显示指定的访问列表。
qconf ¨Csul
显示用户访问列表¨C 此命令显示当前已定义的所有访问列表清单。
配置点检查环境
qconf -ackpt 点检查名称
添加点检查环境?? 此命令启动一个带点检查环境配置模板的编辑器,更改模板并将其保存到磁盘,即可配置点检查环境。
qconf -dckpt 点检查名称
删除点检查环境?? 此命令删除指定的点检查环境。
qconf -mckpt 点检查名称
修改点检查环境?? 此命令启动一个以指定点检查环境作为配置模板的编辑器更改模板。
qconf -sckpt 点检查名称
显示点检查环境?? 此命令将指定点检查环境的配置显示到标准输出。
qconf ¨Csckptl
显示点检查环境列表?? 此命令显示所有当前已配置的点检查环境的名称列表。
常见错误处理
sge_qmaster 日志文件:
/opt/gridengineer//default/spool/qmast/message
qstat -j < 作业ID>
qalter -w v < 作业ID>
常见错误处理
问题– 作业的输出文件显示:Warning: no access to tty; thus no job control in this shell...。
可能原因1– 一个或多个登录文件包含了stty 命令。这些命令仅在存在终端时有用。
可能原因2 –脚本错误。
可能的解决方案1– 在Sun Grid Engine 5.3 (企业版)批处理作业中,没有与这些作业关联的终端。您必须从登录文件中删除所有stty 命令,或者用一条在处理前检查终端的if 语句把它们括起来。
可能的解决方案2–添加“#$ -S /bin/sh”
常见错误处理
问题– 您可以从命令行运行作业脚本,但通过qsub 命令运行时失败。
可能原因1– 可能对作业设置了进程限制。要测试这一点,写出执行limit 和limit -h 功能的测试脚本。分别在shell 提示下和通过qsub 命令交互执行两个脚本,比较结果。
可能原因2–系统同步未完成
可能的解决方案1– 确保将配置文件中用于在shell 中设置限制的所有命令删除。
可能的解决方案2–rocks-user,cluster-fork 411get –all ,作同步。
常见问题处理
问题¨C 执行主机报告负荷为99.99。
能原因¨C 有三种可能。
1. execd 守护程序未在主机上运行。
2. 未正确指定缺省域。
3. qmaster 主机所见的执行主机名与执行主机自身所见不同。
可能的解决方案¨C
1. 作为root 用户,在执行主机上通过运行$SGE_ROOT/default/common/rcsge脚本来启动execd 守护程序。
2. 作为Sun Grid Engine (企业版)管理员,运行qconf -mconf 命令并将default_domain 变量更改为none。
3. 若您正使用DNS 解析运算群集的主机名,则请配置/etc/hosts 和NIS 以返回完全合格的域名(FQDN) 作为主要主机名。
常见错误处理
报告作业或队列处于错误状态E
处理方法:$SGE_ROOT/default/spool/qmaster/messages
再就具体问题进行相关处理,一般的问题有:
计算节点未挂载数据盘,出现文件找不到的错误。
可能的解决方案1– 在Sun Grid Engine 5.3 (企业版)批处理作业中,没有与这些作业关联的终端。您必须从登录文件中删除所有stty 命令,或者用一条在处理前检查终端的if 语句把它们括起来。
可能的解决方案2–添加“#$ -S /bin/sh”
常见错误处理
问题– 您可以从命令行运行作业脚本,但通过qsub 命令运行时失败。
可能原因1– 可能对作业设置了进程限制。要测试这一点,写出执行limit 和limit -h 功能的测试脚本。分别在shell 提示下和通过qsub 命令交互执行两个脚本,比较结果。
可能原因2–系统同步未完成
可能的解决方案1– 确保将配置文件中用于在shell 中设置限制的所有命令删除。
可能的解决方案2–rocks-user,cluster-fork 411get –all ,作同步。
常见问题处理
问题¨C 执行主机报告负荷为99.99。
能原因¨C 有三种可能。
1. execd 守护程序未在主机上运行。
2. 未正确指定缺省域。
3. qmaster 主机所见的执行主机名与执行主机自身所见不同。
可能的解决方案¨C
1. 作为root 用户,在执行主机上通过运行$SGE_ROOT/default/common/rcsge脚本来启动execd 守护程序。
2. 作为Sun Grid Engine (企业版)管理员,运行qconf -mconf 命令并将default_domain 变量更改为none。
3. 若您正使用DNS 解析运算群集的主机名,则请配置/etc/hosts 和NIS 以返回完全合格的域名(FQDN) 作为主要主机名。
常见错误处理
报告作业或队列处于错误状态E
处理方法:$SGE_ROOT/default/spool/qmaster/messages
再就具体问题进行相关处理,一般的问题有:
计算节点未挂载数据盘,出现文件找不到的错误。