zoukankan      html  css  js  c++  java
  • 集群的管理pbs

     管理集群计算机最重要的工作不是象PC机那样启动,关闭计算机这么简单,也不需要做磁盘整理。笔者认为管理集群计算机最重要的是资源的组合划分,任务的分配,节点性能的监控和负载。每个节点的资源(包括内存,磁盘,处理器,网络)通过网络消息传递组合起来,这有点象操作系统将处理器,内存,磁盘,各种卡通过数据总线组合起来变成我们概念中单一的计算机。另外一个很重要的工作就是对节点性能的监控,这和PC机上操作系统监控硬件有点类似。这里简单介绍一下管理工具C3的使用方法。

    1  集群命令行工具C3

    前面安装OSCAR时候我们已经详细介绍过了C3这个工具的一些情况,C3主要包含以下几个命令行:

    • cexec: 调用linux的命令工具,可以在所有节点上运行任何linux的命令

    • cget: 从集群的任何节点获取文件

    • ckill: 在指定的节点上杀死一个特定的用户进程

    • cpush: 分布文件和目录到集群中

    • cpushimage: 使用systemimage工具更新所有节点上的镜像

    • crm: 从所有节点删除文件或者目录

    • cshutdown: 关闭或者重新启动所有节点

    • cnum: 返回节点范围数值,依赖于节点基本名

    • cname: 返回节点名字,带范围数字

    • clist: 返回配置文件中所有节点信息

    cexec命令可以让所有节点同时并行运行一个命令,像操作一台机器一样。同时一个串行的cexec命令也在其中,它是用作确定命令运行和调试用的,为了避免误用它名字是cesecs而不是cexec。

        在所以节点的/etc/c3.conf文件中定义了一些节点信息,比如一个64节点的集群配置内容为:

    cluster cartman {

    cartman-head:node0 #head node

    node[1-64] #compute nodes

    }

    第一行是集群名字cartman,后面该集群的配置用{}包括。第二行显示这个集群的服务器节点是node0机器,后面是所有客户机节点范围。再如配置文件:

    cluster kenny {

    node0 #head node

    dead placeholder #change command line to 1 indexing

    node[1-32] #first set of nodes

    exclude 30 #offline nodes in the range

    exclude [5-10]

    node100 #single node definition

    dead node101 #offline node

    dead node102

    node103

    }

    其中有两种offline状态:exclude和dead,exclude指定离线的机器,dead指定无效的机器。如果有特殊的范围写成:1-5,9,11代表1,2,3,4,5,9,11。在运行命令行的时候可以指定机器范围,也可以默认使用配上,比如要在所有节点上运行ls –l 命令可以

    $cexec ls –l

    又比如在1-5节点上运行ls –l则命令是:

    $cexec 1-5 ls –l

    其它的节点范围指定也可以使用,比如1-5,9,11下面的命令比上面命令多显示9,11两个节点。

    $cexec 1-5,9,11 ls –l

    当然你也可以指定集群的名字,在集群的所有节点上面运行命令:

    $cexec cartman: ls -l

    如果要在指定名字的集群中启动某些节点上的命令则其格式是

    $cexec cartman:1-5 ls –l

    C3可以运行linux中的大部分命令,它使用ssh来连接节点在上面运行命令。有了C3我们可以很方便地控制我们的集群,无需每台机器都telnet然后运行我们的命令。

    使用PBS调度你的作业

       搭建完成你的OSCAR集群后,维护工作除了管理监控以外很重要的一点是如何调度你的作业。一个大型的集群系统可能有上千个节点,会同时运行多个作业,完成不同的任务,如果不作很好的规划很有可能造成任务之间相互争夺集群的资源,最后即没有充分利用资源也无法按时完成。在我们安装的集群上有个叫PBS的工具就是专门调度集群任务的工具。

       PBS(Portable Batch System)是由NASA开发的灵活的批处理系统。它被用于集群系统、超级计算机和大规模并行系统。PBS还有除了调度作业以外还能够管理集群的资源,如果对它作个简单总结,PBS主要有如下特征:

    l         易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。

    l         移植性:符合POSIX 1003.2标准,可以用于shell和批处理等各种环境。

    l         适配性:可以适配与各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。

    l         灵活性:支持交互和批处理作业。

        PBS其实可以灵活地使用,它即可以被用来在单一节点的或大型集群上控制任务,也可以在多个系统之间均衡负载,还可以在多个节点的计算机上运行并行或串行的任务。以上这些在实际应用中也可以混合。

    PBS主要分成三个部分:

    l         PBS server:它运行在集群的服务器节点上,由它来控制事务并启动运行任务。

    l         maui scheduler:Maui调度程序根据资源管理器得到各个结点上的资源状况和系统的作业信息生成一个优先级列表。

    l         mom后台进程:每个节点上有一个mom后台进程,由这个进程真正启动和停止每个节点上的任务。

    PBS的几个主要部件位于每个节点的{$OSCAR_HOME}/sbin目录中,到该目录你可以找到

    Pbs_server是PBS的服务器,pbs_mom是mom后台进程,pbs_sched是调度程序。一般启动linux以后pbs_server服务器和pbs_mom后台守候进程就起来了,你使用ps命令可以查看:

    #ps –ef | grep pbs_

        pbs_server有帮助文档可以查man pbs_server,仔细看过以后你会发现它有很多配置选项,比如指定默认节点的,也就是如果pbs找不到你指定的节点或者没有指定节点则使用,则使用default_node参数指定。可以使用pbs工具qmgr来改变server的设置:

     

    Qmgr:s s default_node=big (s s表示set server)指定了default_node的值

        使用PBS主要是以命令方式来定你的作业,它的命令的详细参考在linux里面可以使用man帮助查看,如果你要查看PBS关于资源限制的资料可以浏览pbs_resources帮助,如果想查看PBS服务器的配置可以浏览pbs_server_attribute帮助。所有的命令可以在{$OSCAR_HOME}/pbs/bin中找到,下面列出了几个PBS常用的命令及其功能:

    qsub:此命令是向PBS提交你的任务。

    Qdel:此命令是删除PBSd的作业。

    qstat [-n]:显示当前作业状态和关联的节点。

    pbsnodes [-a]:显示节点的状态。

    Pbsdsh:分布式处理发射台。

        在这里举个简单的例子让读者有点感性的认识,下面的提交作业是在节点X上起Y个VP中运行my_script.sh脚本,注意提交任务一定要有个运行任务的脚本。

    $ qsub -N my_jobname -e my_stderr.txt -o my_stdout.txt -q workq -l

    nodes=X:ppn=Y:all,walltime=1:00:00 my_script.sh

    -N选项指定任务名字,-e指定标准错误输出文件,-o指定标准输出文件,-q 是队列名字,-l是后面是指定资源限制,这里指定了节点,VP个数,最大运行时间。节点定位需要详细介绍一下,nodes参数的等号后面是以“+”号相连的节点定义,每个定义之间的属性以“:”分开。一般是 node number:node name (略写):ppn= (VP个数):all (或者resource)。举个例子,比如2:red:ppn=2表示在节点名字有red的2台机器上,每个机器启动2个VP来运行任务。VP是虚拟的处理器,默认情况下一个CPU启动一个VP,但是你可以启动多个VP在一个CPU上面,PBS是以VP为处理单位的而不是真实的硬件CPU。

        上面的命令提交一个任务以后,我们看它运行的脚本my_script.sh:

    #!/bin/sh

    echo Launchnode is ‘hostname‘

    pbsdsh /path/to/my_executable

    第一行将在输出文件打印出机器名字,让管理员知道是哪台计算机运行此脚本。后面是抛出运行的程序。

  • 相关阅读:
    指针+[][]T 类型
    linux适用小工具-tmux
    wrk+lua进行压力测试
    brew更换为国内源
    k8s证书更新
    ssh隧道
    kubeadm安装集群系列(kubeadm 1.15.1)
    harbor清理存储
    第十周课程总结
    第九周课程总结&第七次实验报告
  • 原文地址:https://www.cnblogs.com/cy163/p/1184178.html
Copyright © 2011-2022 走看看