关于

概述

景行资源管理与调度软件(JH Unischeduler)作为一款支持多种类型的应用软件的通用中间件集成应用,其作用范围涵盖机械行业设计软件、制造业CAD/CAE设计软件、石油勘探分析软件、模拟仿真软件、科学计算软件和大数据分析软件等。这些不同类型的应用软件可以同时被集成到由景行资源管理与调度软件管理的计算集群中,从而实现了多领域、多学科和多类型应用资源的充分共享。
为了使有限的资源得到高效和充分的利用,景行资源管理与调度软件内置了多种高效的调度管理策略,包括先来先服务、用户/用户组资源配额管理、基于队列的优先级设置、资源公平共享调度、独占式作业调度、抢占式作业调度等。
景行资源管理与调度软件基于以上调度策略,会将各类应用软件的每次执行实例作为一个作业来进行调度和管理,并为管理员和用户提供更为方便的作业状态监控和友好的使用界面。

体系架构

景行资源管理与调度软件作为云计算基础架构产品的支柱,与以此为基石的景行应用门户软件、景行安全控制软件等,均是以安全可靠,体验至上为原则服务用户,通过与景行资源分析软件的集成,可以为用户呈现详细的资源使用情况、灵活的作业调度和统计分析报表功能。

技术架构

景行资源管理与调度软件是一款完全自主研发的云计算资源管理调度程序。它使用jhds模块收集系统和作业进程的资源使用信息,并使用jobagent、jobexecutor和scheduler模块实际控制和执行作业。
在此基础上,景行资源管理与调度软件扩展了资源管理模块,并创建了多个云计算资源的负载探测器来检测节点资源负载情况,景行资源管理与调度软件拥有统一的调度模块以实现先进的作业管理调度策略,如公平共享调度策略、抢占式作业调度策略和独占式作业调度策略等,同时还提供了资源和许可证的管理与调度。这些模块是完全独立运行的系统进程。

功能简介

云计算资源管理: 景行资源管理与调度软件能够将网络上多台异构类型的计算机资源整合为一个集群应用服务平台。应用程序资源的调用不再只局限于个人工作站,也不需要为了满足个性化的资源需求而手动修改应用程序,只需要编辑一些简单的应用脚本和命令就能够使用平台上的计算资源。景行资源管理与调度软件还可以根据节点的负载条件和应用程序的资源需求,从整个集群应用服务平台中选择最合适的计算节点。

执行作业: 对于景行资源管理与调度软件管理的应用服务系统而言,远程和本机执行作业的行为是一致的,即使是最复杂的终端交互控制作业,也如同是在本机执行。当作业获得所需要的软硬件资源,或当应用服务平台的系统负载较轻时,景行资源管理与调度软件会根据预定的策略自动执行作业,并可以根据资源负载情况,完全控制作业。如:挂起作业和恢复作业运行。景行资源管理与调度软件能够以交互式作业或批处理作业的形式执行串行或并行的应用程序。当作业在一组资源负载较轻或空闲的资源节点上执行时,执行效率会大幅提高。

管理应用: 对于由景行资源管理与调度软件管理的应用服务系统,用户可以远程运行本地工作站上没有的,甚至因为本地工作站配置低而无法完成安装或运行的大型应用软件,例如:CAD、CAE和CFD等大型应用软件。用户的作业实际是运行在集群后台的高端服务器上,其执行过程和结果完全透明地展现在用户的桌面机上。

控制系统资源的访问: 系统管理员可以轻松地控制应用服务系统中资源的使用,例如:

  • 对用户提交作业的权限控制以及作业提交后的执行节点控制。
  • 用户或用户组可同时执行作业的数量限制,以及可使用资源的种类限制。
  • 提交到指定队列的作业的资源限制。
  • 每个计算单元可执行作业的时间窗口。
  • 在某种负载条件下指定的计算节点可以接收或挂起某些低优先级的作业。
  • 可对用户提交的作业进行内存的限制等。

资源和作业记账: 景行资源管理与调度软件提供了资源和作业记账的机制。这些信息可以帮助管理员分析资源的使用情况和作业的执行情况,以及系统在一天或者一周内的负载情况,同时帮助管理员确定是否有资源过载情况发生,为合理化系统配置或扩展和升级系统提供详尽的数据支持。

作业记账: 记录了作业运行的大量信息,所有这些数据都被存储在一个作业记账文件中。如:

  • 提交节点和执行节点。
  • 提交、派发、执行作业和作业的结束时间。
  • 作业执行时占用资源的消耗。
  • CPU时间、作业排队时间和运行时间等。

应用: 绝大多数的应用都可以通过景行资源管理与调度软件的接口被启用,不需要直接与之发生交互,也不需要为了使用景行资源管理与调度软件而刻意的修改程序。目前,景行资源管理与调度软件可支持大多数的Linux、CentOS或者Windows的命令和第三方应用程序。

容错: 一旦有计算资源请求,景行资源管理与调度软件会通过内置高效的调度策略寻找可用的计算资源,并保证计算资源的请求被及时的派发执行。在应用服务系统中,只要还有一台服务器在运行,景行资源管理与调度软件就能够继续接收计算资源请求。如果计算资源请求失败,则会主动把该请求重新派发到另一台可满足资源需求的服务器上执行。景行资源管理与调度软件将整个应用服务系统的状态保存在文件数据库中,只要该事务日志文件可访问,景行资源管理与调度软件就能保证执行所有的计算资源请求,并可为该事务日志文件设置镜像备份,以保证主文件服务器停止工作时,可根据镜像的事务日志文件继续执行作业的操作,为整个集群应用服务系统提供执行作业的容错能力。

