sacct

部分: Slurm 命令 (1)
更新: Slurm 命令
索引

 

名称

sacct - 显示所有作业和作业步骤的会计数据 在 Slurm 作业会计日志或 Slurm 数据库中

 

概要

sacct [选项...]

 

描述

通过 Slurm 启动的作业的会计信息要么记录在作业会计日志文件中,要么保存到 Slurm 数据库中,具体取决于 AccountingStorageType 参数的配置。

sacct 命令以多种形式显示存储在作业会计日志文件或 Slurm 数据库中的作业会计数据,以供您分析。默认情况下,sacct 命令显示作业、作业步骤、状态和退出代码的信息。您可以使用 --format= 选项自定义输出以指定要显示的字段。

作业记录由作业整体的主要条目以及作业步骤的条目组成。作业启动页面对每种类型的作业步骤有更详细的描述。 <https://slurm.schedmd.com/job_launch.html#job_record>

对于 root 用户,sacct 命令显示所有用户的作业会计数据,尽管有选项可以过滤输出,仅报告指定用户或组的作业。

对于非 root 用户,sacct 命令默认限制作业会计数据的显示,仅显示以其自身用户标识符 (UID) 启动的作业。可以使用 --allusers--user--uid 选项显示其他用户的数据。

经过的时间字段以 [天-]小时:分钟:秒[.微秒] 的形式呈现。只有 'CPU' 字段会有微秒。

注意: 如果指定,slurmdbd.conf 选项 PrivateData 可能会进一步限制非 SlurmUser、root 或 AdminLevel=Admin 的用户可见的会计数据。有关限制访问会计数据的更多详细信息,请参见 slurmdbd.conf 手册页。

注意: Slurm 数据库的内容以小写字母维护。这可能导致一些 sacct 输出与其他 Slurm 命令的输出不同。

注意: sacct 报告的许多数据是通过 wait3()getrusage() 系统调用生成的。一些系统收集和报告这些调用的不完整信息;sacct 对于缺失的数据报告值为 0。有关您的系统上实际可用哪些数据的信息,请参见系统的 getrusage (3) 手册页。

 

选项

-A, --accounts=<account_list>
当提供以逗号分隔的账户列表作为参数时,显示作业。

--array
展开作业数组。将所有数组任务显示在单独的行上,而不是将数组任务组显示在单行上。

-L, --allclusters
显示在所有集群上运行的作业。默认情况下,仅显示在调用 sacct 的集群上运行的作业。

-X, --allocations
仅显示与作业分配本身相关的统计信息,不考虑步骤。

注意: 不包括步骤的情况下,作业分配的利用率统计将报告为零。

-a, --allusers
当由 root 用户运行或如果 PrivateData 未配置为 jobs 时,显示所有用户的作业。否则仅显示当前用户的作业。

-x, --associations=<assoc_list>
仅显示在由 assoc_list 操作数指定的关联 ID 下运行的作业的统计信息,assoc_list 是以逗号分隔的关联 ID 列表。assoc_list 中不允许有空格字符。默认是所有关联。

-B, --batch-script
如果作业使用了批处理脚本,此选项将打印作业的批处理脚本。如果作业没有脚本,则输出 'NONE'。
注意: 需要 AccountingStoreFlags=job_script。
注意: 需要使用 '-j' 请求特定作业。

-b, --brief
显示包含作业 ID、状态和退出代码的简要列表。

-M, --clusters=<cluster_list>
仅显示在由 cluster_list 操作数指定的集群上启动的作业的统计信息,cluster_list 是以逗号分隔的集群列表。cluster_list 中不允许有空格字符。值为 'all' 将查询在所有集群上运行。默认是您执行 sacct 命令的当前集群,或在联邦集群上执行时的所有集群。此选项隐式设置 --local 选项。

-c, --completion
使用作业完成数据而不是作业会计数据。slurm.conf 文件中的 JobCompType 参数必须定义为非空选项。不支持联邦集群信息(仅本地数据)。

-C, --constraints=<constraint_list>
以逗号分隔的列表,用于根据作业请求的约束/特性过滤作业。多个选项将被视为 '与' 而不是 '或',因此作业需要满足所有指定的约束才能返回,而不是其中之一。

--delimiter=<characters>
在指定 -p-P 选项时用于分隔字段的 ASCII 字符。默认分隔符为 '|'。如果未指定 -p-P 选项,则忽略此选项。

-D, --duplicates
如果 Slurm 作业 ID 被重置,则某些作业编号可能会在会计日志文件中出现多次,但指代不同的作业。这样的作业可以通过数据记录中的 "提交" 时间戳进行区分。

当请求特定作业的数据时,使用 --jobs 选项,sacct 返回该编号的最新作业。可以通过指定 --duplicates 来覆盖此行为,在这种情况下,将返回所有符合选择标准的记录。

注意: 撤销的联邦兄弟作业被隐藏,除非指定了 --duplicates 选项。

-E, --endtime=<end_time>
选择在指定时间之前的任何状态的作业。如果使用 -s 选项给出了状态,则返回在此期间处于该状态的作业。有关如何确定 --starttime 和 --endtime 的默认值的详细信息,请参见下面的 默认时间窗口 部分。

