NGS

SGE 作业调度系统

2021-07-05  本文已影响0人  春秋不做梦

1、sge提交脚本qsub

  1、qsub work.sh work.sh 不能以数字开头
  2、qsub work.sh  默认工作路径为/home/username
  3、qsub -cwd work.sh  为当前路径 -wd 为指定路径!
  4、qsub -cwd -l vf=*G -q all.q *.sh
    -cwd 表示在当前路径下投递,sge的日志会输出到当前路径。
     -l vf=*G 任务的预估内存,内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂。
    -q 指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列。
  5、例子
        qsub -cwd -l vf=*G -l h=node1 *.sh
        qsub -cwd -l vf=*G -l h=node1 -P project -q all.q *.sh
        qsub –cwd  -l  h=compute-<hostaname>,vf=nG,p=n <shell script>
    投递任务到指定节点(h) 内存(vf) cpu数量(p)P为项目名字,script 脚本文件

2、查询任务qstat

  qstat -f            查看所有任务
  qstat -j jobId   按任务id查看
  qstat -u user   按用户查看
  任务状态:
            qw      表示等待状态
            Eqw    投递任务出错
            r        表示任务正在运行
            dr     节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失
            s      挂起任务
            Rr    重新跑任务
            hqw   任务挂起等待中,待依赖的任务完成后执行

3、任务删除qdel

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

4、其他命令

  qrsh  与qsub相比,是交互式的投递任务,注意参数:
    -now yes|no   默认设置为yes 
                     若设置为yes,立即调度作业,如果没有可用资源,则拒绝作业,任务投递失败,任务状态为Eqw。
                     若设置为no,调度时如果没有可用资源,则将作业排入队列,等待调度。
             例子: qrsh -l vf=*G -q all.q -now no -w n *sh
    qacct  从集群日志中抽取任意账户信息
    qalter 更改已提交但正处于暂挂状态的作业的属性
    qconf 为集群和队列配置提供用户界面
    qhold 阻止已提交作业的执行
    qhost 显示SGE执行主机(即各个计算节点)的状态信息
    qlogin 启动telnet或类似的登录会话。

5、bash脚本与Linux环境变量

  为了防止脚本运行时找不到环境变量,在投递的bash脚本的前面最好加上以下两句话:
  #! /bin/bash
  #$ -S /bin/bash
  #$ -V
  #$ -cwd
  #$ -l vf=25G
 

6、日志查看

  1、sge会产生两个文件一个是test.sheID,一个是test.shoID其中test.sheID为错误文件。test.shoID为记录文件!
  调查中.....

7、sge常用命令

**Sum Grid Engine****常用命令**
  qacct       #从群集日志文件抽取仲裁记录信息
  qalter      #更改已提交但暂挂的作业的属性
  qconf       #提供群集配置和队列配置的用户界面
  qdel        #为用户、操作员或管理员提供向作业或其子集发送信号的方式
  qhold       #阻止已提交作业的执行
  qhost       #显示执行主机的状态信息
  qlogin      #启用telnet或类似的带有自动选择的低负载、适当主机的登录会话
  qmake       #标准Unix make工具的替代工具。qmake延伸了make的功能,使其能够在一组合适的计算机之间分布一系列的make步骤。
  qmod        #使拥有者暂停或启用队列。所有与该队列相关的活动的进程也都将得到信号。
  qmon        #提供 X Windows Motif 命令界面和监视工具。
  qresub      #通过复制运行的或暂挂的作业创建新作业。
  qrls        #将作业从之前分配到的留置区域(例如,通过qhold)释放。
  qrsh        #可用于多种用途,比如以下的情形:
            #<1>通过 Grid Engine 系统提供交互式应用程序的远程执行。qrsh 是标准的 Unix 工具 rsh 相比较而言。
            #<2>允许提交批处理作业,执行时支持终端 I/O 和终端控制。终端 I/O 包括标准输出、标准错误和标准输入。
            #<3>提供一个在批处理作业结束之前保持活动状态的提交客户机。
            #<4>允许在 Grid Engine 软件控制下远程执行并行作业任务。
  qselect     #打印与指定的选择标准对应的队列名称列表。qselect 的输出通常输入到其他的 Grid Engine 系统命令,以便对选定的队列组进行操作。
  qsh         #在较轻负荷主机的 xterm 中打开交互式 shell 。 在该 shell 中,任何类型的交互式作业都可以运行。
  qstat       #提供与群集相关的所有作业和队列的状态列表。
  qsub        #将批处理作业提交到 Grid Engine 系统的用户界面。
  qtchsh      #完全兼容并可替代从普遍认同并广泛使用的 Unix C Shell(csh) 衍生出来的 tcsh。qtcsh提供的命令shell可以通过 Grid Engine软件透明地将指定应用程序的执行分布到适当且负荷较低的主机上。