异构系统的支持: 景行资源管理与调度软件是连接不同操作系统的中心枢纽,通用的架构使其能够支持多种类型的操作系统(如:Linux、CentOS和Windows),还可支持这几种操作系统之间的相互操作。

并行处理: 景行资源管理与调度软件支持MPI(Message Passing Interface)。它既是集群资源的分配者也是管理者,并可为每个并行作业寻找最佳的节点。

调度策略: 景行资源管理与调度软件提供了快速高效的调度策略,保证了受其管理的应用服务系统正常运行。用户可以根据不同的需求使用不同的策略,例如,用户可以设置队列级的公平共享调度策略,控制和管理应用资源的需求冲突。景行资源管理与调度软件还内置了许多其他队列级的调度策略,如最基本的先来先服务、抢占式和独占式策略。

资源预留: 是指对某个作业或队列强制预留资源。资源预留保证了正在运行的作业有足够的资源(通过对资源提前占位,可以很好的解决作业运行过程中因请求资源的动态变化而不够的问题)。

作业数组: 作业数组延伸了作业的概念,作业从单个输入文件、单例执行的应用程序延伸为多个并行文件、多例执行的应用程序。使用景行资源管理与调度软件的作业数组功能,可以允许用户提交单个数组作业,而该数组作业可以使用不同的数据参数来多次执行同一应用程序。

共享资源: 共享资源是指由景行资源管理与调度软件管理的集群中所有节点上的可用资源,这些资源可以在节点组之间共享。如应用软件的浮动许可证就是一个典型的可共享资源,集群中的所有节点都可以通过自动获取到的浮动许可证来执行该软件。景行资源管理与调度软件保证了在作业派发到各执行节点前获得有效的许可证后执行作业,从而使得该浮动许可证资源在各执行节点间得到合理化的应用。

并行作业的处理器预留: 在同一个景行资源管理与调度软件管理的集群中执行并行和普通应用程序时,因为普通作业只需要一个CPU而并行作业需要等待多个空闲的CPU,所以并行作业所需要的CPU会被普通作业先占用。并行作业处理器的预留功能,允许并行作业在排队期间将所需的空闲处理器(作业槽slots)预留一段时间而不被其他的普通作业使用。

Job Starter: 每一个景行资源管理与调度软件队列都可以配置一个Job Starter。Job Starter是一个可执行脚本或者是可执行程序,主要用来创建作业执行的环境。通过JobStarter,景行资源管理与调度软件管理员可以自定义作业执行的环境。例如:

  • 配置作业的输入/输出缓存和重定向。
  • 配置执行如fluent和cfx仿真类作业的运行环境。

可配置作业控制的方式: 可通过景行资源管理与调度软件的作业控制功能,修改作业在集群系统中的运行状态。通常情况下,作业先是进入PEND状态,然后进入RUN状态,作业执行完成后显示为DONE状态。有时会在作业的生命周期内,被系统挂起进入SSUSP状态,或者是被用户挂起而进入USUSP状态。景行资源管理与调度软件给管理员提供了配置控制作业时所触发的一系列动作,当作业状态改变时,这些自定义的触发动作将会被执行。

命令行介绍

jsub

用户可以使用jsub命令提交作业,如果没有指定其他选项,那么作业就会提交到默认队列中。

概要

jsub [-h] [-V] [-x] [-H] [-I] [-IX] [-Is] [-djm] [-L login_shell]
[-P project_name] [-R res_req] [-q queue_name]
[-app application_name]
[-m “host_name[+[pref_level]] | host_group[+[pref_level]]…”]
[-n min_processors[,max_processors]] [-J job_name] [-Jd job_desc]
[-i in_file] [-o out_file] [-e err_file]
[-E pre_exec_command[argument…]]
[-Ep post_exec_command[argument…]]
[-cwd current_working_directory]
[-gpgpu “num [type=type1,type2…] [gmem=gmemsize] [mig=gsize]”]
[-r | rn] [-M mem_limit] [-W run_limit] [-We limit]
[-hosts “num [hselect=hselect_string]”] [-port num] [-mf file]
[-aps priority] [-f [host:]local_file operator [remote_file]]
[-command command [command …]] [-command command [command…]]

