网格计算和SGE
从
概念上讲,网格很简单。它是执行任务的计算资源的集合。对用户而言,它就是一个大系统,提供单个切入点,以访问强大而分散的资源。用户将网格视做单个计算
资源
SGE的工做原理
Sun Grid Engine
软件为用户提供了向
Sun Grid Engine
系统提交要求计算的任务的方法,以透明地分配相关的工做负荷。用户能够向
Sun Grid Engine
系统提交批处理做业、交互式做业和并行做业。
Sun Grid Engine
用如下方式调解可用资源和做业需求。
经过
Sun Grid Engine
系统提交做业的用户描述出做业需求的概况。此外,系统还要检索用户的身份以及他或她与项目或用户组的从属关系。用户提交做业的时间也将存储起来。
SGE的组成
节点(
Hosts
)
后台程序(
Daemons
)
sge_qmaster
–
the Master Daemon
sge_schedd
–
the Scheduler Daemon
sge_execd
–
the Execution Daemon
sge_commd
–
the Communication Daemon
队列(
Queues
)
经常使用命令
qsub
命令用来向
SGE
提交批处理做业,
SGE
支持单或多节点做业。
qsh
命令用来提交带
xterm
交互式做业,在执行主机上开启
X-windows.
qlogin
命令与
qsh
类似也是提交交互式做业到队列中,只是它不开启
X-windows
,而是利用如今的终端传送
I/O
,该命令与远程主机创建
telnet
链接,使用标准的
server-client
命令
qrsh
命令与
qlogin
相似,与远程主机经过
rsh
链接。
qalter
可用来改变处于
pending
状态的做业属性。
qresub
命令容许用户经过拷贝处于
pengding
或
runing
状态的做业来建立新的做业。新建做业与原做业具备相同的属性,并被分配了新的
job
ID
和
hold
状态。该命令可用来先拷贝一个做业再修改其属性。
qdel 删除任务
qmod 修改队列和任务属性
qstat 查看任务和队列状态
qacct
–
此命令从群集日志文件中抽取任意账户信息。
qmon
–
此命令为群集和队列配置提供用户界面。
qdel
–
用户、操做人员或管理人员可以使用此命令向做业或其子集发送信号。
qhold
–
此命令阻止已提交做业的执行。
qhost
–
此命令显示
Sun Grid Engine
执行主机的状态信息。
qconf 管理队列
qsub经常使用选项
-a date_time
做业开始运行时间
-b y[es]|n[o]
判断做业指定是二进制文件或
scripts
。
y
:是
n
:
scripts
-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
。
-i
定义输入文件
-V
可使用。
可使用
-v PWD
来代替
-cwd
-j y[es]|n[o]
定义做业的标准错误输出是否写入的输出文件中
-l resource=value,
代表做业运行所须要的资源。
-m b|e|a|s|n
。定义邮件发送规则。
b
:做业开始时发送。
e
:做业结束时发送。
a
:做业失败时发送
s
:做业挂起时发送。
n
:不发送
-M user[@host]
定义邮件地址
-notify
:定义发送
SIGSTOP or SIGKILL
信号的延迟时间
-now y[es]|n[o]
:当即执行做业
-N
做业名
-o [[hostname]:]path
:定义输出文件路径、文件名
-P project_name
:定义项目名称
-p priority
:定义优先级
-pe parallel_environment
:定义并行环境
-q wc_queue_list
:定义做业运行队列
-R y[es]|n[o]
:定义是否为做业保留资源。
-r y[es]|n[o]
:定义做业失败后是否从新运行
-soft
定义做业被调度的软性要求
-u username,
只有
qlter
命令可使用该参数。修改做业的用户名
-v variable
:定义环境变量
-verbose
使
qrsh
命令输出信息
-verify
验证做业参数时使用
-V
传递当前命令的全部环境变量
qconf经常使用选项算法
% 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
脚本。
资源需求定义
实际上要执行主机成功完成做业,大部分做业要求一些先决条件。这些先决条件包括足够的可用内存、安装所需软件或某种操做系统体系结构。并且,群集管理者也常常对群集中的机器加上一些使用限制。例如,做业可以使用的
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
软件将选择知足最多软性请求的队列。
提交做业
做业优先级
关
于不一样做业的调度过程顺序,缺省状况下应用先进先出
(fifo)
规则。全部暂挂(还没有调度)做业均插入到一个列表中,第一个提交的做业在列表的头部,接下来是第二项提交的做业,等等。首先尝试调度先提交的做业。若至少
有一个可用的合适队列,则做业将获得调度。
Sun Grid Engine
软件此后将试图调度第二项做业,而不论第一项做业是否已分配。暂挂做业中的此优先顺序可经过由群集管理员分配给做业的优先级值覆盖。实际的优先级值可经过
使用
qstat
命令显示(优先级值包含在标题为
P
的暂挂做业显示的最后一栏)
等份额调度
fifo
规则有时会致使问题,尤为是若用户试图同时提交一系列做业的状况下(例如,经过
shell
脚本发出一个接一个的提交)。全部后来提交的和指定到同一组队列的做业均不得不等待很长的时间。等份额调度将已拥有运行做业的用户的做业排列在优先级列表
的结尾,从而避免了这一问题。排序仅在同一优先级值范围的做业中执行。若
Sun Grid Engine
调度程序配置项
user_sort
设置为
TRUE
(请参考
sched_conf
手册页以得到细节),激活等份额调度。
队列选择
Sun Grid Engine
系统不分配请求非特定队列的做业,若是它们不能即时启动的话。此类做业将在
sge_qmaster
中标记为假脱机,该命令会不时尝试从新调度它们。因而,做业将分配给下一个可用的合适队列。与此相反,在请求中指明队列名的做业将直接进入该队列,不管它
们是否能启动者处于假脱机状态。
若做业被调度,而且有多个空闲队列知足其资源请求,则在合适的队列中,一般做业将被分配给负荷最轻的主机上的队列。
群集管理者可将此依赖于负荷的方案更改成固定的顺序算法。
监视和控制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
主机名
常见错误处理
sql
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
再就具体问题进行相关处理,通常的问题有:
计算节点未挂载数据盘,出现文件找不到的错误。shell
www.jiangyexiang.comwindows
QQ×××流:283605880dom