0

我正在使用 IBM LSF 并尝试在某个时间段内获取使用情况统计信息。我发现可以bhist完成这项工作,但简短的bhist输出并没有显示我需要的所有字段。

我想知道的是:

  1. bhist 的输出字段可以自定义吗?我需要的字段是:

    • <工作编号>
    • <用户>
    • <队列>
    • <工作名称>
    • <项目名称>
    • <job_description>
    • <提交时间>
    • <待定时间>
    • <运行时间>
  2. 如果1不可能,长格式 ( bhist -l) 输出会显示我需要的所有内容,但格式很难操作。我粘贴了以下格式的示例。

例如,记录之间的行数不是固定的,每个事件中的自动换行可能会在我试图扫描的单词中间中断行。如何使用sedand解析这种格式awk

JobId <1531>, User <user1>, Project <default>, Command< example200>
Fri Dec 27 13:04:14: Submitted from host <hostA> to Queue <priority>, CWD <$H
                     OME>, Specified Hosts <hostD>;
Fri Dec 27 13:04:19: Dispatched to <hostD>;
Fri Dec 27 13:04:19: Starting (Pid 8920);
Fri Dec 27 13:04:20: Running with execution home </home/user1>, Execution CWD 
                     </home/user1>, Execution Pid <8920>;
Fri Dec 27 13:05:49: Suspended by the user or administrator;
Fri Dec 27 13:05:56: Suspended: Waiting for re-scheduling after being resumed 
                     by user;
Fri Dec 27 13:05:57: Running;
Fri Dec 27 13:07:52: Done successfully. The CPU time used is 28.3 seconds.

Summary of time in seconds spent in various states by Sat Dec 27 13:07:52 1997
PEND  PSUSP  RUN  USUSP  SSUSP  UNKWN  TOTAL
5     0      205  7      1      0      218
------------------------------------------------------------
    .... repeat
4

2 回答 2

0

长格式输出很难解析。我知道在旧 LSF 版本中bjobs有一个未格式化输出(-UF-o

不幸的是,这些选项都不适用于bhist. 历史信息唯一真正的可能性是:

  1. 找出一些解析方法bhist -l——由于您发现的格式不一致,这是不切实际的,甚至可能是不可能的。
  2. 使用 LSF API 编写一个 C 程序来执行您想要的操作,该 API 公开了bhist自身用于解析lsb.events文件的函数。这是存储有关 LSF 集群的所有历史信息的文件,并且是bhist读取以生成其输出的文件。
  3. 如果 C 不适合您,那么您可以尝试编写脚本来lsb.events直接解析文件——格式记录在配置参考中。这很难,但并非不可能。 是 LSF 9.1.3 的相关文档。

我个人的建议是#2 - 您正在寻找的功能是lsb_geteventrec(). 您基本上lsb.events一次阅读每一行并提取您需要的信息。

于 2015-12-17T16:08:23.957 回答
0

我正在添加第二个答案,因为它可能会帮助您解决问题,而无需实际编写自己的解决方案(取决于您所追求的使用统计信息)。

LSF 已经有一个名为的实用程序bacct,可以计算并打印出有关按各种标准过滤的历史 LSF 作业的各种使用统计信息。

例如,要获取有关在 time0 和 time1 之间调度/完成/提交的作业的摘要使用统计信息,您可以使用(分别):

bacct -D time0,time1
bacct -C time0,time1
bacct -S time0,time1

有关特定用户提交的作业的统计信息:

bacct -u <username>

有关提交到特定队列的作业的统计信息:

bacct -q <queuename>

这些选项也可以组合起来,例如,如果您想要关于在特定时间窗口内为特定项目提交和完成的作业的统计信息,您可以使用:

bacct -S time0,time1 -C time0,time1 -P <projectname>

输出提供了一些关于所有符合所提供标准的作业的摘要信息,如下所示:

$ bacct -u bobbafett -q normal

Accounting information about jobs that are: 
  - submitted by users bobbafett, 
  - accounted on all projects.
  - completed normally or exited
  - executed on all hosts.
  - submitted to queues normal, 
  - accounted on all service classes.
------------------------------------------------------------------------------

SUMMARY:      ( time unit: second ) 
 Total number of done jobs:       0      Total number of exited jobs:    32
 Total CPU time consumed:      46.8      Average CPU time consumed:     1.5
 Maximum CPU time of a job:     9.0      Minimum CPU time of a job:     0.0
 Total wait time in queues: 18680.0
 Average wait time in queue:  583.8
 Maximum wait time in queue: 5507.0      Minimum wait time in queue:    0.0
 Average turnaround time:     11568 (seconds/job)
 Maximum turnaround time:     43294      Minimum turnaround time:        40
 Average hog factor of a job:  0.00 ( cpu time / turnaround time )
 Maximum hog factor of a job:  0.02      Minimum hog factor of a job:  0.00
 Total Run time consumed:    351504      Average Run time consumed:   10984
 Maximum Run time of a job: 1844674      Minimum Run time of a job:       0
 Total throughput:             0.24 (jobs/hour)  during  160.32 hours
 Beginning time:       Nov 11 17:55      Ending time:          Nov 18 10:14

这个命令还有一个长格式的输出,它提供了一些bhist -l关于每个作业的类似信息,这些信息可能更容易解析(尽管仍然不是那么容易):

$ bacct -l -u bobbafett -q normal

Accounting information about jobs that are: 
  - submitted by users bobbafett, 
  - accounted on all projects.
  - completed normally or exited
  - executed on all hosts.
  - submitted to queues normal, 
  - accounted on all service classes.
------------------------------------------------------------------------------

Job <101>, User <bobbafett>, Project <default>, Status <EXIT>, Queue <normal>, 
                     Command <sleep 100000000>
Wed Nov 11 17:37:45: Submitted from host <endor>, CWD <$HOME>;
Wed Nov 11 17:55:05: Completed <exit>; TERM_OWNER: job killed by owner.

Accounting information about this job:
     CPU_T     WAIT     TURNAROUND   STATUS     HOG_FACTOR    MEM    SWAP
      0.00     1040           1040     exit         0.0000     0M      0M
------------------------------------------------------------------------------
...
于 2015-12-17T18:44:06.847 回答