0. 一些基本概念

  • 计算机集群:高性能集群(High Performance Computing,简称HPC)是一组松散或紧密连接在一起工作的计算机。由于这些计算机协同工作,在许多方面它们可以被视为单个系统。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。与网格计算机不同,计算机集群将每个节点设置为执行相同的任务,由软件控制和调度。

关于集群与分布式的区别有一段话总结得很好:集群是个物理形态,分布式是个工作方式。只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,C/S架构也可以叫分布式。集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

  • 节点是集群中的控制器。它通过专有的管理集群网络连接到集群中的其他节点。每个集群均包含节点,也就是管理数据和执行维护任务的计算单元。

1. 常见的几种资源管理和调度系统

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

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

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

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

2. SGE常见指令

2.1 提交任务

qsub参数:

$ qsub -help
SGE 8.1.9
usage: qsub [options]
[-a date_time] request a start time
[-ac context_list] add context variable(s)
[-Ap fname] add a new parallel environment from file
[-astnode node_shares_list] add sharetree node(s)
[-at thread_name] add/start qmaster thread
[-A account_string] account string in accounting record
[-b y[es]|n[o]] handle command as binary
[-binding [env|pe|set] exp|lin|str] binds job to processor cores
[-c ckpt_selector] define type of checkpointing for job
[-cwd] use current working directory
[-C directive_prefix] define command prefix for job script
[-dc simple_context_list] delete context variable(s)
[-dul listname_list] delete userset list(s) completely
[-e path_list] specify standard error stream path(s)
[-h] place user hold on job
[-hard] consider following requests "hard"
[-he y[es]|n[o]] enable/disable hard error handling
[-help] print this help
[-hold_jid job_identifier_list] define jobnet interdependencies
[-hold_jid_ad job_identifier_list] define jobnet array interdependencies
[-i file_list] specify standard input stream file(s)
[-j y[es]|n[o]] merge stdout and stderr stream of job
[-js job_share] share tree or functional job share
[-jsv jsv_url] job submission verification script to be used
[-l resource_list] request the given resources
[-M mail_list] notify these e-mail addresses
[-m mail_options] define mail notification events
[-masterq wc_queue_list] bind master task to queue(s)
[-mattr obj_nm attr_nm val obj_id_list] modify an attribute (or element in a sublist) of an object
[-N name] specify job name
[-notify] notify job before killing/suspending it
[-now y[es]|n[o]] start job immediately or not at all
[-o path_list] specify standard output stream path(s)
[-ot tickets] set jobs override tickets
[-P project_name] set jobs project
[-p priority] define jobs relative priority
[-pe wc_pe_name slot_range] request slot range for parallel jobs
[-q wc_queue_list] bind job to queue(s)
[-r y[es]|n[o]] define job as (not) restartable
[-sc context_list] set job context (replaces old context)
[-shell y[es]|n[o]] start command with or without wrapping <loginshell> -c
[-soft] consider following requests as soft
[-srqs [rqs_list]] show resource quota set(s)
[-sync y[es]|n[o]] wait for job to end and return exit code
[-S path_list] command interpreter to be used
[-t task_id_range] create a job-array with these tasks
[-v variable_list] export these environment variables
[-verify] do not submit, just verify
[-V] export all environment variables
[-wd working_directory] use working_directory
[-@ file] read commandline input from file
[{command|-} [command_args]]

最常用参数:

- cwd #使用当前工作目录
- binding #将作业绑定到处理器核心
- p #定义工作的相对优先级,-1023 到 1024 , 默认值0
- P #定义项目名称,前提是存在该项目
- q #将作业绑定到队列
- l #请求给定的计算资,如-l arch=solaris64,h_vmem=750M,permas=1

示例qsub -cwd -l vf=2g,p=1 -q queuename.q -P projectname -binding linear:2 test.sh

qsub
-cwd
-l vf=2g,p=1 #vf内存简写,p线程数简写;
#资源可分开写,可写全称,单位可大小写,如-l virtual_free=2G -l num_proc=1。
#关于资源限制域可通过 qconf -sc命令查看
-q queueName.q
-P ProjectName
-binding linear:2 #处理器核心数 linear
test.sh

2.2 查看任务

qstat命令

qstat -j jobid #某个任务详细信息
qstat -u username #某用户的任务
qstat -u \* #所有用户任务
qstat -q all.q -u \* #查看某个队列下所有任务
qstat -q all.q@node1 -u \* #查看某个队列的某一节点下所有任务
qstat -f #查看用户自己在每个节点的任务情况,没啥用

