一 Gird Engine
Gird Engine 指的是SGE(Sun Gird Engine),是一个开源免费的batch-queuing 系统用来对分布式资源的管理。典型地他将被应用于计算机farm和高性能计算cluster,用来接收,schedule,分发和管理远程和分布式的大量的独立,并行的非交互的jobs,他也可以管理和schedule分布式资源的分配,例如处理器,内存,硬盘和软件license。简单地说就是将任务打包为job分发到计算机集中执行。
在Sun后来被Oracle收购后,从SGE延伸的开源产品为:
http://gridscheduler.sourceforge.net/ 基于SGE开发的且提供企业级服务的为UGE(Univa Gird Engine):
当然了Oracle在收购了Sun后改名为OGE(Oracle Gird Engine)且不免费:
其他关于SGE:
二 Gird Engine 的特点
* 多个高级的scheduling算法,从而允许基于多种策略的资源分配;
* cluster queues;
* job和scheduler错误冗余;
* job checkpointing;
* job 数组和job 任务;
* Distributed Resource Management And Access (job API),支持perl,python,java,c++等语言;
* 资源的保留;
* 基于xml的状态报告;
* 并行的job(MPI,PVM,OpenMP),使用qrsh实现可伸缩并行job的启动;
* 使用率统计;
* 并行的make,distmake,dmake,qmake;
* 支持几乎所有的系统,例如*unix,windows,Mac;
三 Gird Engine的架构和实例
典型的Gird Engine cluster包含了一个master host和一个或多个execution hosts。但是也可以设置多个shadow masters作为主master的后备,当主master出问题的时候,多个shadow masters可以代替主master继续工作。所有的execution hosts安装有gird engine execution daemon, master host装有qmaster daemon, shadow mater运行了shadow daemon。qmaster用来提交和schedule job到execution hosts。
使用实例参考:
例如EDA软件公司Mentor Graphics使用Gird Engine来管理所有的regression tests。 为了测试他们的软件,他们提交数千的jobs到gird或cluster中运行。gird engine使得所有的机器能够被充分地被利用,当一个机器完成了一个测试用例的运行,gird engine将提交另一个job给他,直到所有的测试运行结束。gird engine还可以用来管理licenses。 (EDA行业对软件所运行的硬件和软件环境有统一的要求-QSC标准,所以fram中的machines的配置相同,且所有的机器使用共享的存储,所以regression tests可以在所有的机器上运行。但是windows上软件的regression tests则需要注册表等的修改,所以一般使用虚拟机farm来代替Gird Engine实现资源的充分利用。)
四 sun gird engine使用
在SGE安装和配置后,设置基本的环境变量
SGE_ROOT
SGE_CLUSTER_NAME
SGE_CELL
然后:
qsub : 用来来提交job,job对应到一个shell脚本。
可以使用-P来指定job的优先级,例如ilight,bnormal分别表示交互的低优先级,批处理的正常优先级。可以使用-I来指定job对机器的选择条件,例如arch=solaris64,mem_free=4g表示solaris64架构和最少4G内存。
可以-V来将当前的环境变量导入到job的运行环境,还可以使用-e,-o来重定向输出。
qstat : 用来查看job的状态。
qhost : 用来查看所有的SGE中的hosts。
qaccess : 用来查看所有的job queues和job与机器的分配关系。
qdel 用来删除指定的job。
五其他
platform Load Sharing Facility(LSF) http://www.platform.com/
参考:http://www.oracle.com/technetwork/oem/host-server-mgmt/twp-gridengine-overview-167117.pdf
完!