将
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
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 内存而被终止。
更新答案:
在我最初回答几年后,一位朋友向我指出
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 show job 36514
这将为您提供如下输出:
JobId=36537 JobName=sbatch
UserId=username(123456) GroupId=my_group(678)
......
WorkDir=/path/to/work/dir
但是,默认情况下,scontrol
只能在作业完成后约五分钟内访问该信息,之后将从内存中清除。
sstat -j $SLURM_JOB_ID.batch --format=JobID,MaxVMSize