选项

  • -h:显示此帮助信息。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -x:指定节点以独占模式运行作业。
  • -H:提交一个暂时不执行的作业。
  • -I:提交一个交互式作业。
  • -IX:提交一个带X11转发功能的交互式作业。
  • -Is:提交一个服务模式的交互式作业。
  • -djm:提交一个分布式作业。
  • -L login_shell:指定shell登录并执行作业,支持的shells有:sh、bash、csh和tcsh。
  • -P project name:指定提交作业的项目名称。
  • -R res_req:指定提交作业特定的资源需求信息。
  • -q queue_name:指定提交作业的队列。
  • -app application_name:提交作业到指定的应用程序。
  • -m “host_name[+[pref_level]] | host_group[+[pref_level]]…”:指定作业可选择的执行节点或者节点组。
  • -n min_processors[,max_processors]:指定处理器的最小和最大数量。
  • -J job_name:指定提交的作业名称。
  • -Jd job_desc:指定作业的描述信息或指定作业数组。
  • -i in_file:从指定文件获取作业的标准输入,可指定环境变量。
  • -o out_file:从指定文件获取作业的标准输出,可指定环境变量。
  • -e err_file:从指定的作业获取标准错误输出,可指定环境变量。
  • -E pre_exec_command[argument…]:作业执行前需要运行pre-exec。
  • -Ep post_exec_command[argument…]:作业执行结束后需要运行post-exec。
  • -cwd current_working_directory:指定作业的工作目录,可指定环境变量。
  • -gpgpu:为作业指定GPU卡或MIG的类型和数量以及需要预留的GPU显存。
  • -r:指定作业可以重新运行。
  • -rn:指定作业忽略重新运行队列上的配置。
  • -M mem_limit:指定内存限制,以MB为单位。
  • -W run_limit:指定作业的运行时间限制,以分钟为单位。
  • -We limit:指定作业的预估运行时间,以分钟为单位。
  • -hosts “num [hselect=hselect_string]”:指定hosts number和hselect_string,用于host分配资源hselect_string由num@hostgroup或host组成,用逗号隔开。
  • -port num:指定作业的端口号。
  • -mf file:为作业指定使用机器配置文件。
  • -aps priority:指定作业优先级。
  • -f [host:]local_file operator[remote_file]:将本地文件或目录从I/O节点传输到作业执行节点的缓存目录。支持的操作符有:> < < > > <
  • -command command:指定作业命令行参数或脚本。

命令示例

  • 示例1
    提交一个作业到指定节点host1,并指定作业运行队列为short。
$ jsub -m host1 -q short my_job
  • 示例2
    提交一个作业并指定运行节点,其中 host1 是最适合运行作业的节点,其次是host2,最后是 host3,"+"增加的数值越高,其节点的优先级就越高。
$ jsub -m "host1+2 host2+1 host3" my_job
  • 示例3
    提交一个作业并指定特定的资源需求,如果 type==NTX64 节点内存大于50MB,作业将派发到 type==NTX64,如果 type==LINUX64 节点内存大于 100MB,作业将派发到type==LINUX64,若这两个条件都不满足,作业将不被派发。
$ jsub -R "select[((type==NTX64 && mem > 50)||(type==LINUX64&& mem> 100))]" my_job
  • 示例4
    提交一个作业并指定资源预留数量mem为50MB,swap为100MB。
$ jsub -R "rusage[mem=50&swap=100]" my_job
  • 示例5
    提交一个作业并指定运行作业最少需要 4 个 CPU 数,并且只能在一个节点上运行该作业。
$ jsub -n 4 -R "span[hosts=1]" my_job
  • 示例6
    提交一个作业并指定运行作业最少需要 4 个 CPU 数,并且每个节点只能为该作业提供 2 个 CPU。
$ jsub -n 4 -R "span[ptile=2]" my_job
  • 示例7
    提交一个作业并指定运行作业需要的 CPU 最大数和最小数。
$ jsub -n 2,4 my_job
  • 示例8
    提交一个禁止调度到 host1 上运行的作业。
$ jsub -m ~host1 my_job
  • 示例9
    提交一个作业,并指定将该作业的运行信息输出保存为文件output.sh,保存路径为该作业提交用户的家目录。
$ jsub -o ~/output.sh my_job
  • 示例10
    在作业提交参数"-i/-o/-e/-cwd"中可指定路径环境变量,设置环境变量in=/apps/dir_input和out=/apps/dir_output(路径可自定义),提交含有指定路径变量的作业,在作业的详细信息中可以看到路径环境变量已经生效。
$ jsub -i /apps/dir_input/input.sh -o /apps/dir_output/output.log -e  
/apps/dir_output/error.log -cwd /apps/dir_output "hhh;sleep 10;hostname"
            
$ jjobs -l 59
Job <59>, Job Name <hhh;sleep 10;hostname>, User <user1>, Project  
<default>, Status <PSUSP>, Queue <normal>, Application  
<default>, APS Priority <5000>, Command <hhh;sleep 10;hostname>

Thu Mar 31 17:22:43: Submitted from host <host1>, CWD  
</apps/dir_output>, Input File <dir_input/input.sh>, Output File  
<dir_output/output.log>, Error File <dir_output/error.log>,  
Specified Hosts <host1>;
  • 示例11
    将提交节点的/files/abc.conf文件传输至执行节点的$JH_STAGE_DIR/目录下,再将abc.conf文件名修改为test.conf,再传回至提交节点的/tmp目录下。
$ jsub -f '/files/abc.conf > abc.conf' -f ' /tmp/ < test.conf' 'mv  
$JH_STAGE_DIR/abc.conf $JH_STAGE_DIR/test.conf'

注:$JH_STAGE_DIR 对应的值为管理门户->调度管理->高级配置功能页面表单中对应的配置项"Linux节点数据缓存目录(STAGE_TOP_DIR_LINUX)"的值(此处以/tmp/stagein为例)。

在此作业的执行节点文件系统下会按照以下规则产生作业文件临时目录:

/tmp/stagein/.${JOB_ID}.${JOB_INDEX}.stage

例如:

/tmp/stagein/.54.0.stage/xxx

jjobs

jjobs命令用于查看集群中的作业信息。

概要

jjobs [-h] [-V] [-w | -l] [-a] [-d] [-p] [-s] [-r][-A] [-m host_name]
[-q queue_name] [-app application_name] [-u user_name | -u all]
[-P project_name] [-o “field_name[:[-][output_width]] …
[delimiter=‘character’]”] [-J name_spec] [-Jd desc_spec][-env]
[-t] [-regexp] [jobId [jobId …]]

