编辑: 笨蛋爱傻瓜悦 | 2019-12-21 |
以实现机群内的透明调度、以及自动优化进程的分配和平衡负载 基于作业级别的调度这种方式由独立的作业管理系统实现.
该系统通过专门的入口,接收用户提交的任务,送入相应的队列等待调度;
并在适当的时机分配资源,为任务创建作业,将作业提入运行,在作业运行结束后完成收尾工作,并提供记帐功能.管理员和用户还可以在机群中查询并预订符合要求的资源,,
从而实现对作业和资源的全程交互控制. 任务管理系统的比较 对程序类型无限制 如前述,不适合于系统调用较多的程序(如I/O密集型) 对作业类型的限制 通讯量与系统规模成线形放缩,可以很好的扩展 如果规模过大,会遇到前述的O(O)的通讯问题,难以扩展 系统结构规模可扩展 能够很好地实现 无法实现 对用户权限、资源和作业的高级管理策略 提供单一系统入口和存储一致性 入口不一致,仍为多机系统;
可以提供存储一致性 机群一致性的层次 只要策略适当,可以保证Qos 可能造成大作业饥饿,无Qos 服务质量Qos 可以共享硬件、软件和证书等资源 仅能够共享硬件资源 资源共享 支持静态负载均衡;
如有checkpoint功能,可支持动态负载均衡 支持动态负载均衡 负载均衡方式 高级,根据全局信息 低级,仅根据局部信息 管理层次 可以基于网络拓扑/程序特性/负载/自定义策略调度 透明,基于最小负载 调度方式 作业级 进程级 管理实现级别 内容任务管理系统概述作业调度系统PBS作业调度系统作业调度系统的使用 作业管理的组成 资源管理器:管理集群的硬件资源及认证信息等队列管理器:管理当前所有已提交但还未完成的作业调度器:为作业分配资源 作业管理系统的结构 作业特性比较 支持 支持 不支持 支持 支持POSIX批处理API标准 支持,功能强 支持,功能弱 支持,功能强大 支持,功能强 支持PVM/MPI 支持 支持 支持 支持 支持并行作业 支持 不支持 支持 支持 支持海量作业组 支持 不支持 支持 支持 支持交互式作业 支持 支持 支持 支持 支持批处理作业 详细 较简单 非常详细 非常详细 用户文档支持 付费后开放 开放 不开放 开放 源代码开放 支持 支持 不支持 支持 支持DRMAA API/GUI/CLI/WEB ,管理方便 API/GUI/CLI,功能少 API/GUI/CLI/WEB,管理方便 API/GUI/CLI/WEB,管理复杂 用户操作接口 仅Unix ,多硬件 仅Unix ,多硬件 Unix &
NT,多硬件 Unix &
NT,多硬件 支持异构平台 PBS PRO OPEN PBS LSF SGE 系统特性 内容任务管理系统概述作业调度系统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 #!/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 Ct createServer配置目录/var/spool/pbs/server_priv/节点属性声明:/var/spool/pbs/nodesnode2 R220A np=2node3 R220A np=2node4 dualcore np=4node5 dualcore np=4node6 R4280A np=4node7 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可以正常运行的一些步骤. set queue 队列名 enable=t, started=t 打开和启动队列 set server default_queue=队列名 设置默认队列 set server scheduling=t 打开调度 create queue 队列名 queue_type = Excuttion 创建队列 qmgr命令(管理员使用) 输入qmgr进入交互式模式后即可输入各种命令 qmgr动作:对象类型和操作符 动作 对象类型 对象名 属性 操作符 值(,属性 操作符 值)…… 列出对象的属性 除去对象的属性 删除一个对象 list unset delete 设置对象的属性 set 打印对象的属性 print 创建一个对象 create -= += = 队列 queue 节点 node 服务器 server PBS队列设置 导入server配置文件:[root@node1 root]# qmgr <
queue.conf输出配置文件:[root@node1 root]# qmgr Cc print server >
queue.conf配置文件例子: create queue defaultset queue default queue_type = executionset queue default max_running = 20set queue default enabled = Trueset queue default started = Trueset server scheduling = Trueset server max_user_run = 20set 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 的基本命令 在PBS系统中,用户使用qsub 命令提交用户程序.用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行: [zhaocs@node1 ~]$ qsub qsub运行参数 该参数指定作业脚本申请的PBS系统资源列表.申请资源列表使用如下格式:资源名>
[=[]][,资源名[=[例如作业希望申请在双路节点上申请5个CPU资源的情况,则可以在脚本中如下:#PBS Cl nodes=2:ppn=2+:ppn=1 -l 指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名或者是目标节点上的队列.如果目标队列是一个路由队列,那么服务器可能把作业路由到新的队列中.如果该参数没有指定,命令qsub会把作业脚本提交到缺省的队列中. -q 指定提交的作业名 -N 该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准错误输出放在用户qsub命令提交作业的目录下.标准错误输出:.o标准错误输出:.e路径使用如下格式标准: [:] -o -e 使用不同的用户来提交作业,缺省使用当前用户名 -A 向PBS系统指定作业运行的开始时间.作业运行时间格式为:CC]YY]MM]DD]hhmm[.SS] -a 说明运行参数PBS 作业脚本 注释,以 # ........