集群SGE作业调度系统
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一样。
集群SGE作业调度系统的更多相关文章
- 16、SGE作业调度系统的简介
转载:http://www.zilhua.com/2222.html http://gridscheduler.sourceforge.net/htmlman/ SGE作业调度系统的简介 一.常见的几 ...
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
- Kubernetes集群搭建之系统初始化配置篇
Kubernetes的几种部署方式 1. minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...
- Hadoop学习之路(十二)分布式集群中HDFS系统的各种角色
NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...
- Hadoop(五)分布式集群中HDFS系统的各种角色
NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...
- kubernetes集群EFK日志系统搭建
日志收集架构 Kubernetes 集群本身不提供日志收集的解决方案,一般来说有主要的3种方案来做日志收集: 在节点上运行一个 agent 来收集日志 在 Pod 中包含一个 sidecar 容器来收 ...
- Kafka集群---分布式消息系统
概念: kafka是一种消息中间件 作用: 解耦.冗余.提高扩展性.缓冲 保证顺序.灵活.削峰填谷 异步通信 kafla角色 producer: 生产者,负责发布消息 consumer: 消费者,负责 ...
- python包之drmaa:集群任务管理
目录 1. drmaa简介 2. 安装和配置 3. 示例 3.1 开始和终止会话 3.2 运行工作 3.3 等待工作 3.4 控制工作 3.5 查询工作状态 4. 应用 4.1 写一个简单应用 4.2 ...
- Sun Grid Engine (SGE)大型集群作业调度系统
Oracle Grid Engine 作业调度系统的简介(目前为止我用过PBS和SGE) SGE作业调度系统学习笔记 SGE作业调度 USE of Sun Grid Engine(SGE) 待续~
随机推荐
- [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建
技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...
- csp总结 (差点爆零的总结)
T1,iterator忘了怎么写了,想了很久都想不出来有什么可以替代,只好O(n^2): T2,不会,只会打暴力 T3,自以为是正解,写了很久大概3h,却一直过不了大样例,大样例输出全是0: T4,不 ...
- Java设计模式——模板设计模式
模板设计模式 1.模板模式简介 模板模式(Template ):模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑 ...
- [源码解析] PyTorch 分布式(1)------历史和概述
[源码解析] PyTorch 分布式(1)------历史和概述 目录 [源码解析] PyTorch 分布式(1)------历史和概述 0x00 摘要 0x01 PyTorch分布式的历史 1.1 ...
- Zabbix 4.4 离线安装 使用mariadb的踩坑,无法停止服务
先分享一个网站,之前就没注意过有这个网站,不知道是啥时候开放的.里面分享了N多zabbix的模板. https://share.zabbix.com/ 报错如下 Unsupported charset ...
- cloudstack部署
参考文档 https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37 cloudstack的rpm包下载地址 http://d ...
- properties 文件解析
1.提供properties文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/future?useUn ...
- List<String>转List<Integer>
List<Integer> intList = strList.stream().map(Integer::parseInt).collect(Collectors.toList()); ...
- [LINUX] Arch Linux 硬盘拷贝式装系统+新增 home 分区
目录 前言 1. 实操 1.1 整个磁盘拷贝 1.2 创建 home 分区 1.3 修改 fstab 实现自动挂载 2. 涉及到的知识点 2.1 fstab 2.2 dd 命令 2.3 fdisk 命 ...
- 编译静态库的方式使用spdlog和fmt
前言 spdlog++库,而且支持header only方式,但header only的使用方式会造成编译时长增加,所以这里简单描述一下,其编译静态库的方式. 又因为spdlog还依赖另一个开源库fm ...