选项

  • -h:显示此帮助信息。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -w:以宽格式显示作业的详细信息。
  • -l:以长格式显示作业的详细信息。
  • -a:显示一定时间范围内所有状态的作业信息。
  • -d:显示一定时间范围内已经结束的作业信息。
  • -p:显示作业状态为pend的作业信息,并显示pend的原因。
  • -s:显示作业状态为suspend的作业信息,并显示suspend的原因。
  • -r:显示作业状态为run的作业信息。
  • -A:显示作业数组信息。
  • -m host_name:显示已经派发到指定节点上的作业信息。
  • -q queue_name:显示指定队列上运行作业信息。
  • -app application_name:只显示指定应用程序中的作业。
  • -u user_name | -u all:只显示指定用户/用户组提交的作业,关键字’all’指定所有用户。
  • -P project_name:显示指定项目的作业信息。
  • -o:显示自定义输出格式的作业信息。
  • -J name_spec:显示指定作业名称的作业或者作业数组的信息。
  • -Jd desc_spec:指定作业的描述信息。
  • -env:显示指定作业提交环境中的环境变量。
  • -t:显示指定DJM作业的任务信息。
  • -regexp:在筛选条件中使用正则表达式。

命令示例

  • 示例1
    显示用户user1的等待作业信息和作业的PENDING REASONS。
$ jjobs -p -u user1
  • 示例2
    显示节点host1上所有正在运行的作业信息。
$ jjobs -r -m host1
  • 示例3
    显示在队列short上且项目名称为my_project的所有用户的作业信息。
$ jjobs -q short -P my_project -u all
  • 示例4
    显示指定的作业详细信息。
$ jjobs -l job_id
  • 示例5
    按照指定格式输出作业信息(jobid宽度为4,stat宽度为10,并右对齐,分隔符为分号)。
$ jjobs -o "jobid:4 stat:-10 from_host delimiter=';'"

jcluster

jcluster命令可以显示景行资源管理与调度软件的版本号和集群名称,以及当前集群的管理节点。

概要

jcluster [-h] [-V] {init,join,clean} …

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • init:初始化集群master节点。
  • join:初始化非master集群并加入集群。
  • clean:清除已初始化的集群节点。

jversion

显示集群中景行资源管理与调度软件发行版本信息。

概要

jversion [-h] [-V]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。

jhosts

jhosts命令用于显示节点或节点组资源及负载信息。

概要

jhosts [-h] [-V] [-w | -l] [-R res_req] [-s [res_name [res_name …]]]
[host_name [host_name …]] {stat,attrib,remove} …

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -w:以宽格式形式显示详细信息。
  • -l:以长格式形式显示详细信息。
  • -R res_req:显示满足特定资源需求的节点信息。
  • -s [res_name [res_name…]]:查询节点上的共享资源信息,不能与其他参数一起使用。

子命令stat

显示节点负载信息。

概要

jhosts stat [-h] [-l] [-w] [-n] [host_name [host_name …]]

选项
  • -h:打印命令使用方法。
  • -l:以长格式形式显示详细信息。
  • -w:以宽格式形式显示详细信息。
  • -n:不换行显示主机信息。

子命令attrib

显示主机及其静态资源信息。

概要

jhosts attrib [-h] [-l] [-w] [host_name [host_name …]]

选项
  • -h:打印命令使用方法。
  • -l:以长格式形式显示详细信息。
  • -w:以宽格式形式显示详细信息。

子命令remove

从集群中删除处于宕机状态的主机信息。

概要

jhosts remove [-h] host_name [host_name …]

选项
  • host_name:将指定的节点信息从集群中删除。
  • -h:打印命令使用方法。

命令示例

  • 示例1
    显示节点host1的状态和作业资源信息。
$jhosts -l host1
  • 示例2
    显示集群中内存大于600MB的节点信息。
$jhosts -R "select[mem>600]"

jusers

jusers命令用于显示集群中用户和用户组作业相关信息,默认情况输出当前用户作业相关信息。

概要

jusers [-h] [-V] [user_name|user_group|all [user_name|user_group|all …]]

选项

  • all:显示集群中所有用户和用户组作业的相关信息。
  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。

命令示例

  • 示例1
    显示指定用户user1的作业信息。
$jusers user1
  • 示例2
    显示集群所有用户和用户组作业的相关信息。
$jusers all

jqueues

jqueues命令用于显示集群中队列的相关信息。默认显示集群中所有队列的队列名称、队列优先级、队列状态、作业槽信息和作业状态等信息。

概要

jqueues [-h] [-V] [-w | -l] [-m host_name] [-u user_name]
[queue_name [queue_name …]]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -w:以宽格式形式显示队列信息。
  • -l:以长格式形式显示队列的详细信息。
  • -m host_name:显示指定节点或节点组上能够运行作业的队列信息。
  • -u user_name:显示指定用户或用户组所属的队列信息。
  • queue_name:显示指定队列信息。

命令示例

  • 示例
    显示节点host1及用户user1所属的队列信息。
$jqueues -m host1 -u user1

jmod

jmod命令用于修改作业提交时指定的选项参数值。

概要