任务的状态:

qw #等待状态
hqw #任务挂起等待中,待依赖的任务完成后执行
Eqw #投递任务出错
r #任务正在运行
s #暂时挂起
dr #节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失

2.3 删除任务

qdel命令

qdel jobid #可同时删除多个,如qdel jobid1 jodid2
qdel -u username #删除某用户所有任务

2.4 挂起/恢复任务

qhold命令:挂起qw的任务

qhold jobid
qhold -u \* qrls jobid #恢复

qmod命令:挂起running中的任务

qmod -sj jobid
qmod -usj jobid #恢复

如果未提交到SGE系统,直接运行的命令用kill -STOP pid 挂起,用kill -CONT pid恢复。

2.5 更改任务属性

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

参数和qsub一样。

Ref:https://www.bbsmax.com/A/MAzADlxyd9/

集群SGE作业调度系统的更多相关文章

  1. 16、SGE作业调度系统的简介

    转载:http://www.zilhua.com/2222.html http://gridscheduler.sourceforge.net/htmlman/ SGE作业调度系统的简介 一.常见的几 ...

  2. ELK+Kafka集群日志分析系统

    ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...

  3. Kubernetes集群搭建之系统初始化配置篇

    Kubernetes的几种部署方式 1. minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...

  4. Hadoop学习之路(十二)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

  5. Hadoop(五)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

  6. kubernetes集群EFK日志系统搭建

    日志收集架构 Kubernetes 集群本身不提供日志收集的解决方案,一般来说有主要的3种方案来做日志收集: 在节点上运行一个 agent 来收集日志 在 Pod 中包含一个 sidecar 容器来收 ...

  7. Kafka集群---分布式消息系统

    概念: kafka是一种消息中间件 作用: 解耦.冗余.提高扩展性.缓冲 保证顺序.灵活.削峰填谷 异步通信 kafla角色 producer: 生产者,负责发布消息 consumer: 消费者,负责 ...

  8. python包之drmaa:集群任务管理

    目录 1. drmaa简介 2. 安装和配置 3. 示例 3.1 开始和终止会话 3.2 运行工作 3.3 等待工作 3.4 控制工作 3.5 查询工作状态 4. 应用 4.1 写一个简单应用 4.2 ...

  9. Sun Grid Engine (SGE)大型集群作业调度系统

    Oracle Grid Engine 作业调度系统的简介(目前为止我用过PBS和SGE) SGE作业调度系统学习笔记 SGE作业调度 USE of Sun Grid Engine(SGE) 待续~

随机推荐

  1. [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建

    技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...

  2. csp总结 (差点爆零的总结)

    T1,iterator忘了怎么写了,想了很久都想不出来有什么可以替代,只好O(n^2): T2,不会,只会打暴力 T3,自以为是正解,写了很久大概3h,却一直过不了大样例,大样例输出全是0: T4,不 ...

  3. Java设计模式——模板设计模式

    模板设计模式 1.模板模式简介 模板模式(Template ):模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑 ...

  4. [源码解析] PyTorch 分布式(1)------历史和概述

    [源码解析] PyTorch 分布式(1)------历史和概述 目录 [源码解析] PyTorch 分布式(1)------历史和概述 0x00 摘要 0x01 PyTorch分布式的历史 1.1 ...

  5. Zabbix 4.4 离线安装 使用mariadb的踩坑,无法停止服务

    先分享一个网站,之前就没注意过有这个网站,不知道是啥时候开放的.里面分享了N多zabbix的模板. https://share.zabbix.com/ 报错如下 Unsupported charset ...

  6. cloudstack部署

    参考文档 https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37 cloudstack的rpm包下载地址 http://d ...

  7. properties 文件解析

    1.提供properties文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/future?useUn ...

  8. List<String>转List<Integer>

    List<Integer> intList = strList.stream().map(Integer::parseInt).collect(Collectors.toList()); ...

  9. [LINUX] Arch Linux 硬盘拷贝式装系统+新增 home 分区

    目录 前言 1. 实操 1.1 整个磁盘拷贝 1.2 创建 home 分区 1.3 修改 fstab 实现自动挂载 2. 涉及到的知识点 2.1 fstab 2.2 dd 命令 2.3 fdisk 命 ...

  10. 编译静态库的方式使用spdlog和fmt

    前言 spdlog++库,而且支持header only方式,但header only的使用方式会造成编译时长增加,所以这里简单描述一下,其编译静态库的方式. 又因为spdlog还依赖另一个开源库fm ...