creport#

命令#

creport - 生成与作业相关的报告

概要#

creport [-C time0,time1] [-fcb.acct文件名 …”|cb.acct目录名[+]] [-a应用程序名 …”] [-m主机名 …”] [-P项目名 …”] [-q队列名 …”] [-u用户名 …”] [-G “用户组名…”] [-jjobId …”] [-l] [-p gnuplot输出文件名] [-r 报告类型] [-i 数据点间隔[unit]] [-JSON] [-z en|zh]

creport [-h] [-V]

描述#

根据 AIP 会计和作业事件数据生成与作业相关的报告。

该工具默认以 csv 格式输出数据,以便轻松导入其他工具。它还集成了开源 gnuplot,可以图形化地绘制数据。

它可以生成以下报告。所有报告均基于指定的时间段。

- 已提交的作业数量
- 已完成、已退出或已完成的作业数量
- 等待作业的平均数量
- 已暂停作业的平均数量
- 作业槽位平均使用率

数据可以按以下方式分隔:

- 用户
- 队列
- 项目
- 用户组
- 应用程序名称

还可以通过指定以下范围来缩小报告范围:

- 用户名
- 队列名称
- 项目名称
- 用户组名称
- 应用程序名称
- 主机名
- 时间段

所需环境#

如果您想创建 gnuplot 图表,您需要安装 gnuplot v5 并将 gnuplot 模板文件 bgnu.temp 复制到当前工作目录或 $CB_ENVDIR。

选项#

-h

显示使用信息。如果任何参数有误,也会显示使用信息。

-V

显示版本信息。

-ffile_name …”|path[+]

指定 AIP cb.acct文件名。可以使用引号指定多个文件名,并用空格分隔,例如“cb.acct cb.acct1”。 如果参数是目录路径,则将使用该目录中的所有 cb.acct* 文件。如果参数是目录路径加上“+”字符 (例如 /opt/skyformai/work/data+),则将同时读取该目录中的 cb.acct* 文件以及 cb.events* 文件。

如果未指定此选项,则将使用当前安装的 AIP 环境中的 cb.acct 文件。

-C time0,time1

指定报告时间段。其语法与 bhist 命令中的时间语法相同。如果未指定此选项,则将报告事件或/和会计文件所涵盖的整个时间段。

-a应用程序名 …”

仅缩小指定应用程序名称的报告数据范围。 可以在引号内指定多个应用程序名称,并用空格分隔。应用程序名称在 csub -A 或 csub -app 选项中指定。默认情况下,报告具有任何应用程序名称(包括空应用程序名称)的作业。

-m主机 …”

使用在指定主机上运行的作业的数据。可以在引号内指定多个主机,并用空格分隔。如果未指定,则使用 AIP 系统中的所有主机。

-P项目名 …”

使用具有指定项目的作业的数据。可以在引号内指定多个项目,并用空格分隔。如果未指定,则使用 AIP 系统中的所有项目。

-q队列名 …”

使用在指定队列中运行的作业的数据。可以在引号内指定多个队列,并用空格分隔。如果未指定,则使用 AIP 系统中的所有队列。

-u用户名 …”

使用由指定用户提交的作业的数据。多个用户 可以用引号括起来并用空格分隔。如果未指定,则报告所有运行过作业的用户。

-G用户组名 …”

使用指定用户组运行的作业数据。多个用户组可以用引号括起来并用空格分隔。请注意,会计文件不包含用户组信息,因此无法使用此选项。

-jjobId …”

使用指定作业 ID 的作业数据。多个作业 ID 可以用引号括起来并用空格分隔。对于数组作业,只能指定作业 ID。如果未指定此选项,则将使用 AIP 系统中的所有作业。

-l

列出所有已报告的作业,但不生成报告。

-JSON

输出 JSON 格式。

-z en | zh

选择 JSON 报告语言。“en”为英语,这是默认语言。“zh”为简体中文。

-p gnuplot输出文件路径

使用 gnuplot 生成报告图表

-r 报告类型

指定报告类型。报告类型名称的格式为 “统计项:类别”。

统计项可以是以下名称之一:

  • submit:已提交作业数

  • done:已完成且退出代码为 0 的作业数

  • exited:已退出且退出代码非零的作业数

  • completed:已完成和已退出的作业数

  • run:平均作业槽位ge

  • pending:等待作业的平均数量

  • suspend:暂停作业的平均数量

类别是以下名称之一:

  • user:按用户分类的数据

  • queue:按队列分类的数据

  • project:按项目分类的数据

  • app:按应用名称分类的数据

  • ugroup:按用户组分类的数据

  • all:数据未分类

如果不指定该选项,则默认生成的报告为 “run:all”。

-i interval[unit]

指定两个报告数据之间的时间间隔(以秒为单位)。例如:“-i 3”表示 3 秒。

单位为可选字符。

  • ‘m’:分钟

  • ‘h’:小时

  • ‘d’:天

如果不指定选项,则会自动计算间隔,以便在整个报告周期内生成大约 160 个报告数据点。

使用#

该工具可用于生成多种不同类型的报告。

按用户划分的槽位利用率

命令示例:

creport -r run:user -p run-user.png

报告:用户随时间变化的作业槽位使用情况。此报告显示 AIP 分配给用户的作业槽位随时间变化的份额。 该命令从 AIP 集群中的 cb.acct 文件中读取数据,并调用 gnuplot 生成报告图像文件 run-user.png。