###------------------------------------------------------------------------------
  qacct -j job_id   #查看指定作业的执行信息,不加job_id将显示所有作业信息
  qconf -sul  #前已配置的 ACL 列表
  qconf -sprjl    #显示项目列表
  qconf -sm   #显示 Grid Engine 系统管理人员的列表
  qconf -so   #显示操作人员列表
  qconf -sq   #显示队列和队列属性
  qconf -sql  #显示队列列表

队列属性的详细说明:
    qname – 请求的队列名称。
    hostlist – 与队列相关联的主机和主机组的列表。
    processors – 该队列可以访问的多处理器系统的处理器。(除非必要,否则请不要修改这些参数值。)
    qtype – 队列中可以运行的作业类型。当前,作业类型可为批处理或交互式。
    slots – 可以和该队列同时执行的作业数。
    owner_list – 队列拥有者,在管理人员、操作员和拥有者中有介绍。
    user_lists – 用户访问权限列表中列在该参数下的用户或组标识符可以访问该队列。
    xuser_lists – 用户访问权限列表中列在该参数下的用户或组标识符不能访问该队列。
    project_lists – 列在该参数下的带有项目标识符的提交作业有权访问该队列。
    xproject_lists – 列在该参数下的带有项目标识符的提交作业不能访问该队列。
    complex_values – 根据提供给队列的特定属性定义集资源属性指定性能。
qconf -sel  #显示当前配置为执行主机的所有主机的名称列表
qconf -se hostname  #显示指定的执行主机的详细信息
qconf -sh   #显示具有管理权限的主机列表
qconf -ss   #显示提交主机列表
qconf -sc   #显示所配置的资源属性列表
qconf -sconf    #显示当前配置
qconf  -aprj    #添加一个新项目
qconf  -sprjl   #显示项目列表
qconf  -aq queue_name   #添加一个队列
qconf -ahgrp @host_group_name       #添加主机组,hostlist中主机列表间隔用空格
qconf -mconf        #编辑默认Shell【login_shells                 bash,sh,ksh,csh,tcsh】
qconf -aq       #显示默认队列模板

###-----------------------
qsub 参数
-cwd                     #从当前工作路径运行作业
-wd working_dir            #定义工作目录
-o  path                  #定义标准输出文件路径、文件名
-e  path                  #定义标准错误输出文件路径、文件名
-j y[es]|n[o]                #定义作业的标准错误输出是否写入到输出文件中
-now y[es]|n[o]                               #立即执行作业
-a date_time                #作业开始运行时间
-b y[es]|n[o]                #指定运行程序是二进制文件还是脚本文件,默认n
-m b|e|a|s|n              #定义邮件发规则。b:作业开始时发送。e:作业结束时发送。a:作业失败时发送 s:作业挂起时发送。n:不发送
-M user[@host]             #定义邮件地址
-l resource=value           #表明作业运行所需要的资源。【-l arch=solaris64,h_vmem=750M,permas=1】
-N job_name               #重命名作业名
-q queue_name             #定义作业运行队列
-S shell_path               #指定运行Shell环境
-P project_name             #定义项目名称,前提是存在该项目
-p priority                 #定义优先级,-1023 到 1024 , 默认值0
-r y[es]|n[o]               #定义作业失败后是否重新运行
-v variable                 #定义环境变量
-dl date_time               #定义作业到期时间,在作业到期时间之前,作业的优先级会逐步提高,直到管理员指定的最高级别。
-hold_jid wc_job_list       #定义作业的依赖关系,制定作业需要在指定作业正常结束后才可以开始运行。wc_job_list 可以是JOB ID或作业名
-hold_jid_ad wc_job_list    #定义阵列作业的依赖关系
-R y[es]|n[o]               #定义是否为作业保留资源
-hard                       #定义作业被调度的硬性要求
上一篇 下一篇

猜你喜欢

热点阅读