作业调度系统 曙光信息产业(北京)有限公司.

Slides:



Advertisements
Similar presentations
高校教师、高级项目经理 任铄 QQ : 第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能 1.5 OS 结构设计.
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
中科院昆明动物研究所培训 云南昆明 售前工程师:张希韬 TEL:
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
集群作业管理系统简介 报告人:罗正平 导 师:肖炳甲研究员.
项目四 组建跨地区网络 授课教师:肖颖.
Oracle数据库 Oracle 子程序.
宁波材料所高性能计算集群普通用户培训 曙光公司.
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
第二讲 搭建Java Web开发环境 主讲人:孙娜
曙光信息产业(北京)有限公司 技术支持中心 戴荣 2007年12月
第二天 计算机基础技能培训 (一)linux基础知识
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
从现在做起 彻底改变你自己 Sanjay Mirchandani EMC公司高级副总裁、首席信息官.
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
曙光集群简明使用手册 技术支持中心.
SVN服务器的搭建(Windows) 柳峰
管理信息结构SMI.
网络常用常用命令 课件制作人:谢希仁.
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
曙光信息产业有限公司 技术支持中心 赵崇山 PBS作业调度系统 曙光信息产业有限公司 技术支持中心 赵崇山
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
北京师范大学并行计算实验室 作业调度.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
逆向工程-汇编语言
作业调度系统常用命令.
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
任务1-3 使用Dreamweaver创建ASP网页
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
SOA – Experiment 2: Query Classification Web Service
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
河南理工大学HPC集群使用培训 Henan Polytechnic University 现代教育技术中心 高性能计算平台.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
第四章 团队音乐会序幕: 团队协作平台的快速创建
姚金宇 MIT SCHEME 使用说明 姚金宇
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Visual Basic程序设计 第13章 访问数据库
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
临界区问题的硬件指令解决方案 (Synchronization Hardware)
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Presentation transcript:

作业调度系统 曙光信息产业(北京)有限公司

内 容 任务管理系统概述 作业调度系统 PBS作业调度系统 作业调度系统的使用

机群使用中的问题 机群结构的松散性(单一系统映象) 节点类型的差别 (CPU类型、内存大小、数量等) 系统资源丰富(节点/CPU) 用户不同类型的作业(串行/并行) 用户可以使用资源的限制

任务管理系统的功能 单一系统映象 系统资源整合 多用户的管理 用户权限的管理 机群松散的结构的整合 异构系统的整合 用户提交的任务的统一安排,避免冲突 用户权限的管理 非授权用户的控制

任务管理系统的简史

任务管理系统的分类 基于进程级别的调度 基于作业级别的调度 由机群中的操作系统或者运行时Runtime内部支持,对运行的作业进行监控;以实现机群内的透明调度、以及自动优化进程的分配和平衡负载 基于作业级别的调度 这种方式由独立的作业管理系统实现。该系统通过专门的入口,接收用户提交的任务,送入相应的队列等待调度;并在适当的时机分配资源,为任务创建作业,将作业提入运行,在作业运行结束后完成收尾工作,并提供记帐功能。 管理员和用户还可以在机群中查询并预订符合要求的资源,,从而实现对作业和资源的全程交互控制。

任务管理系统的比较 管理实现级别 进程级 作业级 调度方式 透明,基于最小负载 可以基于网络拓扑/程序特性/负载/自定义策略调度 管理层次 低级,仅根据局部信息 高级,根据全局信息 负载均衡方式 支持动态负载均衡 支持静态负载均衡;如有checkpoint功能,可支持动态负载均衡 资源共享 仅能够共享硬件资源 可以共享硬件、软件和证书等资源 服务质量Qos 可能造成大作业饥饿,无Qos 只要策略适当,可以保证Qos 机群一致性的层次 入口不一致,仍为多机系统;可以提供存储一致性 提供单一系统入口和存储一致性 对用户权限、资源和作业的高级管理策略 无法实现 能够很好地实现 系统结构规模可扩展 如果规模过大,会遇到前述的O(㎡)的通讯问题,难以扩展 通讯量与系统规模成线形放缩,可以很好的扩展 对作业类型的限制 如前述,不适合于系统调用较多的程序(如I/O密集型) 对程序类型无限制

内 容 任务管理系统概述 作业调度系统 PBS作业调度系统 作业调度系统的使用

作业管理的组成 资源管理器:管理集群的硬件资源及认证信息等 队列管理器:管理当前所有已提交但还未完成的作业 调度器:为作业分配资源

