如何从 SLURM 获取详细的作业运行信息(例如,LSF 为“标准输出”生成的信息)?

问题描述 投票:0回答:2

bsub
与 LSF 一起使用时,
-o
选项提供了很多详细信息,例如作业何时开始和结束以及作业占用了多少内存和 CPU 时间。使用 SLURM,我得到的标准输出与在没有 LSF 的情况下运行脚本得到的标准输出相同。

例如,给定这个 Perl 6 脚本:

warn  "standard error stream";
say  "standard output stream";

如此提交:

sbatch -o test.o%j -e test.e%j -J test_warn --wrap 'perl6 test.p6'

生成文件

test.o34380
:

Testing standard output

和文件

test.e34380

Testing standard Error  in block <unit> at test.p6:2

使用 LSF,我可以在标准输出文件中获得各种详细信息,例如:
Sender: LSF System <lsfadmin@my_node>
Subject: Job 347511: <test> Done

Job <test> was submitted from host <my_cluster> by user <username> in cluster <my_cluster_act>.
Job was executed on host(s) <my_node>, in queue <normal>, as user <username> in cluster <my_cluster_act>.
</home/username> was used as the home directory.
</path/to/working/directory> was used as the working directory.
Started at Mon Mar 16 13:10:23 2015
Results reported at Mon Mar 16 13:10:29 2015

Your job looked like:

------------------------------------------------------------
# LSBATCH: User input
perl6 test.p6

------------------------------------------------------------

Successfully completed.

Resource usage summary:

    CPU time   :    0.19 sec.
    Max Memory :    0.10 MB
    Max Swap   :    0.10 MB

    Max Processes  :         2
    Max Threads    :         3

The output (if any) follows:

standard output stream

PS:

Read file <test.e_347511> for stderr output of this job.

更新:

一个或多个

-v
标记为
sbatch
可提供更多初步信息,但不会更改标准输出。

更新2:

使用

seff JOBID
获取所需信息(其中 JOBID 是实际数字)。请注意,它每分钟收集一次数据,因此它可能会说您的最大内存使用量为 2.2GB,即使您的作业由于使用超过您请求的 4GB 内存而被终止。

slurm lsf
2个回答
15
投票

更新答案:

在我最初回答几年后,一位朋友向我指出

seff
,这是迄今为止获取此信息的最佳方式:

seff JOBID

请注意,内存消耗不会被持续监控,因此,如果您的作业由于使用过多内存而被终止,那么即使

seff
报告较少,也要知道它确实超出了您的请求。

原答案:
对于最近的工作,请尝试

sacct -l

查看文档的“作业会计字段”部分,了解输出中三打左右列中每一列的说明。

仅获取作业 ID、使用的最大 RAM、最大虚拟内存大小、开始时间、结束时间、CPU 时间(以秒为单位)以及运行作业的节点列表。默认情况下,这仅提供当天运行的作业的信息(请参阅

--starttime

--endtime
 选项以获取其他日期的作业信息):

sacct --format=jobid,MaxRSS,MaxVMSize,start,end,CPUTimeRAW,NodeList
这将为您提供如下输出:

JobID MaxRSS MaxVMSize Start End CPUTimeRAW NodeList ------------ ------- ---------- ------------------- ------------------- ---------- -------- 36511 2015-04-29T11:34:37 2015-04-29T11:34:37 0 c50b-20 36511.batch 660K 181988K 2015-04-29T11:34:37 2015-04-29T11:34:37 0 c50b-20 36514 2015-04-29T12:18:46 2015-04-29T12:18:46 0 c50b-20 36514.batch 656K 181988K 2015-04-29T12:18:46 2015-04-29T12:18:46 0 c50b-20


使用

--state COMPLETED

 检查之前完成的作业。当检查
RUNNING
以外的状态时,您必须给出开始或结束时间。

sacct --starttime 08/01/15 --state COMPLETED --format=jobid,MaxRSS,MaxVMSize,start,end,CPUTImeRaw,NodeList,ReqCPUS,ReqMem,Elapsed,Timelimit


您还可以使用

scontrol

: 获取有关该作业的工作目录

scontrol show job 36514
这将为您提供如下输出:

JobId=36537 JobName=sbatch UserId=username(123456) GroupId=my_group(678) ...... WorkDir=/path/to/work/dir
但是,默认情况下,

scontrol

 只能在作业完成后约五分钟内访问该信息,之后将从内存中清除。


7
投票
在我用来插入的每个作业的末尾

sstat -j $SLURM_JOB_ID.batch --format=JobID,MaxVMSize



将 RAM 使用情况添加到标准输出。

© www.soinside.com 2019 - 2024. All rights reserved.