jmod [-h] [-V] [-L login_shell | -Ln] [-R res_req | -Rn]
[-q queue_name | -qn] [-m “host_name[+[pref_level]] | host_group[+[pref_level]]…” | -mn]
[-n min_processors[,max_processors] | -nn] [-J job_name]
[-Jd job_desc | -Jdn] [-gpgpu “num [type=type1,type2…]
[gmem=gmemsize] [mig=gsize]” | -gpgpun]
[-app application_name | -appn]
[-hosts “num [hselect=hselect_string]” | -hostsn]
[-port num | -portn] [-mf file | -mfn] [-aps priority | -apsn]
[-M mem_limit | -Mn] [-W run_limit | -Wn] [-P project_name]
[jobId | jobId[index_list]] [[jobId | jobId[index_list]]…]

选项

详细信息见 jsub 命令,注意:不能修改已经派发成功的作业的-o、-e选项的值。如果在选项后面跟一个’n’,表示重置相应的作业选项信息。

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -L login_shell:使用指定的登录shell修改执行环境。
  • -Ln:取消作业级登录shell命令的设置。
  • -R res_req:修改作业指定的资源要求。
  • -Rn:取消作业级资源需求命令的设置。
  • -q queue_name:修改作业指定的执行队列。
  • -qn:取消作业指定的执行队列。
  • -m “host_name[+[pref_level]] |
    host_group[+[pref_level]]…”:修改作业指定的执行主机。
  • -mn:取消作业指定的执行主机。
  • -n
    min_processors[,max_processors]:修改作业指定的最小和最大处理器数。
  • -nn:取消作业指定的最小和最大处理器数。
  • -J job_name:修改作业名称或修改作业数组。
  • -Jd job_desc:修改作业描述信息。
  • -Jdn:删除作业描述信息。
  • -gpgpu "num [type=type1,type2] [gmem=gmemsize] [mig=gsize]
    ":修改 GPU 请求。
  • -gpgpun:取消GPU请求。
  • -app application_name:修改作业指定的执行应用程序。
  • -appn:取消工作指定的执行申请。
  • -hosts “num [hselect=hselect_string]”:修改host num请求。
  • -hostsn:取消作业指定的host num请求。
  • -port num:修改端口请求。
  • -portn:取消端口请求。
  • -mf file:修改作业指定的机器文件。
  • -mfn:取消作业指定的机器文件。
  • -aps priority:修改作业aps优先级。
  • -apsn:取消作业指定的优先级。
  • -M mem_limit:修改内存限制,单位为MB。
  • -Mn:取消作业的内存限制。
  • -W run_limit:修改作业的运行时间限制,单位为分钟。runtime的格式是hours:minutes,-hours:minutes或者+hours:minutes。
  • -Wn:取消作业指定的运行时间限制。
  • -P project_name:修改作业的项目名称。

命令示例

  • 示例1
    修改指定作业的提交队列 test1。
$jmod -q test1 jobID
  • 示例2
    取消指定作业的提交队列。
$jmod -qn jobID
  • 示例3
    给指定作业的运行时间限制,增加50分钟的运行时间。
$jmod -W +50 jobID  $jmod -W +00:50 jobID
  • 示例4
    给指定作业的运行时间限制,减少2小时的运行时间。
$jmod -W -120 jobID$jmod -W -02:00 jobID

其他选项示例可以参考jsub进行使用。

jctrl

jctrl命令主要用于作业控制,比如kill作业或者停止一个作业等。

概要

jctrl [-h] [-V] {stop,resume,kill,bot,top,start,requeue,peek,clean}…

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。

子命令stop

使用 jctrl stop 命令可挂起作业。

概要

jctrl stop [-h] [-m host_name] [-q queue_name] [-u user_name | -u all]
[-J job_name] [-app application_name]
jobId | jobId[index_list] | 0 [jobId | jobId[index_list] | 0 …]

选项
  • -h:打印命令使用方法。
  • -m host_name:仅挂起分派到指定主机或主机组的作业。
  • -q queue_name:仅挂起指定队列中的作业。
  • -u user_name | -u all:仅暂停指定用户或用户组拥有的作业,如果指定了关键字 all,表示暂停所有用户的作业。
  • -J job_name:仅挂起具有指定作业名称的作业。
  • -app application_name:仅暂停指定应用程序中的作业。

子命令resume

使用 jctrl resume 命令可恢复挂起的作业。

概要

jctrl resume [-h] [-m host_name] [-q queue_name]
[-u user_name | -u all] [-J job_name]
[-app application_name]
jobId | jobId[index_list] | 0 [jobId | jobId[index_list] | 0 …]

选项
  • -h:打印命令使用方法。
  • -m host_name:恢复指定节点或者节点组上已被挂起的作业。
  • -q queue_name:恢复指定队列中已被挂起的作业。
  • -u user_name | -u all:恢复指定用户或者所有用户已被挂起的作业。
  • -J job_name:恢复已被挂起的指定作业名称的作业。
  • -app application_name:只恢复指定应用程序中的作业。

子命令kill

使用 jctrl kill 命令可发送特定信号停止一个作业。

概要

jctrl kill [-h] [-m host_name] [-q queue_name] [-u user_name | -u all]
[-J job_name] [-f] [-app application_name]
jobId | jobId[index_list] | 0 [jobId | jobId[index_list] | 0 …]

选项
  • -h:打印命令使用方法。
  • -m host_name:停止指定节点上的作业。
  • -q queue_name:停止指定队列上的作业。
  • -u user_name | -u all:停止指定用户提交的作业,若指定参数为all,表示终止所有用户未完成的作业。
  • -J job_name:停止指定作业名称的作业。
  • -f:强制从非调度程序系统中终止作业,而无需等待作业在操作系统中终止。
  • -app application_name:停止指定应用程序中的作业。