作业管理系统的结构

作业特性比较 系统特性 SGE LSF OPEN PBS PBS PRO 支持异构平台 Unix & NT,多硬件 仅Unix ,多硬件 用户操作接口 API/GUI/CLI/WEB,管理复杂 API/GUI/CLI/WEB,管理方便 API/GUI/CLI,功能少 API/GUI/CLI/WEB ,管理方便 支持DRMAA 支持 不支持 支持POSIX批处理API标准 源代码开放 开放 不开放 付费后开放 用户文档支持 非常详细 较简单 详细 支持批处理作业 支持交互式作业 支持海量作业组 支持并行作业 支持PVM/MPI 支持,功能强 支持,功能强大 支持,功能弱

内 容 任务管理系统概述 作业调度系统 PBS作业调度系统 作业调度系统的使用

PBS作业调度系统 PBS最初由NASA的Ames研究中心开发,为了提供一个能满足异构计算网络需要的软件包。它力求提供对批处理的初始化和调度执行的控制,允许作业在不同主机间的路由。

PBS的技术特色 力求控制对批处理的初始化和调度执行,允许作业在不同主机间的路由。 独立的调度模块存有各个可用的排队作业、运行作业和系统资源使用信息,并且允许系统管理员定义资源和每个作业可使用的数量。 在作业调度策略上,PBS提供了默认的公平共享和独占FIFO调度策略,还提供了TCL、BACL、C三种过程语言和调度类,与定义了一些调度需要的函数和完整的API,方便实现新的调度策略。 提供文件传送,File Stage-in 和Stage-out。 满足POSIX1003.2d 标准,支持作业依赖,和完整的安全认证。 提供用户映射功能,使PBS 能用于用户不一致的系统中。

PBS的结构

PBS 的组成 服务器:pbs_server 调度器:pbs_sched 执行器:pbs_mom 命令行:用户脚本,管理命令等

PBS 的基本原理

PBS 的优缺点 支持系统级检查点功能(需底层操作系统支持) 很好的大规模扩展性 独立的调度模块** 支持作业依赖 符合POSIX 1003.2d 标准 -只支持Unix类操作系统 -多集群协作功能有限 -不支持用户级检查点功能

术 语 节点(node) 一个单一的操作系统映像,一个统一的虚拟内存映像一个个或多个cpu,一个或多个IP地址的计算机系统被称之为一个节点。通常执行主机(execution host)也被称之为节点。 节点属性 队列、服务器和节点都有与自己相关的属性,这些属性提供控制信息。与节点相关的属性有:状态、类型、虚拟处理器的个数、作业列表(本节点被分配给的作业)以及节点的特性。…… 节点特性 为了提供一组节点的分配的方法,零个或者多个特性被赋给每个节点。这个特性不过是一串对于PBS没有含义的字母和数字的组合(第一个字符必须是字母)。

PBS 安装 解压源文件包 [root@node1 /public]# tar -zxvf openpbs-2.3.16.tar.gz 编译设置 [root@node1 /public/OpenPBS_2.3.16]#./configure --enable-gui --set-server_home=/var/spool/pbs --enable-docs --x-libraries=/usr/X11R6/lib64 其中,--x-libraries=/usr/X11R6/lib64是在X86_64 (AMD64或EM64T)上安装时,需要指明系统64位库的位置。 编译安装 [root@node1 /public/OpenPBS_2.3.16]# make [root@node1 /public/OpenPBS_2.3.16]# make install

PBS在机群上安装 由于节点系统相同,因而可以用如下SHELL script在node2~node8上安装; #!/bin/bash for i in `seq 2 8` do echo “node$i ----------------------------------“ rsh node$i “cd /public/openpbs; make install” echo “-------------------------------------------“ echo “” done

服务进程配置和启动文件 系统配置文件/etc/pbs.conf 系统启动脚本 /etc/init.d/openpbs #!/bin/sh pbs_home=/var/spool/pbs 指定系统的pbs的设置的目录位置 pbs_exec=/usr/local 指定pbs可执行程序的目录位置 start_server=1 start_sched=1 当为1是表示守护进程启动,0为守护进程不启动 start_mom=1 系统启动脚本 /etc/init.d/openpbs Server的系统启动脚本 /etc/init.d/pbs_server Scheduler系统启动脚本 /etc/init.d/pbs_sched Mom系统启动脚本 /etc/init.d/pbs_mom