有效的时间格式为:
HH:MM[:SS][AM|PM]
MMDD[YY][-HH:MM[:SS]]
MM.DD[.YY][-HH:MM[:SS]]
MM/DD[/YY][-HH:MM[:SS]]
YYYY-MM-DD[THH:MM[:SS]]
today, midnight, noon, elevenses (11 AM), fika (3 PM), teatime (4 PM)
now[{+|-}count[seconds(default)|minutes|hours|days|weeks]]

--env-vars
此选项将打印批处理作业的运行环境,否则输出 'NONE'。
注意: 需要 AccountingStoreFlags=job_env。
注意: 需要使用 '-j' 请求特定作业。

--expand-patterns
展开 StdOutStdErrStdIn 中的任何文件名模式。映射到值范围的字段将使用范围的第一个值。例如,任务 ID 的 "%t" 将被替换为 "0"。

--federation
如果是联邦的成员,则显示来自联邦的作业。

-f, --file=<file>
使 sacct 命令从指定的 file 中读取作业会计数据,而不是当前的 Slurm 作业会计日志文件。仅在运行 jobcomp/filetxt 插件时适用。设置此标志隐式启用 -c 标志。

-F, --flags=<flag_list>
以逗号分隔的列表,用于根据作业处理的不同方式过滤作业。当前标志为 SchedSubmit、SchedMain、SchedBackfill 和 StartReceived。SchedSubmit、SchedMain、SchedBackfill 描述了启动作业的调度程序。

-o, --format
以逗号分隔的字段列表。(使用 "--helpformat" 获取可用字段列表)。

注意: 使用格式选项列出各种字段时,您可以在后面加上 %NUMBER 以指定应打印多少个字符。

例如,格式=name%30 将打印字段名称的 30 个字符,右对齐。%-30 将打印 30 个字符,左对齐。

设置后,SACCT_FORMAT 环境变量将覆盖默认格式。例如:

SACCT_FORMAT="jobid,user,account,cluster"

-g, --gid=, --group=<gid_or_group_list>
仅显示以指定的 GID 或 GROUP 启动的作业的统计信息,gid_listgroup_list 操作数是以逗号分隔的列表。不允许有空格字符。默认是没有限制。

-h, --help
显示一般帮助信息。

-e, --helpformat
打印可以通过 --format 选项指定的字段列表。

可用字段:

Account             AdminComment        AllocCPUS           AllocNodes
AllocTRES           AssocID             AveCPU              AveCPUFreq
AveDiskRead         AveDiskWrite        AvePages            AveRSS
AveVMSize           BlockID             Cluster             Comment
Constraints         ConsumedEnergy      ConsumedEnergyRaw   Container
CPUTime             CPUTimeRAW          DBIndex             DerivedExitCode
Elapsed             ElapsedRaw          Eligible            End
ExitCode            Extra               FailedNode          Flags
GID                 Group               JobID               JobIDRaw
JobName             Layout              Licenses            MaxDiskRead
MaxDiskReadNode     MaxDiskReadTask     MaxDiskWrite        MaxDiskWriteNode
MaxDiskWriteTask    MaxPages            MaxPagesNode        MaxPagesTask
MaxRSS              MaxRSSNode          MaxRSSTask          MaxVMSize
MaxVMSizeNode       MaxVMSizeTask       McsLabel            MinCPU
MinCPUNode          MinCPUTask          NCPUS               NNodes
NodeList            NTasks              Partition           Planned
PlannedCPU          PlannedCPURAW       Priority            QOS
QOSRAW              QOSREQ              Reason              ReqCPUFreq
ReqCPUFreqGov       ReqCPUFreqMax       ReqCPUFreqMin       ReqCPUS
ReqMem              ReqNodes            ReqTRES             ReqReservation
Reservation         ReservationId       Restarts            SegmentSize
SLUID               Start               State               StdErr
StdIn               StdOut              Submit              SubmitLine
Suspended           SystemComment       SystemCPU           Timelimit
TimelimitRaw        TotalCPU            TRESUsageInAve      TRESUsageInMax
TRESUsageInMaxNode  TRESUsageInMaxTask  TRESUsageInMin      TRESUsageInMinNode
TRESUsageInMinTask  TRESUsageInTot      TRESUsageOutAve     TRESUsageOutMax
TRESUsageOutMaxNode TRESUsageOutMaxTask TRESUsageOutMin     TRESUsageOutMinNode
TRESUsageOutMinTask TRESUsageOutTot     UID                 User
UserCPU             WCKey               WCKeyID             WorkDir

注意: 当与 Ave[RSS|VM]Size 或其在 TRESUsageIn[Ave|Tot] 中的值一起使用时。它们表示在步骤中所有排名的最高水位线的平均/总数。当使用 sstat 时,它们表示命令运行时的平均/总数。

注意: TRESUsage*Min* 值表示步骤中的最低高水位线。

注意: 指标的可用性依赖于使用的 jobacct_gather 插件。例如,jobacct_gather/cgroup 与 cgroup/v2 结合使用时,由于内核 cgroup 接口的限制,不提供虚拟内存指标,并且相关字段将显示为 0。

标题为 "作业会计字段" 的部分描述了这些字段。

