zoukankan      html  css  js  c++  java
  • 16、SGE作业调度系统的简介

    转载:http://www.zilhua.com/2222.html

    http://gridscheduler.sourceforge.net/htmlman/

    SGE作业调度系统的简介

    一、常见的几种作业调度系统

    Condor是一个资源管理和作业调度系统,是来自Wisconsin-Madison大学的研究项目。充分利用工作站的空闲时间是Condor的最显著特征。Condor管理的机群由网络中的工作站组成,工作站可以自愿加入或退出。Condor监测网络中所有工作站的状态,一旦某台计算机被认为空闲,便把它纳入到资源池中。在资源池中的工作站被用来执行作业。

    Sun网格引擎(Sun Grid ,SGE)是一种来自于SUN Microsystem的分布式资源管理和调度系统,它用来在基于UNIX的计算环境中优化软件和硬件资源的使用。SGE能用于查找资源池内的闲置资源并利用这些资源;它同样用于通常的一些事务中,例如管理和调度作业到可用资源中。

    负载共享设施(Load Sharing Facility,LSF)是由加拿大平台计算公司研制与开发的,由Toronto大学开发的Utopia系统发展而来。在使用范围上,LSF不仅用于科学计算,也用于企业的事务处理。功能上,除了一般的作业管理特性外,它还在负载平衡、系统容错、检查点操作、进程迁移等方面作了很好的努力,并力图使之实用化。

    便携式批处理系统(Portable Batch System,PBS)是一个资源管理和调度系统,它接受批处理作业(具有控制属性的shell脚本),保留和保护作业直到它开始运行。因为一个批处理作业是一个无需用户干预的,在计算机系统后台运行的程序,在批处理作业运行过程中,用户无法实时地得到作业运行结果,所以PBS只能在作业执行后,将作业结果返回给提交者。目前,PBS包含开源免费的OpenPBS、商业付费的PBS Pro、Torque三种分支。

    二、SGE 常见指令

    1. 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 #定义作业到期时间,在作业到期时间之前,作业的优先级会逐步提高,直到管理员指定的最高级别。

    举个栗子:

    qsub –cwd  -l  h=compute-1-1, h_vmem=5G,p=4  -q all.q work.sh

    其中:

    -cwd 在当前工作目录;

    -l 资源申请/限制,用逗号隔开

    -q 申请队列

    关于资源限制域,可以通过如下指令查看:qconf -sc

    下面列举一些常见的关键字:

    #name shortcut type relop default urgency define
    cpu cpu DOUBLE >= 0 0 cpu nums
    h_vmem h_vmem MEMORY <= 0 0 The per-job maximum memory limit in bytes.
    hostname h HOST == NONE 0 host name
    mem_free mf MEMORY <= 1g 0 MEM_NEEDED is the amount of memory (in megabytes M, or gigabytes G) that your job will require
    num_proc p INT <= 1 0 process number
    qname q RESTRING == NONE 0 quene name
    s_data s_data MEMORY <= 0 0 The per-process maximum memory limit in bytes.
    tmpdir tmp RESTRING == NONE 0 tmp dir
    virtual_free vf MEMORY <= 1g 0 The per-job maximum memory limit, dynamically
    1. qstat 查看任务状态

    qstat -u username  查看某个用户的任务

    qstat -u * 查看所有用户的任务

    qstat -j jobID 查看某个任务的详细信息

    qstat -f 查看用户自己在每个节点的任务情况

    qstat -q all.q -u * 查看某个队列下所有任务

    qstat -q all.q@node1 -u * 查看某个队列的某一节点下所有任务

    1.  qdel 删除任务

    qdel [ -f ]  [ -help ] [-u wc_user_list] [ wc_job_range_list ] [ -t task_id_range ]

    qdel job_id 删除job

    qdel -u usrname 删除用户的所有任务

    1. qhold 挂起任务

    qhold job_id

    qhold -u * 挂起所有用户的任务

    1. qalter更改任务属性

    qalter [ options ] wc_job_range_list [ -- [ command_args ]]

    指令和qsub差不多,不多介绍了。

  • 相关阅读:
    python 基础2.5 循环中continue与breake用法
    python 基础 2.4 while 循环
    python 基础 2.3 for 循环
    python 基础 2.2 if流程控制(二)
    python 基础 2.1 if 流程控制(一)
    python 基础 1.6 python 帮助信息及数据类型间相互转换
    python 基础 1.5 python数据类型(四)--字典常用方法示例
    Tornado Web 框架
    LinkCode 第k个排列
    LeetCode 46. Permutations
  • 原文地址:https://www.cnblogs.com/renping/p/7441494.html
Copyright © 2011-2022 走看看