Server端设置 初始化server: (第一次运行或者重新配置) /usr/local/sbin/pbs_server –t create Server配置目录 /var/spool/pbs/server_priv/ 节点属性声明:/var/spool/pbs/nodes node2 R220A np=2 node3 R220A np=2 node4 dualcore np=4 node5 dualcore np=4 node6 R4280A np=4 node7 R4280A np=4

mom端设置 mom配置目录: /var/spool/pbs/mom_priv/ mom配置文件: /var/spool/pbs/mom_priv/config # MOM server configuration file # if more than one value, separate it by comma. ## rule is defined by the name $ideal_load 1.5 $max_load 2 ## host allowed to connect to Mom server on unprivileged port $restricted *. ## log event : # 0x1ff log all events + debug events # 0x0ff just all events $logevent 0x0ff ## host allowed to connect to mom server on privileged port $clienthost node1 ## alarm if the script hang or take very long time to execute $prologalarm 30

Server端的动态设置 PBS要能正常运行还需要通过qmgr命令的server进行配置,设置一些属性。输入qmgr命令进入配置交互命令。下面是让PBS可以正常运行的一些步骤。 创建队列 create queue 队列名 queue_type = Excuttion 打开和启动队列 set queue 队列名 enable=t, started=t 打开调度 set server scheduling=t 设置默认队列 set server default_queue=队列名

qmgr命令(管理员使用) 输入qmgr进入交互式模式后即可输入各种命令 qmgr动作: 对象类型和操作符 动作 对象类型 对象名 属性 操作符 值(,属性 操作符 值)…… create 创建一个对象 delete 删除一个对象 set 设置对象的属性 unset 除去对象的属性 print 打印对象的属性 list 列出对象的属性 server 服务器 = queue 队列 += node 节点 -=

PBS队列设置 导入server配置文件: [root@node1 root]# qmgr < queue.conf 输出配置文件: [root@node1 root]# qmgr –c “print server” > queue.conf 配置文件例子: create queue default set queue default queue_type = execution set queue default max_running = 20 set queue default enabled = True set queue default started = True set server scheduling = True set server max_user_run = 20 set server default_queue = default set server query_other_jobs = True

Scheduler调度行为配置 Scheduler的行为由配置目录下的sched_priv/sched_config文件进行控制 Sort_by关键字控制调度算法可以选择的选项为 no_sort ,shortest_job_first,longest_job_first ,smallest_memory_first,largest_memory_first,high_priority_first,low_priority_first,multi_sort,fair_share,large_walltime_first,short_walltime_first 修改这个文件后重新启动scheduler即可。

内 容 任务管理系统概述 作业调度系统 PBS作业调度系统 作业调度系统的使用

PBS的使用步骤 准备:编写描述改作业的脚本,包括作业名,需要的资源等。 提交:使用qsub命令将该作业提交给PBS服务器 排队:服务器将该任务排入适当的队列 调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。 执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。 查询和调整:当作业在运行时,用户可以使用qstat进行状态查询。用户发现作业提交错误时,可以使用qdel删除正在运行的作业。 查看结果:使用文本编辑软件vi或者系统命令cat, less等查看输出及错误信息显示。

PBS 的基本命令 [zhaocs@node1 ~]$ qsub <PBS作业脚本> 在PBS系统中,用户使用qsub 命令提交用户程序。用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行: [zhaocs@node1 ~]$ qsub <PBS作业脚本>

qsub运行参数 运 行 参 数 说 明 -a <作业开始运行的时间> 向PBS系统指定作业运行的开始时间。 说 明 -a <作业开始运行的时间> 向PBS系统指定作业运行的开始时间。 作业运行时间格式为: [[[[CC]YY]MM]DD]hhmm[.SS] -A <用户名> 使用不同的用户来提交作业,缺省使用当前用户名 -o <标准输出文件的路径> -e <标准错误输出的路径> 该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准错误输出放在用户qsub命令提交作业的目录下。 标准错误输出:<作业名>.o<作业号> 标准错误输出:<作业名>.e<作业号> 路径使用如下格式标准: [<节点名>:]<路径名> -N <作业名> 指定提交的作业名 -q <目标队列> 指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名或者是目标节点上的队列。如果目标队列是一个路由队列,那么服务器可能把作业路由到新的队列中。如果该参数没有指定,命令qsub会把作业脚本提交到缺省的队列中。 -l <申请资源列表> 该参数指定作业脚本申请的PBS系统资源列表。 申请资源列表使用如下格式: <资源名>[=[<数量>]][,资源名[=[<数量>]], …..] 例如作业希望申请在双路节点上申请5个CPU资源的情况, 则可以在脚本中如下: #PBS –l nodes=2:ppn=2+:ppn=1