-j, --jobs=<job[.step]>
显示指定的 job[.step] 或 job[.step] 列表的信息。

job[.step] 参数是以逗号分隔的作业列表。 此列表中不允许有空格字符。
注意: 步骤 ID 为 'batch' 将显示有关批处理步骤的信息。
默认情况下,sacct 仅显示具有可用时间的作业,但使用此选项时,非可用的作业也将显示。
注意: 如果还指定了 --state,则由于非可用的作业不是 PD,因此不会显示非可用的作业。 有关此选项如何更改 --starttime 和 --endtime 的默认值的详细信息,请参见下面的 默认时间窗口 部分。

--json, --json=list, --json=<data_parser>
使用默认数据解析插件或显式数据解析器及参数将作业信息转储为 JSON。排序和格式化参数将被忽略。

--local
仅显示本集群的作业。忽略此联邦中的其他集群(如果有)。覆盖 --federation。

-l, --long
相当于指定:

--format=jobid,jobidraw,jobname,partition,maxvmsize,maxvmsizenode, maxvmsizetask,avevmsize,maxrss,maxrssnode,maxrsstask,averss,maxpages, maxpagesnode,maxpagestask,avepages,mincpu,mincpunode,mincputask,avecpu,ntasks, alloccpus,elapsed,state,exitcode,avecpufreq,reqcpufreqmin,reqcpufreqmax, reqcpufreqgov,reqmem,consumedenergy,maxdiskread,maxdiskreadnode,maxdiskreadtask, avediskread,maxdiskwrite,maxdiskwritenode,maxdiskwritetask,avediskwrite, reqtres,alloctres,tresusageinave,tresusageinmax, tresusageinmaxn,tresusageinmaxt,tresusageinmin,tresusageinminn,tresusageinmint, tresusageintot,tresusageoutmax,tresusageoutmaxn, tresusageoutmaxt,tresusageoutave,tresusageouttot

--name=<jobname_list>
显示具有这些名称的作业。

-i, --nnodes=<min[-max]>
返回在指定数量的节点上运行的作业。

-I, --ncpus=<min[-max]>
返回在指定数量的 CPU 上运行的作业。

--noconvert
不要将单位从其原始类型转换(例如,2048M 不会转换为 2G)。

-N, --nodelist=<node_list>
显示在这些节点上运行的作业。node_list 可以是一个范围字符串。

注意: 当节点在作业运行时被添加或移除时,这不是可靠的。仅返回在指定时间范围内启动的作业 (-S, -E)。

-n, --noheader
输出中将不添加标题。默认操作是显示标题。

-p, --parsable
输出将以 '|' 分隔,末尾带有 '|'。另请参见 --delimiter 选项。

-P, --parsable2
输出将以 '|' 分隔,末尾不带 '|'。另请参见 --delimiter 选项。

-r, --partition
以逗号分隔的分区列表,用于选择作业和作业步骤。默认是所有分区。

-q, --qos
仅发送有关使用这些 QoS 的作业的数据。默认是所有。

-R, --reason=<reason_list>
以逗号分隔的列表,用于根据作业未在外部资源/优先级中调度的原因过滤作业。

-S, --starttime
选择在指定时间之后的任何状态的作业。默认是当前日期的 00:00:00,除非使用了 '-s' 或 '-j' 选项。如果使用了 '-s' 选项,则默认值为 'now'。如果使用 '-s' 选项给出了状态,则仅返回在此时间处于该状态的作业。如果使用 '-j' 选项,则默认时间为 Unix 纪元 0。有关如何确定 --starttime 和 --endtime 的默认值的详细信息,请参见下面的 默认时间窗口 部分。

有效的时间格式为:
HH:MM[:SS][AM|PM]
MMDD[YY][-HH:MM[:SS]]
MM.DD[.YY][-HH:MM[:SS]]
MM/DD[/YY][-HH:MM[:SS]]
YYYY-MM-DD[THH:MM[:SS]]
today, midnight, noon, elevenses (11 AM), fika (3 PM), teatime (4 PM)
now[{+|-}count[seconds(default)|minutes|hours|days|weeks]]

-s, --state=<state_list>
根据给定时间段内的状态选择作业。除非另有说明,否则开始和结束时间将是指定 --state 选项时的当前时间,并且只能显示当前正在运行的作业。必须指定开始和/或结束时间以查看当前未运行的作业的信息。 有关状态设计符的列表,请参见下面的 作业状态代码 部分。可以使用逗号分隔符指定多个状态名称。可以使用状态名称的短格式或长格式(例如 CACANCELLED),并且名称不区分大小写(即 ca 和 CA 都有效)。

注意: 注意,要选择处于 PENDING 状态的作业,必须在请求的时间间隔内具有 "EligibleTime" 或与 "Unknown" 不同。"EligibleTime" 由 "scontrol show job" 命令显示。例如,使用 "--hold" 选项提交的作业将具有 "EligibleTime=Unknown",因为它们无限期待定。

注意: 在指定状态时,如果未给出开始时间,则默认开始时间为 'now'。这仅在未使用 -j 时适用。如果使用 -j,则开始时间将默认为 'Epoch'。在这两种情况下,如果未给出结束时间,则默认为 'now'。有关如何确定 --starttime 和 --endtime 的默认值的详细信息,请参见下面的 默认时间窗口 部分。

