cjobs#
命令#
cjobs —— 显示有关 AIP 作业的信息
概要#
cjobs [ -a ] [ -A ] [ -w | -l | -j | -o “格式”| -UF ] [ -WL | -WP | -WF ] [ -J “作业名称” ] [ -app “应用名称”] [ -m 主机名 | -m 主机组 ] [ -M ] [ -N 主机名|**-N** 主机型号| -N CPU因子 ] [ -P 项目名称 ] [ -g 作业组名称 ] [ -q 队列名称 ] [ -u 用户名 | -u 用户组 | -u all ] [ -S 搜索表达式 ] 作业 ID…
cjobs [ -d ] [ -p ] [ -r ] [ -s ] [ -A ] [ -w | -l | -UF ] [ -J 作业名称 ] [ -app 名称 ] [ -m 主机名 | -m 主机组 ] [ -M ] [ -N 主机名 | -N主机型号 |-N CPU因子 ] [ -P 项目名称 ] [ -g 作业组名称 ] [ -q 队列名称 ] [ -u 用户名 | -u 用户组 | -u all ] [ -S 搜索表达式 ] 作业 ID…
cjobs [ -d ] [ -p ] [ -r ] [ -s ] [ -A ] [ -noheader ] [ -J 作业名称 ] [ -app 配置文件名称 ] [ -m 主机名 | -m 主机组 ] [ -M ] [ -N 主机名 | -N 主机型号 |-N CPU 因子 ] [ -P 项目名称 ][ -g 作业组名称 ] [ -q 队列名称 ] [ -u 用户名 | -u 用户组 | -u all] [ -S 搜索表达式 ] 作业 ID…
cjobs [ -h | -V ]
描述#
显示有关作业的信息。
默认情况下,显示有关您自己的等待、正在运行和暂停的作业的信息。
命令显示在调度器内存中的作业数据,要显示已经被调度器从内存中清除的作业数据,请使用 chist。
显示作业信息范围#
root或集群管理员可以访问所有作业信息。
当cb.yaml中user_view_alljobs: yes,普通用户可以访问所有作业信息。
- 当cb.yaml中user_view_alljobs: no,或者该参数没有设置:
用户组管理员可以访问本用户组所有用户的作业信息。
队列管理员可以方问本队列所有用户的作业信息。
普通用户只能访问自己提交的作业。
选项#
- -a
显示 cb.yaml 中 CLEAN_PERIOD 指定的时间间隔内(默认为 4000秒)所有状态的作业信息,包括最近完成的作业。
- -A
显示有关作业阵列的摘要信息。如果您使用作业阵列 ID 指定作业阵列,并且还指定 -A,则不要包含带有作业阵列 ID 的索引列表。
如果需要,您可以使用 -w 来显示完整的数组规范。
- -app 配置文件名称
仅显示与职位配置文件名称匹配的职位。参数profile_name可以以通配符“*”开头或结尾,例如“*proj123”、“proj*”。
- -d
显示在 cb.yaml 中 CLEAN_PERIOD 指定的时间间隔内(默认周期为1小时)最近完成的作业的信息。
- -p
显示等待作业,以及导致每个作业在上一轮调度中未调度的等待原因。等待原因会显示导致该作业调度的主机数量;如果同时指定了-l 选项,则会显示主机名称。
每个等待原因都与一个或多个主机相关联,并说明这些主机未分配用于运行作业的原因。在作业请求特定主机(使用 csub -m)的情况下,用户可能会看到不相关主机的原因以及与所请求主机相关的原因一同显示。 等待原因的生命周期在新的调度轮次开始后结束。该原因可能无法反映当前的负载情况,因为它的持续时间可能与cb.yaml 中 SCHED_INTERVAL指定的时间间隔一样长。
当作业阵列达到作业槽限制(csub -J “jobArray[indexList]%job_slot_limit”)时,将显示以下消息:The job array has reached its job slot limit.
- -r
显示正在运行的作业。
- -s
显示暂停的作业以及导致每个作业暂停的暂停原因。
作业暂停期间,暂停原因可能不会保持不变。例如,某个作业可能由于分页率(pg)而暂停,但分页率下降后,另一个负载指标可能会阻止该作业恢复。暂停原因将根据负载指标进行更新。原因可能与 cb.yaml 中 JM_INTERVAL 指定的时间间隔一样早。因此,显示的原因可能无法反映当前的负载情况。
- -W
提供以下资源使用情况信息:PROJ_NAME、CPU_USED、MEM、SWAP、PIDS、START_TIME、FINISH_TIME。仅当您未以管理员身份登录时才显示属于您的作业。
- -WF
显示使用 -W 选项(运行限制)提交的正在运行作业的预计完成时间。对于已完成或已退出的作业,显示实际完成时间。
- -WL
显示使用 -W 选项(运行限制)提交的作业的估计剩余运行时间。
- -WP
显示使用 -W 选项(运行限制)提交的作业的当前估计完成百分比。
- -w
宽格式。显示作业信息而不截断字段。
- -l
长格式。以多行格式显示每个作业的详细信息。
-l选项显示以下附加信息:项目名称、作业命令、提交主机上的当前工作目录、等待和暂停原因、作业状态、资源使用情况、资源限制信息。
使用 cjobs -A -l 显示作业阵列的详细信息,包括作业阵列作业限制(%job_limit)(如果设置)。
- -noheader
指定后,cjobs将显示字段的值,但不显示字段名称。这在脚本解析时非常有用,因为不需要列标题。
此选项适用于没有选项的 cjobs 命令的输出,以及除 -l、-UF、-N、-h 和 -V 之外的所有带有短形式输出的 cjobs 选项的输出。
- -j
JSON 格式。以 JSON 格式显示每个作业的详细信息。使用“jq”等工具将输出转换为可读格式。
- -o “字段名称…[delimiter=’字符’]”
设置自定义输出格式。
指定要显示的 cjobs 字段(或字段别名,而非完整字段名)及其显示顺序。每个字段的输出宽度不受限制。
使用**delimiter=** 来设置不同标题和字段之间的分隔符。分隔符必须是单个字符。默认情况下,分隔符为空格。
要在 csh 环境中指定特殊分隔符(例如$),请在分隔符规范中使用双引号(“),并在 -o 语句中使用单引号(’):
cjobs...-o 'field_name ... [delimiter="字符"]'
-o 选项不能与 cjobs 选项 -l、-UF、-WF、-W、-WL、-WP 一起使用。
如果字段没有值,则输出为破折号 (-)。
以下是用于指定要显示的 cjobs 字段的字段名称、可以代替字段名称使用的别名:
allocation|alloc:资源分配 JSON
app :csub -A 指定的应用程序名称
avgmem:完成作业所用的平均内存(KB)
command|cmd :作业命令
%complete:使用选项 -W 提交时作业完成的百分比
corelimit:csub -C(ulimit -c)指定的核心文件大小限制
cpu_used:每秒使用的 CPU 时间
dependency :由 csub -w 指定的依赖关系
end_reason|ereason:作业结束原因
error_file:csub -e|-eo 指定的错误文件名
estimated_start_time|estart_time:预计的作业开始时间
exec_cwd:作业正在执行的当前工作目录
exec_home:作业提交的主目录
exec_host:作业执行主机
exit_code :作业退出码
filelimit:由 csub -F (ulimit -f) 指定的文件大小限制
finish_time:作业完成时间
first_host:第一个作业执行主机
from_host:作业提交主机名
gmem:GPU 内存使用量(MB)
idle_factor:CPU 使用时间/作业运行时间
input_file:csub -i|-is 指定的输入文件名
io:作业的磁盘 I/O 范围(以 KB/s 为单位)
job_description|description :csub -Jd 指定的作业描述
job_group|group :csub -g 指定的作业组名称
job_name|name :csub -J 指定的作业名称
job_priority|priority :由 csub -sp 指定的作业优先级
jobid|jd :作业ID
last_message|msg|message:cpost 发布的最后一条消息
last_ut|ut:作业的最后一次 CPU 使用率
max_req_proc:csub -n 请求的最大插槽数
maxmem:完成作业所需的最大内存(KB)
mem:已用内存(KB)
memlimit:csub -M 指定的内存限制
min_req_proc|nreq_slot:csub -n 请求的最小槽数
nexec_host:作业的执行主机数量
nthread:作业的线程数
output_file:csub -o|-oo 指定的输出文件名
pend_reason|preason:作业等待原因
pend_time: 作业等待时间(秒)
pids :作业的进程 ID
pre_exec_command|pre_cmd :由 csub -E 指定的pre_exec
processlimit:csub -p(ulimit -u)指定的最大用户进程数
proj_name|proj|project :csub -P 指定的项目名称
queue :作业提交到的队列名称
req_gpus:csub -R 请求的 GPU 数量
reqmem:保留内存(以 GB 为单位)
res_rusage|ress:已分配的 GPU
resreq:csub -R 指定的资源需求
run_time:作业运行总时间(秒)
slots|nalloc_slot:已使用的槽总数
specified_start_time|sstart_time:csub -b 指定的作业开始时间
specified_terminate_time|sterminate_time:csub -t指定的作业终止时间
stacklimit:由 csub -S (ulimit -s) 指定的堆栈大小限制
stat :作业状态
stripped_cmd|scmd :不带 #CSUB 选项的作业命令
sub_cwd:运行 csub 或 csub -cwd 时的当前工作目录
susp_reason}sreason:作业暂停原因
swap:操作系统为该作业分配的虚拟内存(以 KB 为单位)
swaplimit:由 csub -v 指定的虚拟内存限制(以 KB 为单位)
time_left:使用选项 -W 提交时作业剩余运行时间
user :提交用户
user_group|ugroup :作业用户所属的用户组
字段名称和别名不区分大小写。
例如:
cjobs -o "id stat name start_time delimiter='^'" JOBID^STAT^JOB_NAME^START_TIME 2730^RUN^my_testjob^Sep 8 11:59
- -S 搜索表达式
按照搜索表达式定义的条件列出作业。搜索表达式使用变量(见下方的变量列表),组合 运算符形成搜索条件。
例子1:
cjobs -S "submit_time >= '2025/01/03' && submit_time <= '2025/06/10'"
列出提交日期为2025年1月3日到2025年6月10日本用户的活动作业。如果要包含已完成的 作业,可以使用-a选项。
例子2:
cjobs -S "mem / reqmem > 1.2" -a -u all
列出内存使用超过预留内存1.2倍的作业,包括活动作业和已完成作业,并包含所有用户 的作业。
例子3:
cjobs -S "job_name == 'myjob*'"
列出我的活动作业中,作业名前缀为myjob的作业。
例子4:
cjobs -S "user > u001" -u all
列出所有用户作业中作业用户名的字串排序“大于” u001的作业。字串排序是根据字母循序 排的。
表达式变量
app: “csub -A”定义的应用名
command: 作业命令
cpu_used: CPU用量,单位秒
description: “csub -Jd”定义的作业描述
docker: “docker > 0” 表示Docker作业。“docker == 0” 表示非Docker作业
exclusive: “exclusive > 0”表示独占作业。“exclusive == 0”表示非独占作业
exec_cwd: 作业运行时的工作目录
exit_code: 作业退出码。如果被Linux kill消息(SIGNAL)所杀,退出码为 SIGNAL + 128
finish_time: 作业结束时间。见下方的时间格式说明,如“2025/05/02 10:33”
first_host: 作业运行主机名。若为多机的并行作业,这个变量只表示第一台主机
from_host: 作业提交主机名
idle_factor: 作业空闲指数,计算方法是:CPU用时 / (作业运行时长 * 作业槽数)
interact: “interact > 0” 表示交互式作业(csub -I),“interact == 0”表示非交互式作业
job_group: “csub -g”定义的作业组名
job_name: “csub -J”定义的作业名
job_priority: “csub -sp”定义的作业优先级
jobid: 作业号
jobindex: 阵列作业的序号
last_ut: 过去15秒的作业CPU利用率,值为0.0-1.0表示0 - 100%
mem: 作业内存用量,单位为GB
memlimit: 作业内存限制,单位为GB
npids: 作业运行的进程数,一般为3个或以上
pend_time: 作业等待时间,单位为分钟
project: “csub -P”定义的项目名
queue: “csub -q”定义的队列名,或者缺省队列名
req_gpus: “csub -R rusage[gpu=X]”请求的GPU数,可以是分数
reqhost: “csub -m” 定义的第一个主机名
reqmem: “csub -R rusage[mem=X]”请求的内存,单位为GB
run_time: 作业运行时长,单位为分钟
runlimit: “csub -W”定义的时限,单位为分钟
slots: 作业请求或使用的作业槽数
start_time: 作业启动时间,格式见下方的说明
sub_cwd: “csub -cwd”定义的作业工作目录,或者作业提交时的当前工作目录
submit_time: 作业提交时间,格式见下方的说明
user: 作业提交用户
user_group: 作业用户所在的作业组名,或者“csub -G”参数指定的用户组名
时间格式
时间格式为 yyyy/mm/dd间隔符HH:MM:SS。间隔符可以是空格、-、或/。时分秒可选。
例子:
‘2025/03/03’
‘2025/03/04 10’
‘2025/04/02 10:30’
‘2025/04/02 10:30:12’
备注
当日期后不带时间时,缺省的时间为00:00, 小时后不带分钟,默认分钟为00,分钟后不带秒,默认秒为00。
运算符
数值运算 +,-,*,/ 加、减、乘、除
逻辑运算 &&,|| 与、或
判断运算 ==,!=,<,>,<=,>= 等于、不等于、小于、大于、小于或等于、大于或等于
计算顺序 可以用()表示括弧中的表达式先计算结果
字符串前后缀
通配符“*”可用于定义字符串的前后缀。如“myjob*”表示前缀为myjob的字串,“*test”表示后缀为test的字串。
警告
时间参数submit_time、start_time、和finish_time由于是字符串,不能做加减乘除的运算。
- -UF
无格式。显示无格式的作业详细信息。这使得编写用于解析 cjobs 关键字的脚本变得更容易。此选项的结果对输出没有宽度控制。每行从行首开始。SCHEDULING PARAMETERS和PENDING REASONS的信息保持格式化。没有任何分隔符结尾的使用信息行会添加分号来分隔其各个部分。首行和所有以时间戳开头的行均以无格式显示在一行中。没有行长和格式控制。
- job_ID …
显示有关指定作业或作业阵列的信息。
如果使用 -A,请指定不带索引列表的作业阵列 ID。
- -g 作业组名称
显示有关附加到由job_group_name 指定的作业组的作业的信息。
- -J 作业名称
显示有关指定作业名称或作业阵列的信息。作业名称可以在尾部用通配符”*”,例子:
cjobs -J proj* # 显示本用户所有以proj开头的作业名称的活动作业(等待、运行、和暂停)
- -m 主机名| -m 主机组
仅显示分派到指定主机的作业。
要确定可用的主机和主机组,请使用 chosts 和 cmgroup。
- -M
与 -l 选项结合使用时显示作业的最后一条发布消息。
- -N 主机名 | -N 主机型号 | -N CPU系数
显示作业消耗的标准化 CPU 时间。使用指定的 CPU 因子,或者指定主机或主机型号的 CPU 因子进行标准化。
- -P 项目名称
仅显示属于指定项目的作业。
- -q 队列名称
仅显示指定队列中的作业。 命令 cqueues 返回系统中配置的队列列表,以及有关这些队列的配置信息。
- -u 用户名 | -u 用户组 | -u all
仅显示由指定用户提交的作业。关键字 all 指定所有用户。该选项受集群用户权限限制,缺省权限配置时普通用户只能显示自己的作业信息。用户组管理员可以显示组内用户的作业信息,队列管理员可以显示队列中用户的作业信息。AIP管理员不受限制。
- -h
将命令用法打印到 stderr 并退出。
- -V
将 AIP 发布版本打印到 stderr 并退出。
输出#
等待作业将按其被考虑调度的顺序显示。高优先级队列中的作业优先于低优先级队列中的作业显示。相同优先级队列中的等待作业将按其提交的顺序显示,但可以使用 ctop 或 cbot 命令更改此顺序。如果将多个作业调度到一台主机,则该主机上的作业将按其队列优先级和调度时间的顺序列出。已完成的作业将按其完成的顺序显示。
默认显示#
将显示包含以下字段的作业列表:
- JOBID
AIP 分配给该作业的作业 ID。
- USER
提交作业的用户。
- STAT
作业的当前状态(请参阅下面的作业状态)。
- QUEUE
作业所属的作业队列的名称。如果作业所属的队列已从配置中移除,队列名称将显示为 lost_and_found。使用 chist 获取原始队列名称。lost_and_found 队列中的作业将保持等待状态,直到使用 cswitch 命令将其切换到另一个队列。
- FROM_HOST
提交作业的主机的名称。
- EXEC_HOST
正在执行作业的一个或多个主机的名称(如果作业尚未调度,则此字段为空)。如果运行作业的主机已从配置中移除,则主机名将显示为 lost_and_found。使用 chist 获取原始主机名。
- JOB_NAME
用户指定的作业名称,或默认指定的命令字符串(参见 csub(1))。如果作业名称太长,此字段容纳不下,则仅显示作业名称的后半部分。
- SUBMIT_TIME
作业的提交时间。
-l 输出#
如果指定了 -l 选项,则生成的长格式列表将包括以下附加字段:
- Job
作业ID
- User
提交作业用户名
- Project
提交作业的项目。
- Profile
csub -A或csub -app定义的应用名。
- Job Description
csub -Jd定义的作业描述。
- Pre-execute Command
csub -E定义的pre-exec命令。
- Command
作业命令。
- CWD
提交主机上的当前工作目录。
- RUNTIME
cjobs -WL, -WF, 或者-P输出项
- TIME_LEFT
估计的作业剩余运行时长
- FINISH_TIME
估计的作业结束时间
- %COMPLETE
估计的作业完成百分比
- PENDING REASONS
作业处于 PEND 或 PSUSP 状态的原因。同时指定 -p 和 -l 选项时,将显示与每个原因关联的主机名称。
- SUSPENDING REASONS
作业处于 USUSP 或 SSUSP 状态的原因。
- loadSched
作业的负载调度阈值。
- loadStop
作业的负载暂停阈值。
- JOB STATUS
作业状态的可能值包括:
- PEND
作业处于等待状态,即尚未开始。
- PSUSP
该作业在等待期间已被其所有者或 AIP 管理员暂停。
- RUN
该作业目前正在运行。
- USUSP
该作业在运行时已被其所有者或 AIP 管理员暂停。
- SSUSP
该作业已被 AIP 暂停。该作业因以下两个原因之一而被 AIP 暂停:
- DONE
作业已结束,状态为 0。
- EXIT
作业已以非零退出码终止 - 它可能由于执行中的错误而被中止,或者被其所有者或 AIP 管理员终止。
- UNKWN
CBSCHED 与运行该作业的主机上的 CBJM 失去联系,或者作业超时而无法被杀死。
- ZOMBI
如果出现以下情况,作业将变为 ZOMBI:
当执行主机上的 CBJM 无法访问且作业显示为 UNKWN 时,不可重新运行的作业被 ckill 终止。
正在运行可重新运行作业的主机不可用,并且该作业已由 AIP 使用新的作业 ID 重新排队,就好像该作业作为新作业提交一样。
当执行主机可用后,AIP 将尝试终止 ZOMBI 作业。成功终止 ZOMBI 作业后,该作业的状态将更改为 EXIT。
- RESOURCE USAGE
当前作业使用情况的值包括:
- CPU time
作业中所有进程的累计 CPU 时间(以秒为单位)。
- MEM
作业中所有进程的驻留内存使用量总计(以 MB 为单位)。
- SWAP
作业中所有进程的虚拟内存总使用量(以 MB 为单位),包含所有操作系统为作业分配的虚拟内存总量。
- DISKIO
当前作业中所有进程的磁盘 IO,以 KB/s 为单位。
- GPUMem
当前作业中所有进程的 GPU 内存使用情况(以 MB 为单位)。
- NTHREADS
当前作业中所有进程的线程数。
- PGID
作业中当前活动的进程组 ID。
- PIDs
作业中当前活动的进程。
- RESOURCE LIMITS
对队列中的作业施加的硬资源限制(请参阅getrlimit(2) 和 cb.yaml)。这些限制是针对每个作业和每个进程施加的。
每个作业可能的限制是:
CPULIMIT
PROCLIMIT
MEMLIMIT
SWAPLIMIT
PROCESSLIMIT
Linux每个进程可能的资源限制是:
RUNLIMIT
FILELIMIT
DATALIMIT
STAKLIMIT
CORELIMIT
如果提交到队列的作业指定了这些限制中的任何一个(请参阅 csub),则将对该作业使用相应作业限制和队列限制中较低的一个。
如果没有指定资源限制,则假定资源是无限的。
- SCHEDULING PARAMETERS
调度负载阈值,合并主机级和队列级配置的调度负载阈值。
- loadSched
作业的负载调度阈值。
- loadStop
作业的负载暂停阈值。
- RESOURCE REQUIREMENT DETAILS
作业调度的资源需求。调度器用这些参数决定作业运行主机。
Combined:合并作业定义的资源需求(csub -R)、队列中配置的资源需求(resspec)、和系统内置的缺省调度资源需求。
Effective:如果合并的作业需求有多个“或”的选择,最终作业调度时的有效资源需求。
- RESOURCE ALLOCATION
作业调度后的资源分配JSON,每个作业槽的分配主机名、端口名、GPU、以及共享资源的分配。
- PENDING PART
作业如果有等待部分,全部等待,或者可伸缩作业部分等待的JSON。
- THE MOST RECENT MESSAGE
作业的最后一个cpost的消息。
- Time
消息发布的时间
- Content
消息内容
作业阵列摘要信息#
如果使用 -A,则显示有关作业阵列的摘要信息。将显示以下字段:
- JOBID
作业阵列的作业 ID。
- ARRAY_SPEC
数组规范的格式为名称[索引]。数组规范可能被截断,请使用 -w 选项和 -A 选项一起显示完整的数组规范。
- OWNER
作业阵列的所有者。
- NJOBS
作业阵列中的作业数。
- PEND
作业阵列中等待的作业数。
- RUN
作业阵列中正在运行的作业数。
- DONE
作业阵列中成功完成的作业数。
- EXIT
作业阵列中未成功完成的作业数。
- SSUSP
作业阵列的 AIP 系统暂停作业的数量。
- USUSP
作业阵列中用户暂停的作业数。
- PSUSP
作业阵列中等待时被暂停的作业数。
作业等待原因#
当作业等待时,使用-p列出作业等待原因。
用-l或-lp参数,则观察**PENDING REASONS**的结果。
作业参数和调度相关的原因#
- New job is waiting for scheduling
新的作业还未来得及调度
- The job has a specified start time
作业定义的开始运行(csub -b) 时间还没到
- Job dependency condition not satisfied
作业依赖关系(csub -w)不满足
- Dependency condition invalid or never satisfied
非法作业依赖关系(csub -w),作业永远不会被调度
- The job’s pre-exec command exited with non-zero status
作业的前处理(csub -E)程序执行的退出码为非0
- Job execution initialization failed
CBJM无法初始化作业,一般是由于作业运行主机的文件系统出现问题,或者主机没有可用 资源(内存或本地存储)了
- The schedule of the job is postponed for a while
调度器过忙,需等几分钟
- Waiting for re-scheduling after switching queue
作业切换队列后重新调度(cswitch)
队列相关的原因#
- The queue is inactivated by the administrator
队列已被系统管理员停用,不再调度作业
- The queue is inactivated by its time windows
队列配置了运行时间窗,当前不在时间窗的时间内
- The queue has reached its job slot limit
队列最大作业槽限制(maxslots)已经达到
- User has reached the per-user job slot limit of the queue
队列所设每个用户的最大作业槽限制(usermaxslots)已经达到
- The queue’s pre-exec command exited with non-zero status
队列的前处理(pre_exec)程序执行的退出码为非0
- Requeued job is waiting for rescheduling
作业被终止然后重调度:cswitch、运行主机挂了、或者作业退出码符合队列配置的重调度退出码 (rerunonexitcode)
- Job will not finish before queue’s run window is closed
作业定义了结束时间或者运行时限,队列定义了运行时间窗。作业在队列运行时间窗关闭前无法结束
- Not allowed due to non-host related resource limit
作业受限于limits里定义的(与主机无关的)资源限制
- Can’t run jobs submitted by root
集群配置了不允许root运行作业
用户或用户组配置相关的原因#
- The user has reached job slot limit
受限于用户作业槽限制
- One of the user’s groups has reached its job slot limit
受限于用户组作业槽限制
- Waiting for scheduling after resumed by user
用户恢复了作业,等待被调度
- Unable to determine user account for execution
作业运行主机上无法认证用户账号
- The user has no permission to run the job on remote host/cluster
用户在远程主机上没有作业运行权限
- Host exausted mapped user accounts
配置了有限的账号映射,没有可用的账号可以映射了
主机相关的原因#
这类原因可以用-lp选项列出有相应原因的主机名。
小技巧
作业等待只列出用户请求和队列配置的主机名,不会列出集群所有主机名。
- Job’s resource requirements not satisfied
主机不满足作业的资源需求
- Job’s requirement for exclusive execution not satisfied
主机不满足独占作业需求
- Higher or equal priority jobs already suspended by system
作业抢占低优先级作业槽,已经没有可被抢占的作业槽
- Cleaning up zombie job
主机正在清理僵尸作业
- Closed by AIP administrator
主机被管理员关闭
- Host is locked
主机被管理员锁住了 (cadmin lslock)
- Not enough job slot(s)
主机上作业槽不够
- Job slot limit reached
主机作业槽上限已达到
- Not usable to the queue
主机不能被队列所用,如作业提交指定的主机名不在队列配置的主机中
- Just started a job recently
cb.yaml中job_accept_interval不是0,而主机刚接受了作业
- Load information unavailable
CBJM无法获取该主机的负载信息,原因可能是集群中的通讯短暂中断,或者CBLS需要重启
- CBLS is unreachable now
主机的CBLS不正常
- Queue’s resource requirements not satisfied
队列中配置的资源需求不满足
- Not the same type as the submission host
除非特别指定,AIP只把作业调度到与作业提交主机相同类型的主机上,这个主机的类型与作业 提交主机不同
- Not enough processors to meet the job’s spanning requirement
主机不满足span的资源需求
- Not enough processors to meet the queue’s spanning requirement
主机不满足队列span的资源需求
- Running an exclusive job
主机已被独占作业所占
- Queue’s requirements for resource reservation not satisfied
主机不满足队列资源需求中rusage定义的条件
- Job’s requirements for resource reservation not satisfied
主机不满足作业资源需求中rusage定义的条件
- Power saving mode
主机处于节电关闭模式
- Owned by other users with pending jobs
主机属于owership的队列,该主机的拥有者有等待作业
- Unable to reach slave job server
主机CBJM工作不正常
- Failed in talking to server to start the job
调度器无法把作业分发到该主机
- Failed in receiving the reply from server when starting the job
分发作业后没有得到作业运行主机的回答
- Unable to allocate memory to run job
运行主机没有可用内存了
- Unable to fork process to run job
运行主机没有可用进程了
- Load threshold reached
主机负载超过配置的阈值(主机阈值或者队列配置的阈值)
- Preempted job is waiting to be resumed
被抢占的作业正在等待恢复
- The job has been requeued
作业被重排队
- The job group limit has been reached
作业组作业槽限额已到达
- System is unable to set pending reason for job
未知原因
作业暂停原因#
使用-l参数可以显示暂停作业的暂停原因SUSPENDING REASONS。
- The job was suspended by user
作业由用户使用cstop命令暂停
- The job was suspended by AIP administrator or root
作业由AIP管理员或root用户用cstop命令暂停
- The run windows of the queue are closed
队列的作业运行时间窗关闭
- The execution host is locked by AIP administrator now
作业运行主机被管理员锁住了
- Waiting for re-scheduling after being resumed by user
用户运行cresume命令后,作业等待被调度
- Host load exceeded threshold:负载指标
主机负载已到暂停阈值,并列住超载的负载名
- Preempted by the scheduler
作业被抢占而暂停
作业结束原因#
用-l参数查看作业状态时间序列的最后一个序列,如果调度知道作业退出码为非0的原因(如由用户、管理员 通过调度器对作业做的操作,或者是调度规则导致),会列出作业退出原因。作业退出原因也可使用 cjobs -o “end_reason”查看。例子:
cjobs -o end_reason 1054
END_REASON
Signaled by the job owner
如果调度器无法判断作业结束原因,则不显示结果。
- Requeued
作业被crequeue命令重排队
- Rerun on host failure
作业由于运行主机出错而重调度
- Rerun on configured exit code
作业退出码与配置的重运行退出码一致 (队列参数rerunonexitcode)
- Requeued on checkpoint
检查点退出
- Signaled by the
被以下个体所杀:
job owner: 作业用户
system administrator: 系统管理员
queue administrator: 队列管理员
group administrator: 用户组管理员
scheduling policy: 调度策略
- RUNLIMIT was reached
作业到达运行时限被杀
- DEADLINE was reached
作业到达结束时间被杀
- PROCESSLIMIT was reached
作业进程超限被杀
- CPULIMIT was reached
CPU用时超限被杀
- MEMLIMIT was reached
内存使用超过限制被杀
- Used unallocated GPU
使用了不是分配给本作业的GPU被杀
作业退出码#
作业的退出码与作业命令,即作业主进程的退出码。退出码是作业命令自身的,与调度器无关。
常规的退出码定义为:
0:正常结束,AIP把退出码为0的作业定义为DONE,其他为EXIT。
126:作业命令文件没有执行权限
127:作业命令找不到
129 - 192:AIP根据Linux的规范认为时作业进程被信号(kill命令)所杀,所杀的信号为:退出码 - 128。 如: 退出码130是被信号2,即SIGINT(Ctrl-C)所杀,等等。具体Linux的可用信号参见kill -l的输出。
示例#
cjobs -pl
显示有关调用者的所有等待作业的详细信息。
cjobs -ps
仅显示等待和暂停的作业。
cjobs -u all -a
显示所有用户的所有作业。
cjobs -d -q short -m apple -u john
显示 john 提交到短队列并在主机 apple 上执行的所有最近完成的作业。
cjobs 101 102 203 509
显示 job_ID 为 101、102、203 和 509 的作业。
cjobs -o "id stat"
显示作业所有本用户的活动作业(等待、运行、或暂停)的JOBID和作业状态