
作业调度系统ppt课件.ppt
42页作业调度系统作业调度系统曙光信息产业(北京)有限公司内内 容容•任务管理系统概述•作业调度系统•PBS作业调度系统•作业调度系统的使用机群使用中的问题机群使用中的问题•机群结构的松散性(单一系统映象)•节点类型的差别 (CPU类型、内存大小、数量等)•系统资源丰富(节点/CPU)•用户不同类型的作业(串行/并行)•用户可以使用资源的限制任务管理系统的功能任务管理系统的功能•单一系统映象–机群松散的结构的整合•系统资源整合–异构系统的整合•多用户的管理–用户提交的任务的统一安排,避免冲突•用户权限的管理–非授权用户的控制任务管理系统的简史任务管理系统的简史任务管理系统的分类任务管理系统的分类•基于进程级别的调度–由机群中的操作系统或者运行时Runtime内部支持,对运行的作业进行监控;以实现机群内的透明调度、以及自动优化进程的分配和平衡负载 •基于作业级别的调度–这种方式由独立的作业管理系统实现该系统通过专门的入口,接收用户提交的任务,送入相应的队列等待调度;并在适当的时机分配资源,为任务创建作业,将作业提入运行,在作业运行结束后完成收尾工作,并提供记帐功能–管理员和用户还可以在机群中查询并预订符合要求的资源,,从而实现对作业和资源的全程交互控制。
任务管理系统的比较任务管理系统的比较管理管理实现级别 进程程级作作业级调度方式透明,基于最小负载可以基于网络拓扑/程序特性/负载/自定义策略调度管理层次 低级,仅根据局部信息 高级,根据全局信息负载均衡方式支持动态负载均衡支持静态负载均衡;如有checkpoint功能,可支持动态负载均衡 资源共享仅能够共享硬件资源可以共享硬件、软件和证书等资源服务质量Qos可能造成大作业饥饿,无Qos只要策略适当,可以保证Qos机群一致性的层次入口不一致,仍为多机系统;可以提供存储一致性 提供单一系统入口和存储一致性对用户权限、资源和作业的高级管理策略无法实现能够很好地实现系统结构规模可扩展 如果规模过大,会遇到前述的O(㎡)的通讯问题,难以扩展 通讯量与系统规模成线形放缩,可以很好的扩展对作业类型的限制如前述,不适合于系统调用较多的程序(如I/O密集型) 对程序类型无限制内内 容容•任务管理系统概述•作业调度系统•PBS作业调度系统•作业调度系统的使用作业管理的组成作业管理的组成•资源管理器:管理集群的硬件资源及认证信息等•队列管理器:管理当前所有已提交但还未完成的作业•调度器:为作业分配资源作业管理系统的结构作业管理系统的结构作业特性比较作业特性比较系统特性 SGE LSF OPEN PBS PBS PRO支持异构平台Unix & NT,多硬件Unix & NT,多硬件仅Unix ,多硬件仅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 #!/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/nodesnode2 R220A np=2node3 R220A np=2node4 dualcore np=4node5 dualcore np=4node6 R4280A np=4node7 R4280A np=4mom端设置端设置•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_loadideal_load 1.5 1.5 $ $max_loadmax_load 2 2 ## host allowed to connect to Mom server on unprivileged port $restricted *.$restricted *. ## log event : # 0x1ff log all events + debug events # 0x0ff just all events $ $logeventlogevent 0x0ff 0x0ff ## host allowed to connect to mom server on privileged port $ $clienthostclienthost node1 node1 ## alarm if the script hang or take very long time to execute $ $prologalarmprologalarm 30 30 Server端的动态设置端的动态设置•PBS要能正常运行还需要通过qmgr命令的server进行配置,设置一些属性。
输入qmgr命令进入配置交互命令下面是让PBS可以正常运行的一些步骤创建队列创建队列create queue create queue 队列名队列名 queue_typequeue_type = = ExcuttionExcuttion打开和启动队列打开和启动队列set queue set queue 队列名队列名 enable=t, started=tenable=t, started=t打开调度打开调度set server scheduling=tset server scheduling=t设置默认队列设置默认队列set server set server default_queuedefault_queue= =队列名队列名qmgr命令(管理员使用)命令(管理员使用)•输入qmgr进入交互式模式后即可输入各种命令 •qmgr动作:•对象类型和操作符 动作动作 对象类型对象类型 对象名对象名 属性属性 操作符操作符 值(,属性值(,属性 操作符操作符 值)值)……createcreate创建一个对象创建一个对象deletedelete删除一个对象删除一个对象setset设置对象的属性设置对象的属性unsetunset除去对象的属性除去对象的属性printprint打印对象的属性打印对象的属性listlist列出对象的属性列出对象的属性serverserver服务器服务器==queuequeue队列队列+=+=nodenode节点节点-=-=PBS队列设置队列设置•导入server配置文件:[root@node1 root]# qmgr < queue.conf•输出配置文件:[root@node1 root]# qmgr –c “print server” > queue.conf•配置文件例子: create queue defaultcreate queue defaultset queue default set queue default queue_typequeue_type = execution = executionset queue default set queue default max_runningmax_running = 20 = 20set queue default enabled = Trueset queue default enabled = Trueset queue default started = Trueset queue default started = Trueset server scheduling = Trueset server scheduling = Trueset server set server max_user_runmax_user_run = 20 = 20set server set server default_queuedefault_queue = default = default set server set server query_other_jobsquery_other_jobs = True = TrueScheduler调度行为配置调度行为配置•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的使用步骤的使用步骤1.准备:编写描述改作业的脚本,包括作业名,需要的资源等2.提交:使用qsub命令将该作业提交给PBS服务器3.排队:服务器将该任务排入适当的队列4.调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度5.执行:当条件满足时,作业被发给相应的执行服务器执行程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户6.查询和调整:当作业在运行时,用户可以使用qstat进行状态查询用户发现作业提交错误时,可以使用qdel删除正在运行的作业7.查看结果:使用文本编辑软件vi或者系统命令cat, less等查看输出及错误信息显示PBS 的基本命令的基本命令在PBS系统中,用户使用qsub 命令提交用户程序用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行:[zhaocs@node1 ~]$ qsub
作业运行时间格式为: [[[[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=1PBS 作业脚本作业脚本•注释,以“#”开头•PBS指令,以“#PBS”开头•SHELL命令#PBS #PBS –N N vasp.Hgvasp.Hg#PBS #PBS –l nodes=8:ppn=2l nodes=8:ppn=2echo "This jobs is "$PBS_JOBID@$PBS_QUEUE echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cdcd $PBS_O_WORKDIR $PBS_O_WORKDIRmpirunmpirun - -npnp 16 - 16 -machinefilemachinefile $PBS_NODEFILE ./ $PBS_NODEFILE ./vaspvaspPBS的环境变量的环境变量变变 量量 名名说说 明明登陆SHELL继承来的变量包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ。
PBS_O_HOSTqsub提交的节点名称$PBS_O_QUEUEqsub提交的作业的最初队列名称$PBS_O_WORKDIRqsub提交的作业的绝对路径$PBS_JOBID作业被PBS系统指定的作业号$PBS_JOBNAME用户指定的作业名,可以在作业提交的时候用qsub –N <作业名>指定,或者在PBS脚本中加入#PBS –N <作业名>PBS_NODEFILEPBS系统指定的作业运行的节点名该变量在并行机和机群中使用当在PBS脚本中用#PBS –l nodes=2:ppn=2指定程序运行的节点数时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指定的作业运行的节点名比如:#PBS –l nodes=2:ppn=2mpirun –np 4 –machinefile $PBS_NODEFILE <程序名>$PBS_QUEUEPBS脚本在执行时的队列名PBS 作业脚本作业脚本•注释,以“#”开头•PBS指令,以“#PBS”开头•SHELL命令#PBS –N vasp.Hg#PBS –l nodes=8:ppn=2#PBS –q @node1echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIRmpirun -np 16 -machinefile $PBS_NODEFILE ./vaspPBS 作业脚本举例作业脚本举例# 这是一个串行作业脚本的例子这是一个串行作业脚本的例子#PBS –N Loop.out#PBS –l nodes=1:ppn=1cd /public/home/zhaocs/test/./a.out > $HOME/result/a.result# 这是一个并行作业脚本的例子这是一个并行作业脚本的例子#PBS –N vasp.Hg#PBS –l nodes=8:ppn=2#PBS –q @node1echo "This jobs is "$PBS_JOBID@$PBS_QUEUE cd $PBS_O_WORKDIRmpirun -np 16 -machinefile $PBS_NODEFILE ./vasp一个复杂的一个复杂的PBS作业脚本作业脚本#!/bin/bash#PBS -N jobname#PBS -l nodes=4:ppn=2cat `echo $PBS_NODEFILE` > $HOME/$PBS_JOBID.nodesfor node in `cat $HOME/$PBS_JOBID.nodes` do rsh $node mkdir /tmp/$PBS_JOBID rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/ donecd /tmp/$PBS_JOBIDmpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vaspcp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/for node in `cat $HOME/$PBS_JOBID.nodes` do rsh $node rm -rf /tmp/$PBS_JOBID donerm $HOME/$PBS_JOBID.nodes查询和取消作业查询和取消作业[dawning@node1 ~]$ qstat @node1Job id Name User Time Use S Queue---------------- ---------------- ---------------- -------- - -----93.node1 test.pbs zhaocs 0 R default95.node1 vasp.Hg vasp 0 E default111.node1 structure amber 0 Q default[zhaocs@node1 ~]$ qdel 93.node1查询作业运行的位置查询作业运行的位置[zhaocs@node1 ~]$ pbsnode -a[zhaocs@node1 ~]$ qstat –f[zhaocs@node1 ~]$ qstat -r错误处理错误处理•作业提交后处于排队状态 没有可用的节点,也就是节点资源被其他作业使用; 节点处于忙状态; 调度器失效; 指定的节点失效,或者节点上的mom失效•作业提交后异常结束 脚本文件使用的是windows格式 脚本中使用一些命令路径问题 脚本退出但是作业没有退出 用户使用的文件的权限问题•处理方法的原则是查看作业的标准输入和标准错误输出的结果错误处理(续)错误处理(续)•如果环境配置错误,可能导致作业反复在等待状态和运行状态转换,可以通过“qdel 作业号”将该作业删除再重新配置环境。
•可能出现作业显示为运行状态,但是已经没有活动的进程,可通过“qsig –SIGNULL 作业号”通知server作业已经退出•作业的输出无法传出,可能是以下原因造成:–目标主机不被信任,并且用户没有.rhost文件–指定了一个错误的路径名–指定的目标目录不可写–目标主机的用户.cshrc执行时产生了输出–执行主机的PWS的spool目录没有使用正确的权限,这个目录必须使用1777权限(drwxrwxrwx) 谢谢!。
