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
- 展开 StdOut、StdErr 和 StdIn 中的任何文件名模式。映射到值范围的字段将使用范围的第一个值。例如,任务 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_list 或 group_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 选项时的当前时间,并且只能显示当前正在运行的作业。必须指定开始和/或结束时间以查看当前未运行的作业的信息。
有关状态设计符的列表,请参见下面的 作业状态代码 部分。可以使用逗号分隔符指定多个状态名称。可以使用状态名称的短格式或长格式(例如 CA 或 CANCELLED),并且名称不区分大小写(即 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
-
-
- 由以下内容定义:
常规作业的形式为:
JobID[.JobStep]
数组作业的形式为:
ArrayJobID_ArrayTaskID
异构作业的形式为:
HetJobID+HetJobOffset
在打印作业数组时,当指定单个作业ID时,对于具有大量作业的系统,命令的性能可以显著提高。默认情况下,此字段大小限制为64字节。使用环境变量SLURM_BITSTR_LEN指定更大的字段大小。
如果作业状态的信息比当前字段宽度能容纳的更多(例如,取消作业的UID),状态后面将跟随一个“+”。您可以使用之前描述的“%NUMBER”格式修饰符来增加显示状态的大小。
注意:运行状态将返回挂起的作业。为了打印挂起的作业,您必须在与运行状态不同的调用中请求挂起状态。
注意:运行状态将返回在请求的时间段内完成的任何作业(取消或其他),因为作业在该时间段内也处于运行状态。如果您只想查找已完成的作业,请选择适当的状态,而不包括运行状态。
注意:如果作业被重新排队,提交时间将被重置。要获取原始提交时间,必须使用-D或--duplicate选项显示作业的所有重复条目。
注意:有关如何处理已取消作业的信息,请参见总CPU的说明。
注意:对于被信号中断的步骤(例如scancel、作业超时),总CPU提供任务的父进程的度量,可能不包括子进程的CPU时间。这是由于wait3资源使用(getrusage)的内部机制。对于以常规方式完成的进程,所有后代进程(分叉和执行)的资源都包括在内。然而,如果进程被杀死,结果可能在proctrack插件和最终用户应用程序之间有所不同。
注意:有关如何处理已取消作业的信息,请参见总CPU的说明。
作业状态代码
以下状态被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序列化:
还可以指定有效的strftime()格式。例如,值“%a %T”将报告星期几和时间戳(例如“周一 12:34:56”)。
示例
此示例说明了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