-K, --timelimit-max
单独忽略,但如果设置了 timelimit_min,则这是范围的最大时间限制。默认是没有限制。

-k, --timelimit-min
仅发送有关具有此时间限制的作业的数据。如果与 timelimit_max 一起使用,则这是范围的最小时间限制。默认是没有限制。

-T, --truncate
截断时间。因此,如果作业在 --starttime 之前启动,则开始时间将被截断为 --starttime。结束时间和 --endtime 也是如此。

-u, --uid=, --user=<uid_or_user_list>
使用此以逗号分隔的 UID 或用户名列表选择要显示的作业。默认情况下,使用运行用户的 UID。

--units=[KMGTP]
以指定的单位类型显示值。优先于 --noconvert 选项。

--usage
显示命令使用摘要。

--use-local-uid
在显示 UID 时,sacct 默认使用存储在 Slurm 会计数据库中的 UID。使用此命令使 Slurm 使用系统调用从用户名获取 UID。此选项在具有多个集群和一个数据库的环境中可能有用,其中 UID 在所有集群上并不相同。

-v, --verbose
主要用于调试目的,报告处理过程中各种变量的状态。

-V, --version
打印版本。

-W, --wckeys=<wckey_list>
仅显示在由 wckey_list 操作数指定的 wckeys 上启动的作业的统计信息,wckey_list 是以逗号分隔的 wckey 名称列表。wckey_list 中不允许有空格字符。默认是所有 wckeys。

--whole-hetjob[=yes|no]
在使用 --jobs 查询和过滤异构作业时,如果选择了 het_job_id(领导 ID),Slurm 将默认检索有关作业的所有组件的信息。如果选择了非领导的异构作业组件 ID,则仅检索该组件的信息。可以通过使用此选项更改此行为。如果设置为 'yes'(或没有参数),则无论在作业过滤中选择哪个组件,都将检索有关所有组件的信息。如果设置为 'no',则仅检索所选的异构作业组件,即使在选择领导时也是如此。

--yaml, --yaml=list, --yaml=<data_parser>
使用默认数据解析插件或显式数据解析器及参数将作业信息转储为 YAML。排序和格式化参数将被忽略。

 

作业会计字段

每个字段选项的描述可以在下面找到。请注意,Ave*、Max* 和 Min* 会计字段查看每个作业步骤中所有任务的值,并返回该作业步骤的任务的平均值、最大值或最小值。例如,对于 MaxRSS,返回的值是步骤中某个任务的最大内存消耗,而 MaxRSSTask 显示的是该任务。
ALL
打印下面列出的所有字段。

Account
作业运行的账户。

AdminComment
必须由管理员、SlurmUser 或 root 设置的作业评论字符串。

AllocCPUs
分配的 CPU 数量。等同于 NCPUS

AllocNodes
分配给作业/步骤的节点数量。如果作业待定,则为 0。

AllocTres
可跟踪资源。这些是作业/步骤在开始运行后分配的资源。对于待定作业,这应该是空白的。有关更多详细信息,请参见 slurm.conf 中的 AccountingStorageTRES。

注意: 当通用资源配置了 no_consume 标志时,分配将以零打印。

AssocID
用户、账户和集群的关联参考。

AveCPU
作业中所有任务的平均(系统 + 用户)CPU 时间。

AveCPUFreq
作业中所有任务的平均加权 CPU 频率,以 kHz 为单位。

AveDiskRead
作业中所有任务平均读取的字节数。

AveDiskWrite
作业中所有任务平均写入的字节数。

AvePages
作业中所有任务的平均页面错误数。

AveRSS
作业中所有任务的平均常驻集大小。

AveVMSize
作业中所有任务的平均虚拟内存大小。

BlockID
要使用的块的名称(用于蓝基因系统)。

Cluster
集群名称。

Comment
当 slurm.conf 文件中的 AccountingStoreFlags 参数包含 'job_comment' 时,作业的评论字符串。可以通过调用 sacctmgr modify job 或专门的 sjobexitmod 命令来修改评论字符串。

Constraints
作业请求的特性作为约束。

ConsumedEnergy
作业中所有任务消耗的总能量,以焦耳为单位。值可能包括单位前缀(K、M、G、T、P)。注意:仅在独占作业分配的情况下,此值反映作业的实际能耗。

ConsumedEnergyRaw
作业中所有任务消耗的总能量,以焦耳为单位。注意:仅在独占作业分配的情况下,此值反映作业的实际能耗。

Container
请求的 OCI 容器包的路径。

CPUTime
作业或步骤使用的时间(经过的时间 * CPU 数量),格式为 HH:MM:SS。

CPUTimeRAW
作业或步骤使用的时间(经过的时间 * CPU 数量),以 CPU 秒为单位。

DBIndex
作业表中条目的唯一数据库索引。

DerivedExitCode
作业步骤(srun 调用)返回的最高退出代码。冒号后是导致进程终止的信号(如果是由信号终止)。DerivedExitCode 可以通过调用 sacctmgr modify job 或专门的 sjobexitmod 命令进行修改。

Elapsed
作业的经过时间。

此字段输出的格式如下:

[DD-[HH:]]MM:SS
由以下内容定义:
DD

hh
小时

mm
分钟

ss

ElapsedRaw
作业的经过时间,以秒为单位。

Eligible
作业的可用时间。
OPT_Eligible
作业变得可以运行的时间。格式与结束相同。

结束
作业的终止时间。输出格式为YYYY-MM-DDTHH:MM:SS,除非通过SLURM_TIME_FORMAT环境变量更改。

退出代码
作业脚本或salloc返回的退出代码,通常由exit()函数设置。冒号后面是导致进程终止的信号(如果是由信号终止)。

额外
当slurm.conf文件中的AccountingStoreFlags参数包含'job_extra'时,作业的额外字符串。可以通过调用sacctmgr modify job命令修改额外字符串。

失败节点
导致作业被杀死的节点名称。

标志
作业标志。当前标志为SchedSubmit、SchedMain、SchedBackfill。

GID
运行作业的用户的组标识符。

运行作业的用户的组名。

作业ID
作业或作业步骤的识别号。

常规作业的形式为:

JobID[.JobStep]

数组作业的形式为:

ArrayJobID_ArrayTaskID

异构作业的形式为:

HetJobID+HetJobOffset

在打印作业数组时,当指定单个作业ID时,对于具有大量作业的系统,命令的性能可以显著提高。默认情况下,此字段大小限制为64字节。使用环境变量SLURM_BITSTR_LEN指定更大的字段大小。

原始作业ID
作业或作业步骤的识别号。以JobID[.JobStep]的形式打印常规、异构和数组作业的JobID。

作业名称
作业或作业步骤的名称。slurm_accounting.log文件是一个以空格分隔的文件。因此,如果作业名称中使用了空格,则在记录写入会计文件之前,空格将被替换为下划线。因此,当sacct显示作业名称时,原本包含空格的作业名称将用下划线替代空格。

布局
作业步骤运行时的布局。这可以用来让你了解哪个节点在你的作业中运行了哪个等级。

最大磁盘读取
作业中所有任务读取的最大字节数。

最大磁盘读取节点
发生最大磁盘读取的节点。

最大磁盘读取任务
发生最大磁盘读取的任务ID。

最大磁盘写入
作业中所有任务写入的最大字节数。

最大磁盘写入节点
发生最大磁盘写入的节点。

最大磁盘写入任务
发生最大磁盘写入的任务ID。

最大页面错误
作业中所有任务的最大页面错误数。

最大页面错误节点
发生最大页面错误的节点。

最大页面错误任务
发生最大页面错误的任务ID。

最大RSS
作业中所有任务的最大常驻集大小。

最大RSS节点
发生最大RSS的节点。

最大RSSTask
发生最大RSS的任务ID。

最大虚拟内存大小
作业中所有任务的最大虚拟内存大小。

最大虚拟内存大小节点
发生最大虚拟内存大小的节点。

最大虚拟内存大小任务
发生最大虚拟内存大小的任务ID。

MCS标签
与作业相关的多类别安全(MCS)标签。当在slurm.conf中启用MCSPlugin时,添加到作业中。

最小CPU
作业中所有任务的最小(系统+用户)CPU时间。

最小CPU节点
发生最小CPU的节点。

最小CPU任务
发生最小CPU的任务ID。

NCPUS
分配给作业的CPU总数。等同于AllocCPUS

NNodes
作业或步骤中的节点数量。如果作业正在运行或已运行,则此计数为分配的数量,否则为请求的数量。

节点列表
作业/步骤中的节点列表。

NTasks
作业或步骤中的任务总数。

分区
标识作业运行的分区。

计划
此作业的计划使用的墙钟时间。根据作业从可运行时间等待到开始或被取消的时间得出。格式与经过时间相同。

计划CPU
此作业的计划使用的CPU秒数。格式与经过时间相同。

计划CPU原始
此作业的计划使用的CPU秒数。格式为处理器秒。

优先级
Slurm优先级。

QOS
服务质量名称。

QOS原始
服务质量的数字ID。

QOS请求
作业请求的服务质量列表。

原因
作业因非优先级或资源原因被阻止运行的最后原因。即使作业成功完成,这也将保存在数据库中。

请求CPU频率
步骤请求的CPU频率,单位为kHz。注意:此值仅适用于作业步骤。作业没有报告值。

请求CPU频率治理
步骤请求的CPU频率治理,单位为kHz。注意:此值仅适用于作业步骤。作业没有报告值。

请求CPU频率最大值
步骤请求的最大CPU频率,单位为kHz。注意:此值仅适用于作业步骤。作业没有报告值。

请求CPU频率最小值
步骤请求的最小CPU频率,单位为kHz。注意:此值仅适用于作业步骤。作业没有报告值。

请求CPU
请求的CPU数量。

请求内存
作业所需的最小内存。可能会附加一个字母表示单位(M表示兆字节,G表示千兆字节等)。注意:此值仅来自作业分配,而不是步骤。

请求节点
作业/步骤请求的最小节点数。

请求可跟踪资源
可跟踪资源。这些是作业/步骤在提交时请求的最小资源数量。有关更多详细信息,请参见slurm.conf中的AccountingStorageTRES。