子命令bot

使用 jctrl bot 命令可将等待状态的单个或多个作业移动到队列尾部。

概要

jctrl bot [-h] [-c] [-p position] jobId | jobId[index] [jobId | jobId[index] …]

选项
  • -h:打印命令使用方法。
  • -c:可选,指定操作是集群级别。
  • -p position:可选,可以指定 position参数以指示将作业放置在用户或集群中的哪个位置,position是一个正整数,表示作业从用户或集群的末尾开始的目标位置。
命令示例
  • 示例
    同时对多个PEND状态的作业进行置底排序,-p2表示将等待作业置底排序到第2位。
[user1@host1 apps]$ jctrl bot -p 2 241 243 242  
Job <241> has been moved to position 2 from bottom  
Job <243> has been moved to position 2 from bottom  
Job <242> has been moved to position 2 from bottom  
[user1@host1 apps]$ jjobs  
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME ORDER  
237 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
238 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
239 user1 PEND normal host1 sleep 1000 Mar 30 15:40 1  
241 user1 PEND normal host1 sleep 1000 Mar 30 15:40 2  
243 user1 PEND normal host1 sleep 1000 Mar 30 15:40 3  
242 user1 PEND normal host1 sleep 1000 Mar 30 15:40 4  
240 user1 PEND normal host1 sleep 1000 Mar 30 15:40 5

子命令top

使用 jctrl top 命令可将等待状态的单个或多个作业移动到队列顶部。

概要

jctrl top [-h] [-c] [-p position] jobId | jobId[index] [jobId | jobId[index] …]

选项
  • -h:打印命令使用方法。
  • -c:可选,指定操作是集群级别。
  • -p position:可选,可以指定位置参数以指示作业将放置在用户或集群中的哪个位置。
    position 是一个正整数,表示作业从用户或集群开始的目标位置。
命令示例
  • 示例
    同时对多个PEND状态的作业进行置顶排序。
[user1@host1 apps]$ jjobs  
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME ORDER  
237 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
238 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
239 user1 PEND normal host1 sleep 1000 Mar 30 15:40 1  
240 user1 PEND normal host1 sleep 1000 Mar 30 15:40 2  
241 user1 PEND normal host1 sleep 1000 Mar 30 15:40 3  
242 user1 PEND normal host1 sleep 1000 Mar 30 15:40 4  
243 user1 PEND normal host1 sleep 1000 Mar 30 15:40 5  
[user1@host1 apps]$ jctrl top -p 1 241 242 243  
Job <241> has been moved to position 1 from top  
Job <242> has been moved to position 1 from top  
Job <243> has been moved to position 1 from top  
[user1@host1 apps]$ jjobs  
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME ORDER  
237 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
238 user1 RUN normal host1 host2 sleep 1000 Mar 30 15:40 -  
243 user1 PEND normal host1 sleep 1000 Mar 30 15:40 1  
242 user1 PEND normal host1 sleep 1000 Mar 30 15:40 2  
241 user1 PEND normal host1 sleep 1000 Mar 30 15:40 3  
239 user1 PEND normal host1 sleep 1000 Mar 30 15:40 4  
240 user1 PEND normal host1 sleep 1000 Mar 30 15:40 5

子命令start

使用 jctrl start 命令可强制运行指定节点上的等待作业。

概要

jctrl start [-h] [-f] -m host_name jobId | jobId[index]

选项
  • -h:打印命令使用方法。
  • -f:允许作业运行而不会因运行窗口或挂起条件而被挂起。
  • -m host_name:需要,指定一个或多个运行作业的主机。

子命令requeue

使用 jctrl requeue 命令可终止作业并重新排队作业到运行队列。

概要

jctrl requeue [-h] [-u user_name | -u all] [-J job_name] [-d][-e] [-r] [-a] [-H]
0 | jobId | jobId[index] [0 | jobId | jobId[index] …]

选项
  • -h:打印命令使用方法。
  • -u user_name | -u all:对指定用户或组提交的作业进行操作,如果指定关键字all,表示对所有用户的作业进行操作。
  • -J job_name:仅对具有指定名称的作业进行操作。
  • -d:将已完成运行且处于 DONE 作业状态的作业重新排队。
  • -e:将异常终止的作业重新排队,并显示 EXIT 作业状态。
  • -r:对正在运行的作业重新排队。
  • -a:对所有作业重新排队,包括正在运行的作业、暂停作业以及具有 EXIT 或 DONE 状态的作业。
  • -H:将作业重新排队到 PSUSP 作业状态。

子命令peek

使用 jctrl peek 命令可显示运行作业的执行输出。

概要

jctrl peek [-h] [-f] [-t [task id]] jobId | jobId[index]

选项
  • -h:打印命令使用方法。
  • -f:实时打印显示运行作业的执行输出到屏幕上。
  • -t [task id]:查询指定的任务输出。
命令示例
  • 示例1:
    挂起用户user1提交到队列short上的所有状态作业。
$jctrl stop -q short -u user1 0
  • 示例2:
    恢复用户user1提交到所有队列上的未完成的作业。
$jctrl resume -u user1 0
  • 示例3:
    终止所有用户提交到队列short上的所有作业。
$jctrl kill -q short -u all 0
  • 示例4:
    重排队所有用户的所有作业。
$jctrl requeue -a -u all 0
  • 示例5:
    指定一个运行作业的主机
$jctrl start -m hostname jobID
  • 示例6:
    指定多个运行作业的主机
