SGE作业基本用法

SGE简介:

SGE(Sun Grid Engine),远程调度作业。

网格,执行任务的计算资源的集合,用户将网格视作单个计算资源。

SGE接受由用户提交的作业,并根据资源管理策略将作业安排在网格内适当的系统上执行,用户一次可以提交数千个作业,而不必考虑它们在何处运行。集群网格包括许多计算资源,SGE帮助我们合理的分配计算资源给用户。

 

SGE工作原理:SGE依据管理者制定的规则,检测到网格内的所有可用资源,聚集资源,并在该网格内自动地最优地分配资源。

1. 用户通过SGE提交任务的时候描述任务的相关信息,如可用的队列,作业需要分配的内存和CPU等信息。当用户没有描述清楚这些信息的时候,SGE必须检索用户的身份、用户与项目、所属用户组的从属关系,提交作业后这些检索信息也将被存储起来。

2. SGE计算用户可用队列的可用内存,负载情况,然后为队列选择合适的作业,为作业选择合适的队列,优先分派具有最高优先级或等待时间最长的作业。SGE允许同时执行多个作业,SGE系统将尽量在负荷最小且最适合的队列中开始新的作业。

SGE怎样工作:

1. 接受用户投放的任务

2. 在任务运行以前,将任务放到一个存储区域

3. 发送任务到一个执行设备,并监控任务的运行

4. 运行结束写回结果并记录运行日志

常用的SGE命令:

1. 投递任务到指定队列all.q

    方法一: qsub -cwd -l vf=*G -q all.q *.sh

    方法二: qsub -cwd -S /bin/bash -l vf=*G -q all.q *.sh

    -cwd 表示在当前路径下投递,sge的日志会输出到当前路径。

    -l vf=*G 任务的预估内存,内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂。

    -q 指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列。

    注: 方法一和方法二都可以投递任务到指定队列,但是方法一可能会输出警告信息“Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.” 这是因为SGE默认使用的是tcsh,而*.sh使用的是bash,所以应该在投递的时候指明命令解释器。若非要使用方法一的话,可以在脚本*.sh的开头加上#$ -S /bin/bash。

2. 投递任务到指定节点

    qsub -cwd -l vf=*G -l h=node1 *.sh

    qsub -cwd -l vf=*G -l h=node1 -P project -q all.q *.sh

    -P 参数指明任务所属的项目

3. 查询任务

    qstat  -f            查看所有任务

    qstat  -j job id   按任务id查看

    qstat -u user   按用户查看

    任务状态:

    

    qw    表示等待状态

    Eqw  投递任务出错

    r       表示任务正在运行

    dr     节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失

    t        数据正在传送当中 transferrring

    s       任务处于悬挂状态,suspend 

4. 删除任务

    qdel 1111   删除任务号为1111的任务

 

5. 其他命令

    qrsh  与qsub相比,是交互式的投递任务,注意参数:

            -now yes|no   默认设置为yes 

                     若设置为yes,立即调度作业,如果没有可用资源,则拒绝作业,任务投递失败,任务状态为Eqw。

                     若设置为no,调度时如果没有可用资源,则将作业排入队列,等待调度。

            例子: qrsh -l vf=*G -q all.q -now no -w n *sh

    qacct  从集群日志中抽取任意账户信息

    qalter 更改已提交但正处于暂挂状态的作业的属性

    qalter -P 任务编号 jobID 即可钙片任务的项目编号

    qalter -l vf=24G jobID

    qconf 为集群和队列配置提供用户界面

    qhold 阻止已提交作业的执行

    qhost 显示SGE执行主机(即各个计算节点)的状态信息

    qlogin 启动telnet或类似的登录会话。

6. bash脚本与Linux环境变量

    为了防止脚本运行时找不到环境变量,在投递的bash脚本的前面最好加上以下两句话:

    #! /bin/bash

    #$ -S /bin/bash

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值