请求预留
作业请求的预留名称的逗号分隔列表。

预留
预留名称。

预留ID
预留ID。

重启次数
此作业被重新排队/重启的次数。

段大小
当使用块拓扑时,这是用于创建作业分配的段的大小。

开始
作业的启动时间。格式与结束相同。

状态
显示作业状态或状态。请参见下面的作业状态代码部分以获取可能状态的列表。

如果作业状态的信息比当前字段宽度能容纳的更多(例如,取消作业的UID),状态后面将跟随一个“+”。您可以使用之前描述的“%NUMBER”格式修饰符来增加显示状态的大小。

注意:运行状态将返回挂起的作业。为了打印挂起的作业,您必须在与运行状态不同的调用中请求挂起状态。

注意:运行状态将返回在请求的时间段内完成的任何作业(取消或其他),因为作业在该时间段内也处于运行状态。如果您只想查找已完成的作业,请选择适当的状态,而不包括运行状态。

标准错误
显示在作业或作业步骤中指定的标准错误重定向的“文件名模式”。路径通配符不会被替换,将以原始批处理提交中定义的方式显示。

标准输入
显示在作业或作业步骤中指定的标准输入重定向的“文件名模式”。路径通配符不会被替换,将以原始批处理提交中定义的方式显示。

标准输出
显示在作业或作业步骤中指定的标准输出重定向的“文件名模式”。路径通配符不会被替换,将以原始批处理提交中定义的方式显示。

提交
作业提交的时间。格式与结束相同。

注意:如果作业被重新排队,提交时间将被重置。要获取原始提交时间,必须使用-D或--duplicate选项显示作业的所有重复条目。

提交行
提交作业时发出的完整命令。

挂起
作业或作业步骤被挂起的时间。格式与经过时间相同。

系统注释
作业的注释字符串,通常由插件设置。只能由Slurm管理员修改。

系统CPU
作业或作业步骤使用的系统CPU时间。格式与经过时间相同。

注意:有关如何处理已取消作业的信息,请参见总CPU的说明。

时间限制
作业或作业步骤的时间限制是什么。格式与经过时间相同,但可以显示两个额外的特殊值:
分区限制
指示作业没有设置时间限制,并且尚未受到分区最大时间的限制(即作业待处理)。您可以在分区上定义默认时间以避免看到此值。
无限制
指示作业没有定义时间限制。

原始时间限制
作业或作业步骤的时间限制是什么。格式为分钟数。注意:请参见时间限制描述。

总CPU
作业或作业步骤使用的系统CPU和用户CPU时间的总和。作业的总CPU时间可能超过作业的经过时间,尤其是对于包含多个作业步骤的作业。格式与经过时间相同。

注意:对于被信号中断的步骤(例如scancel、作业超时),总CPU提供任务的父进程的度量,可能不包括子进程的CPU时间。这是由于wait3资源使用(getrusage)的内部机制。对于以常规方式完成的进程,所有后代进程(分叉和执行)的资源都包括在内。然而,如果进程被杀死,结果可能在proctrack插件和最终用户应用程序之间有所不同。

Tres使用平均值
作业中所有任务的Tres平均使用量。注意:如果相应的TresUsageInMaxTask为-1,则该度量是以节点为中心,而不是以任务为中心。

Tres使用最大值
作业中所有任务的Tres最大使用量。注意:如果相应的TresUsageInMaxTask为-1,则该度量是以节点为中心,而不是以任务为中心。

Tres使用最大节点
每个最大TRES使用量发生的节点。

Tres使用最大任务
每个最大TRES使用量发生的任务。

Tres使用最小值
作业中所有任务的Tres最小使用量。注意:如果相应的TresUsageInMinTask为-1,则该度量是以节点为中心,而不是以任务为中心。

Tres使用最小节点
每个最小TRES使用量发生的节点。

Tres使用最小任务
每个最小TRES使用量发生的任务。

Tres使用总量
作业中所有任务的Tres总使用量。

Tres使用输出平均值
作业中所有任务的Tres输出平均使用量。注意:如果相应的TresUsageOutMaxTask为-1,则该度量是以节点为中心,而不是以任务为中心。

Tres使用输出最大值
作业中所有任务的Tres输出最大使用量。注意:如果相应的TresUsageOutMaxTask为-1,则该度量是以节点为中心,而不是以任务为中心。

Tres使用输出最大节点
每个最大TRES输出使用量发生的节点。

Tres使用输出最大任务
每个最大TRES输出使用量发生的任务。

Tres使用输出最小值
作业中所有任务的Tres输出最小使用量。

Tres使用输出最小节点
每个最小TRES输出使用量发生的节点。

Tres使用输出最小任务
每个最小TRES输出使用量发生的任务。

Tres使用输出总量
作业中所有任务的Tres输出总使用量。

UID
运行作业的用户的用户标识符。

用户
运行作业的用户的用户名。

用户CPU
作业或作业步骤使用的用户CPU时间。格式与经过时间相同。

注意:有关如何处理已取消作业的信息,请参见总CPU的说明。

工作负载特征键
工作负载特征键。用于将正交账户分组在一起的任意字符串。

工作负载特征键ID
对wckey的引用。

工作目录
作业用于执行命令的目录。

 