$jctrl start -m "hostname1 hostname2" jobID

子命令clean

使用 jctrl clean 命令可手动清理已完成的作业。

概要

jctrl clean [-h] [-u user_name | -u all]
jobId | jobId[index_list] | 0 [jobId | jobId[index_list] | 0…]

选项
  • -h:打印命令使用方法。
  • -u:指定用户/用户组提交的作业,关键字’all’指定所有用户。
命令示例
  • 示例:
    删除用户user1已经完成的jobId为5、6、7的作业,也可以单独删除某个已完成的作业。
$jctrl clean -u user1 0
Job <5> is being cleaned
Job <6> is being cleaned
Job <7> is being cleaned

jhostgroup

显示集群中定义的节点组信息。

概要

jhostgroup [-h] [-V] [-r] [-w] [group_name [group_name…]]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -r:递归展开节点组信息,在展开列表中只显示节点名,不包含节点子组名称,且重复的节点名称只列出一次。
  • -w:以宽格式形式显示节点组信息。
  • group_name:显示指定节点组的信息。

jusergroup

显示集群中定义的用户组相关信息。

概要

jusergroup [-h] [-V] [-l] [-r] [-w] [group_name [group_name…]]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -l:以长格式形式显示用户组具体信息。若配置了公平共享调度策略,还能显示每个用户的分配份额。
  • -r:递归展开用户组信息,在展开列表中只显示用户名,不包含子组名称,且重复的用户名只列出一次。
  • -w:以宽格式形式显示用户组信息。
  • group_name:仅显示指定用户组的信息。

jhist

显示集群中当前用户的作业历史信息,默认显示当前用户的所有等待、运行和被挂起的作业信息。

概要

jhist [-h] [-V] [-a] [-d] [-e] [-p] [-r] [-s] [-w | -l]
[-S time0,time1] [-t] [-f logfile_name | -n 0] [-J job_name]
[-Jd job_desc] [-P project_name] [-q queue_name]
[-app application_name] [-u user_name|all]
[jobId | jobId[index_list] [jobId | jobId[index_list] …]]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -a:显示所有未完成和已完成的作业历史信息。
  • -d:仅显示已完成或退出作业信息。
  • -e:仅显示未正常完成的作业历史信息。
  • -p:仅显示等待状态的作业历史信息。
  • -r:仅显示运行状态的作业历史信息。
  • -s:仅显示已被挂起的作业历史信息。
  • -w:以宽格式形式显示信息。
  • -l:以长格式形式显示更为详细的信息。
  • -S time0,time1:仅显示有关在指定时间间隔内提交的作业的信息。
  • -t:显示指定的DJM容器作业事件信息。
  • -f logfile_name:搜索指定路径下的日志文件。
  • -n 0:搜索所有事件日志。
  • -J job_name:仅显示特定的作业历史信息。
  • -Jd job_desc:仅显示指定作业描述的作业历史信息。
  • -P project_name:仅显示指定项目的作业历史信息。
  • -q queue_name:仅显示指定队列的作业历史信息。
  • -app application_name:仅显示有关提交给指定应用程序的作业的信息。
  • -u user_name|all:显示指定用户提交的作业信息,如果指定关键字all,则显示所有用户提交的作业信息。

命令示例

  • 示例
    显示用户user1的所有作业的详细历史信息。
$jhist -a -l -u user1

jputmsg

用于给指定的作业添加信息或者文件。

概要

jputmsg [-h] [-V] [-i index] [-d “description”] jobId | jobId[index]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -i index:指定需要添加的信息或者文件的索引。
  • -d “description”:指定需要添加的描述信息。
  • jobId | “jobId[idxList]”:指定特定的作业或者作业数组。

命令示例

  • 示例
    给作业号为101的作业添加描述信息为"string",并指定作业索引为1。
$jputmsg -i 1 -d "string" 101

jgetmsg

获取通过jputmsg添加到作业的信息。

概要

jgetmsg [-h] [-V] [-i index] jobId | jobId[index]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -i index:设置指定的信息索引。
  • job_ID | “job_ID[index]”:指定特定的作业或者作业数组。

命令示例

  • 示例
    获取信息索引为1的101号作业的信息。
$jgetmsg -i 1 101

jexec

远程执行任务。

概要

jexec [options]… <command> [args]…

选项

  • -t:指定执行结果的超时时间。
  • -m:指定执行节点。
  • -e:指定节点的筛选条件。
  • -a:异步执行命令
  • -l:指定 log 级别。
  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • args…:传递特定命令的参数。

jhinfo

显示系统中所有可用的资源信息。

概要

jhinfo [-h] [-V]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。

jlimits

主要用于显示集群中用户的cpu和作业的限制信息。

概要

jlimits [-h] [-V] [-s | -c] [-u user_name|user_group|all]
[-m host_name|host_group|all] [-q queue_name|all]
[-app application_name|all] [-w]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -s:显示没有指定队列、应用和节点配置的用户或用户组详细的作业限制信息。
  • -c:显示用户的作业限制配置信息。
  • -u user_name|user_group|all:显示集群中用户和用户组的相关CPU和作业限制信息。
  • -m host_name|host_group|all:显示集群中主机的相关CPU和作业限制信息。
  • -q queue_name|all:显示集群中队列的相关CPU和作业限制信息。
  • -app application_name|all:显示集群中应用的相关CPU和作业限制信息。
  • -w:宽格式显示CPU和作业限制信息,不截取字段。

命令示例

  • 示例1
    显示集群中user1用户的相关CPU和作业限制信息。