集群槽位利用率

同样,上图也显示了 AIP 集群的运行情况。

图表中的顶线表示随时间变化的作业槽位总数。当有作业运行时,使用率接近 100%。

如果您只想查看集群利用率的输出,而不查看按用户细分的数据,只需运行:

creport -r run -p run.png

或者,如果您想将数据导入电子表格或其他工具,您可以让工具将数据写入标准输出,然后将其捕获到文件中。例如:

creport -r run > run.csv
creport -r run:user > run-user.csv
creport -r run:queue > run-queue.csv

作业吞吐量

要报告 AIP 系统的作业吞吐量,请运行以下命令显示作业完成的速率:

creport -r comp:user -p comp-user.png -i 1h

在上图中,我们看到每小时完成(完成或退出)的作业数量,这实际上就是作业吞吐量。

作业失败

如果您想检查有多少作业以非零状态退出(表示失败),可以运行以下命令:

creport -r exit -C 2024/10/30 -i 1h

这将报告 2024 年 10 月 30 日退出的作业数量,每小时一行。如表 1 所示,您可以以秒、分钟、小时、天 或月为间隔生成类似的统计数据。

调度器性能

通常,当等待作业足够多时,系统中的槽位使用率应该很高。有时,即使有空闲的作业槽位,作业也未进行调度。作业未调度的常见原因之一是资源需求未得到满足。

首先,我们会生成一份按资源需求划分的作业槽位使用情况报告。如果发现有空槽位,我们可能会生成另一份按资源需求划分的等待作业报告。

然后,我们来查看等待作业报告。

如果我们发现在所示时间段内有很多等待作业。

存在等待作业且集群未得到充分利用的事实表明,其他因素阻止了这些作业的调度。我们可能会查看 AIP 配置以进一步调查。

放大感兴趣的时间段

要放大到较小的时间段,请使用 –C 选项指定时间段。要获取更多数据点,您还可以使用 –i 开关缩短报告数据点之间的间隔。允许的最小间隔为 1 秒。

您还可以通过指定队列名称、项目名称、用户名、用户组名称、主机名、作业 ID 或任何组合来缩小数据范围。

时间规范#

-C 选项中的“time0,time1”必须符合以下规定:

time_argument = ptime,ptime | ptime, | ,ptime | itime

ptime = 日 | /日 | 月/ | 年/月/日 | 年/月/日/ | 小时: | 月/日 | 年/月/日/小时: | 年/月/日/小时:分钟 | 日/小时: | 月/日/小时: | 日/小时:分钟 | 小时:分钟 | 月/日/小时:分钟 | -itime

itime = ptime 日、月、小时、分钟 = 两位数字

其中,“ptime”代表特定时间点,“itime”代表特定时间间隔,“.”代表当前 月/日/小时:分钟。

记住以下规则将帮助您自由指定时间:

- 年份必须为 4 位数字,后跟 /
- 月份必须后跟 /
- 日期必须前跟 /
- 小时后必须加 :
- 分钟前必须加 :
- 当 day 单独出现时,day 前的 / 可以省略e 或当 day 后跟 /hour 时:
- 时间格式中不允许有空格,即时间必须为单个字符串。

上述时间格式旨在方便灵活地指定时间。

请参阅以下示例:

假设当前时间为 2025 年 3 月 9 日 17:06:30。

1,8

从 2025 年 3 月 1 日 00:00:00 到 2025 年 3 月 8 日 23:59:00;

,4 或 ,/4

从记录第一个作业的时间到 2025 年 3 月 4 日 23:59:00;

6 或 /6

从 2025 年 3 月 6 日 00:00:00 到 2025 年 3 月 6 日 23:59:00;

2/

从 2025 年 2 月 1 日 00:00:00 到 2025 年 2 月 28 日 23:59:00;

12:

从 2025 年 3 月 9 日 12:00:00 到 2025 年 3 月 9 日 12:59:00;

2/1

从 2025 年 2 月 1 日 00:00:00 到 2025 年 2 月 1 日 23:59:00;

2/1,

从 2 月 1 日 00:00:00 到当前时间;

,. 或 ,

从记录第一个作业的时间到当前时间;

,.-2

从记录第一个作业的时间到 2025 年 3 月 7 日 17:06:30;

,.-2/

从记录第一个作业到 2025 年 1 月 9 日 17:06:30;

,2/10:

从记录第一个作业到 2025 年 3 月 2 日 10:59:00;

2024/11/25,2025/1/25

从 2024 年 11 月 25 日 00:00:00 到 2025 年 1 月 25 日 23:59:00;

限制#

目前,creport 仅使用 AIP 统计和事件数据文件作为信息来源。它有以下限制:

- AIP 统计和事件文件中不包含 AIP 配置信息。该工具无法以百分比形式报告插槽利用率。
- 如果您仅使用 cb.acct(会计文件)作为数据源,则其中没有用户组信息。作业暂停和恢复信息也会缺失。
- 没有作业等待原因的数据。
- 没有系统负载的数据。
- 报告中的时间值为本地时间。如果创建数据的地点与 creport 运行的地点处于不同的时区,请注意时差。例如,对于 11 月 1 日晚上 11:00 在新加坡运行的作业,如果在北美东部标准时间运行报告,则显示为 11 月 1 日上午 10:00。

另请参阅#

cacctcb.acct