作业状态代码

以下状态被sacct识别。可能状态的完整列表可在<https://slurm.schedmd.com/job_state_codes.html>找到。

BF 启动失败
由于启动失败而终止作业,通常是由于硬件故障(例如,无法启动节点或块,作业无法重新排队)。

CA 已取消
作业被用户或系统管理员显式取消。作业可能已启动,也可能未启动。

CD 已完成
作业在所有节点上以退出代码为零终止了所有进程。

DL 截止日期
作业在截止日期时终止。

F 失败
作业以非零退出代码或其他失败条件终止。

NF 节点失败
由于一个或多个分配节点的故障而终止作业。

OOM 内存不足
作业遇到内存不足错误。

PD 待处理
作业正在等待资源分配。

PR 被抢占
作业因抢占而终止。

R 正在运行
作业当前有分配。

RQ 重新排队
作业被重新排队。

RS 正在调整大小
作业即将改变大小。

RV 被撤销
由于其他集群启动作业,兄弟节点被移除。

S 挂起
作业有分配,但执行已被挂起,CPU已释放给其他作业。

TO 超时
作业在达到时间限制时终止。

 

默认时间窗口

选项--starttime和--endtime定义了sacct将要搜索的时间窗口。出于历史和实际原因,它们的默认值(即默认时间窗口)取决于其他选项:--jobs和--state。

根据是否指定了--jobs和/或--state,--starttime--endtime选项的默认值为:

未指定--jobs--state
--starttime默认为午夜。
--endtime默认为现在。

指定了--jobs且未指定--state
--starttime默认为Epoch 0。
--endtime默认为现在。

未指定--jobs且指定了--state
--starttime默认为现在。
--endtime默认为--starttime,如果未指定--starttime,则默认为现在。

同时指定了--jobs--state
--starttime默认为Epoch 0。
--endtime默认为--starttime,如果未指定--starttime,则默认为现在。

注意:使用-v/--verbose时,将显示有关实际使用的时间窗口的消息。

 

性能

执行sacct会向slurmdbd发送远程过程调用。如果来自sacct或其他向slurmdbd守护进程发送远程过程调用的Slurm客户端命令的调用过于频繁,可能会导致slurmdbd守护进程的性能下降,甚至可能导致服务拒绝。

请勿在shell脚本或其他程序的循环中运行sacct或其他发送远程过程调用到slurmdbd的Slurm客户端命令。确保程序将对sacct的调用限制为收集所需信息的最小数量。

 

环境变量

某些sacct选项可以通过环境变量设置。这些环境变量及其对应的选项列在下面。(注意:命令行选项将始终覆盖这些设置。)

SACCT_FEDERATION
--federation相同。

SACCT_FORMAT
允许您定义输出中显示的列。与--format相同。

SACCT_LOCAL
--local相同。

SLURM_BITSTR_LEN
指定用于保存作业数组任务ID表达式的字符串长度。默认值为64字节。值为0将打印所需长度的完整表达式。较大的值可能会对应用程序性能产生不利影响。

SLURM_CONF
Slurm配置文件的位置。

SLURM_DEBUG_FLAGS
指定sacct使用的调试标志。有关完整的标志列表,请参见slurm.conf(5)手册页。环境变量优先于slurm.conf中的设置。

SLURM_JSON
控制JSON序列化:
紧凑
尽可能紧凑地输出JSON。

美观
以美观的格式输出JSON,以使其更易读。

SLURM_TIME_FORMAT
指定用于报告时间戳的格式。值标准(默认值)生成形式为“年-月-日Thour:minute:second”的输出。值相对仅在当前日期返回“hour:minute:second”。对于当前年份的其他日期,它打印“hour:minute”,前面加上“明天”(tomorrow)、“昨天”(yesterday)、即将到来的星期几的名称(例如“周一”、“周二”等),否则返回日期(例如“4月25日”)。对于其他年份,它返回没有时间的日期、月份和年份(例如“2012年6月6日”)。所有时间戳使用24小时格式。

还可以指定有效的strftime()格式。例如,值“%a %T”将报告星期几和时间戳(例如“周一 12:34:56”)。

SLURM_YAML
控制YAML序列化:
紧凑 尽可能紧凑地输出YAML。

美观 以美观的格式输出YAML,以使其更易读。

 

示例

此示例说明了sacct命令的默认调用:

# sacct
作业ID      作业名称    分区    账户 分配CPU 状态     退出代码
---------- ---------- ---------- ---------- ---------- ---------- --------
2          script01   srun       acct1               1 RUNNING           0
3          script02   srun       acct1               1 RUNNING           0
4          endscript  srun       acct1               1 RUNNING           0
4.0                   srun       acct1               1 COMPLETED         0

此示例显示了相同的作业会计信息,使用简要选项。

# sacct --brief
     作业ID     状态  退出代码
---------- ---------- --------
2          RUNNING           0
3          RUNNING           0
4          RUNNING           0
4.0        COMPLETED         0