$jlimits -u user1
  • 示例2:
    显示集群中所有用户的相关CPU和作业限制信息。
$jlimits -u all
  • 示例3:
    显示集群中主机名称是host2相关的CPU和作业限制信息。
$jlimits -m host2
  • 示例4:
    显示集群中所有主机的相关CPU和作业限制信息 。
$jlimits -m all
  • 示例5:
    显示集群中队列名称是queue1相关的CPU和作业限制信息。
$jlimits -q queue1
  • 示例6:
    显示集群中所有队列的相关CPU和作业限制信息。
$jlimits -q all
  • 示例7:
    显示集群中应用名称是app1相关的CPU和作业限制信息。
$jlimits -app app1
  • 示例8:
    显示集群中所有应用的相关CPU和作业限制信息。
$jlimits -app all

japps

主要用于显示有关应用程序的信息。

概要

japps [-h] [-V] [-w | -l | -bind][application_name [application_name …]]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -w:以宽格式显示应用信息。
  • -l:以长格式显示应用的详细信息。
  • -bind:显示应用级的用户和节点绑定信息。

jports

显示端口资源信息。

概要

jports [-h] [-V] [-l]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -l:以长格式显示作业和分配的端口资源信息。

jconfig

jconfig是用于管理unischeduler配置文件的工具,仅支持root和集群主管理员用户使用此命令修改或更新调度参数配置。

可用命令

  • completion:为指定的shell生成自动完成脚本。
  • help:打印命令使用方法。
  • list:显示配置文件中支持修改和更新的配置项。
  • set:修改配置项(jconfig set命令只支持修改MASTER_CANDIDATES、REDIS_PORT和PRIVATE_PORT配置)。
  • update:更新配置项。
  • version:打印景行资源管理与调度软件发行版本信息。

使用方法

jconfig命令仅支持对下列配置文件进行修改或更新:
1) scheduler.conf
2) params.conf
3) jhds.conf

命令示例

  • 示例1
    通过jconfig list jhds.conf命令查看配置文件中的可修改或可更新的配置项:
# jconfig list jhds.conf  
cluster_domain=  
host=host1  
port=6322  
max_connections=5  
max_connections_candidate=30  
timeout=5  
jhds_http_port=6324  
jhds_port=6325
  • 示例2
    将jhds.conf文件中max_connections的值更新为10,为确保配置生效并同步至远程nacos中,还需根据输出的信息,依次执行unischeduler stop 和 unischeduler start命令。
# jconfig list jhds.conf  
cluster_domain=  
host=host1  
port=6322  
max_connections=5  
max_connections_candidate=30  
timeout=5  
jhds_http_port=6324  
jhds_port=6325
  • 示例3
    将host1 host2
    host3通过以下命令设置为候选主节点,并根据提示信息执行相关命令使其生效:
# jconfig set MASTER_CANDIDATES='host1 host2 host3'  
to make the configuration effective, please run the following:  
jadmin schedreconfig  
jadmin jhdsreconfig
  • 示例4
    将redis服务端口通过以下命令设置为9322,并根据提示信息执行相关命令使其生效:
# jconfig set REDIS_PORT=9322  
unischeduler stop all  
unischeduler start
  • 示例5
    将scheduler.conf文件中CLUSTER_NAME的值更新为jhadmin user1(增加管理员user1,jhadmin是主管理员):
# jconfig update scheduler.conf CLUSTER_NAME='jhadmin user1'  
to make the configuration effective, please run the following:  
jadmin schedreconfig

jcode

显示错误码的释义信息。

概要

jcode [-h] [-V] [-all] [-e code [code …]]
[-r code [code …]] [-p code [code …]] [-zh]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • -all:显示所有错误码和相应的错误码释义。
  • -e code [code …]:显示作业错误码和相应的错误码释义。
  • -r code [code …]:显示gui图形作业错误码和相应的错误码释义。
  • -p code [code …]:显示作业挂起原因错误码和相应的错误码释义。
  • -zh:显示挂起原因的中文释义。

注意

设置 export LANG=zh_CN 环境变量后,再使用jcode命令可查看中文错误码释义。

命令示例

  • 示例
# export LANG=zh_CN  
# jcode -e 10036  
10036: 许可证失败  
# jcode -r 2001 2002 2006 2009  
2001: Gui作业失败次数达到上限  
2002: Gui作业信息读取错误  
2006: Gui 作业因初始化失败而退出  
2009: Gui 作业申请会话失败

jattach

连接服务模式的交互式作业。

概要

jattach [-h] [-V] [jobId]

选项

  • -h:打印命令使用方法。
  • -V:打印景行资源管理与调度软件发行版本信息。
  • jobId:连接指定ID的作业。

命令示例

  • 示例
$ jsub -Is bash  
Job <13> is submitted to default queue <normal> and default  
application <default>  
<<Waiting for dispatch ...>>  
<<Starting on host1>>  
<< To escape to local shell, press 'Ctrl + q'. The job will keep  
running at server side. >>  
<< output from stdout >>

当前端jsub -Is命令终止,后端作业不退出继续运行,jjobs查询作业状态为RUN时,可通过使用命令jattach加作业ID号,attach作业到终端继续接受交互式操作。

$ jattach 13  
Job <13> is running on host1  
<<Waiting for attach ...>>  
<<Attaching on zrkhost1>>  
<< output from stdout >>

7*24小时专家团队,随时静候您的访问

免费获得技术专家咨询与技术支持