PBS 作业脚本 注释,以“#”开头 PBS指令,以“#PBS”开头 SHELL命令 #PBS –N vasp.Hg #PBS –l nodes=8:ppn=2 echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIR mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

PBS的环境变量 变 量 名 说 明 登陆SHELL继承来的变量 说 明 登陆SHELL继承来的变量 包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ。 $PBS_O_HOST qsub提交的节点名称 $PBS_O_QUEUE qsub提交的作业的最初队列名称 $PBS_O_WORKDIR qsub提交的作业的绝对路径 $PBS_JOBID 作业被PBS系统指定的作业号 $PBS_JOBNAME 用户指定的作业名,可以在作业提交的时候用qsub –N <作业名>指定,或者在PBS脚本中加入#PBS –N <作业名>。 $PBS_NODEFILE PBS系统指定的作业运行的节点名。该变量在并行机和机群中使用。当在PBS脚本中用#PBS –l nodes=2:ppn=2指定程序运行的节点数时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指定的作业运行的节点名。比如: #PBS –l nodes=2:ppn=2 mpirun –np 4 –machinefile $PBS_NODEFILE <程序名> $PBS_QUEUE PBS脚本在执行时的队列名

PBS 作业脚本 注释,以“#”开头 PBS指令,以“#PBS”开头 SHELL命令 #PBS –N vasp.Hg #PBS –l nodes=8:ppn=2 #PBS –q @node1 echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIR mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp 注释,以“#”开头 PBS指令,以“#PBS”开头 SHELL命令

PBS 作业脚本举例 # 这是一个串行作业脚本的例子 #PBS –N Loop.out #PBS –l nodes=1:ppn=1 cd /public/home/zhaocs/test/ ./a.out > $HOME/result/a.result # 这是一个并行作业脚本的例子 #PBS –N vasp.Hg #PBS –l nodes=8:ppn=2 #PBS –q @node1 echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIR mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

一个复杂的PBS作业脚本 #!/bin/bash #PBS -N jobname #PBS -l nodes=4:ppn=2 cat `echo $PBS_NODEFILE` > $HOME/$PBS_JOBID.nodes for node in `cat $HOME/$PBS_JOBID.nodes` do rsh $node mkdir /tmp/$PBS_JOBID rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/ done cd /tmp/$PBS_JOBID mpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vasp cp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/ rsh $node rm -rf /tmp/$PBS_JOBID rm $HOME/$PBS_JOBID.nodes

查询和取消作业 [dawning@node1 ~]$ qstat @node1 Job id Name User Time Use S Queue ---------------- ---------------- ---------------- -------- - ----- 93.node1 test.pbs zhaocs 0 R default 95.node1 vasp.Hg vasp 0 E default 111.node1 structure amber 0 Q default [zhaocs@node1 ~]$ qdel 93.node1

查询作业运行的位置 [zhaocs@node1 ~]$ pbsnode -a [zhaocs@node1 ~]$ qstat –f [zhaocs@node1 ~]$ qstat -r

错误处理 作业提交后处于排队状态 没有可用的节点,也就是节点资源被其他作业使用; 作业提交后异常结束 脚本文件使用的是windows格式 节点处于忙状态; 调度器失效; 指定的节点失效,或者节点上的mom失效 作业提交后异常结束 脚本文件使用的是windows格式 脚本中使用一些命令路径问题 脚本退出但是作业没有退出 用户使用的文件的权限问题 处理方法的原则是查看作业的标准输入和标准错误输出的结果

错误处理(续) 如果环境配置错误,可能导致作业反复在等待状态和运行状态转换,可以通过“qdel 作业号”将该作业删除再重新配置环境。 可能出现作业显示为运行状态,但是已经没有活动的进程,可通过“qsig –SIGNULL 作业号”通知server作业已经退出。 作业的输出无法传出,可能是以下原因造成: 目标主机不被信任,并且用户没有.rhost文件 指定了一个错误的路径名 指定的目标目录不可写 目标主机的用户.cshrc执行时产生了输出。 执行主机的PWS的spool目录没有使用正确的权限,这个目录必须使用1777权限(drwxrwxrwx)。

谢谢!