# sacct --allocations
作业ID      作业名称    分区  账户    分配CPU  状态     退出代码
---------- ---------- ---------- ---------- ------- ---------- --------
3          sja_init   andy       acct1            1 COMPLETED         0
4          sjaload    andy       acct1            2 COMPLETED         0
5          sja_scr1   andy       acct1            1 COMPLETED         0
6          sja_scr2   andy       acct1           18 COMPLETED         2
7          sja_scr3   andy       acct1           18 COMPLETED         0
8          sja_scr5   andy       acct1            2 COMPLETED         0
9          sja_scr7   andy       acct1           90 COMPLETED         1
10         endscript  andy       acct1          186 COMPLETED         0

此示例演示了自定义sacct命令输出的能力。字段按照命令行中指定的顺序显示。

# sacct --format=jobid,elapsed,ncpus,ntasks,state
     作业ID    经过时间      Ncpus   Ntasks     状态
---------- ---------- ---------- -------- ----------
3            00:01:30          2        1 COMPLETED
3.0          00:01:30          2        1 COMPLETED
4            00:00:00          2        2 COMPLETED
4.0          00:00:01          2        2 COMPLETED
5            00:01:23          2        1 COMPLETED
5.0          00:01:31          2        1 COMPLETED

此示例演示了在与-S(--starttime)和-E(--endtime)一起使用时使用-T(--truncate)选项的效果。当使用-T选项时,如果作业在指定时间之前启动,则作业的开始时间将是指定的-S值,否则时间将是作业的开始时间。结束时间将是指定的-E选项,如果作业在指定时间之后结束,否则将是作业的结束时间。

如果不使用-T(正常操作),sacct输出将如下所示。

# sacct -S2014-07-03-11:40 -E2014-07-03-12:00 -X -ojobid,start,end,state
    JobID                 Start                  End        State
--------- --------------------- -------------------- ------------
2         2014-07-03T11:33:16   2014-07-03T11:59:01   COMPLETED
3         2014-07-03T11:35:21   Unknown               RUNNING
4         2014-07-03T11:35:21   2014-07-03T11:45:21   COMPLETED
5         2014-07-03T11:41:01   Unknown               RUNNING

通过添加 -T 选项,作业的开始和结束时间将被截断,仅反映请求的时间。如果作业在请求的开始时间之后开始或在请求的结束时间之前结束,则这些时间不会被更改。-T 选项在确定特定时间段内的确切运行时间时非常有用。

# sacct -T -S2014-07-03-11:40 -E2014-07-03-12:00 -X -ojobid,jobname,user,start,end,state
    JobID                 Start                  End        State
--------- --------------------- -------------------- ------------
2         2014-07-03T11:40:00   2014-07-03T11:59:01   COMPLETED
3         2014-07-03T11:40:00   2014-07-03T12:00:00   RUNNING
4         2014-07-03T11:40:00   2014-07-03T11:45:21   COMPLETED
5         2014-07-03T11:41:01   2014-07-03T12:00:00   RUNNING

注意: 如果没有给出 -s (--state) 选项,sacct 将显示在指定时间段内符合条件的作业,否则它将返回在该时间段内处于请求状态的作业。

这个例子演示了在同一时间段内使用和不使用 --state 标志运行 sacct 的区别。没有 --state 选项时,显示该时间段内的所有符合条件的作业。

# sacct -S11:20:00 -E11:25:00 -X -ojobid,start,end,state
       JobID               Start                 End      State
------------ ------------------- ------------------- ----------
2955                    11:15:12            11:20:12  COMPLETED
2956                    11:20:13            11:25:13  COMPLETED

使用 --state=pending 选项时,仅会显示作业 2956,因为它依赖于 2955,并且从 11:20:00 到 11:21:13 仍处于 PENDING 状态。请注意,尽管我们请求了 PENDING 作业,但状态显示为 COMPLETED,因为这是作业的当前状态。

# sacct --state=pending -S11:20:00 -E11:25:00 -X -ojobid,start,end,state
       JobID               Start                 End      State
------------ ------------------- ------------------- ----------
2956                    11:20:13            11:25:13  COMPLETED

 

复制

版权所有 (C) 2005-2007 惠普开发公司 L.P.
版权所有 (C) 2008-2010 劳伦斯利弗莫尔国家实验室。 在劳伦斯利弗莫尔国家实验室制作 (参见免责声明)。
版权所有 (C) 2010-2022 SchedMD LLC。

该文件是 Slurm 的一部分,这是一个资源管理程序。 有关详细信息,请参见 <https://slurm.schedmd.com/>。

Slurm 是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的第 2 版,或(根据您的选择)任何更高版本。

Slurm 的发布是希望它会有用,但不提供任何保证;甚至没有对适销性或特定用途适用性的隐含保证。有关更多详细信息,请参见 GNU 通用公共许可证。

 

文件

/etc/slurm.conf
此文件中的条目启用作业计费并指定收集系统作业计费的作业计费日志文件。

/var/log/slurm_accounting.log
默认的作业计费日志文件。 默认情况下,此文件仅对 root 设置为读写权限。

 

另见

sstat(1), ps (1), srun(1), squeue(1), getrusage (2), time (2)


 

索引

名称
概要
描述
选项
作业计费字段
作业状态代码
默认时间窗口
性能
环境变量
示例
复制
文件
另见

此文档由 man2html 使用手册页创建。
时间: 2025年7月2日 13:21:56 GMT