跳到主要内容

qacct


介绍

qacct 是用于查询已完成作业账目信息的工具,功能类似 Sun Grid Engine (SGE) 的 qacct 命令。用户可通过参数筛选并查看特定条件下的作业记录,支持按作业、用户、队列、项目、主机等多种维度进行统计和详情查询。


参数说明

支持参数列表

选项是否需带值功能描述主要差异
-j可选按作业 ID/作业名/模式过滤结果。带参数显示详细信息(无汇总),不带参数显示详情+系统汇总。无差异。
-o可选按提交者过滤或分组统计作业,支持多个用户(如 user1,user2)。无差异。
-u可选-o,按提交者过滤或分组统计作业。无差异。
-b显示在指定时间之后开始的作业。格式:[[CC]YY]MMDDhhmm[.SS](如 20260115080001150800260115080001150800.30)。无差异。
-e显示在指定时间之前开始的作业。格式:[[CC]YY]MMDDhhmm[.SS]无差异。
-d显示在过去 N 天内开始的作业。无差异。
-E使用作业结束时间而非开始时间进行时间过滤(需与 -b/-e/-d 配合)。无差异。
-h可选按主机名过滤或分组统计作业。无差异。
-t按任务 ID 过滤数组作业任务。需与 -j 配合使用。无差异。
-A可选按账户分组或过滤作业。无差异。
-P可选按项目分组或过滤作业。project 对应 wckey 字段。
-q可选按队列分组或过滤作业。无差异。
-g可选按用户组分组或过滤作业。无差异。
-pe可选按并行环境(PE)分组或过滤作业。从作业 comment 字段提取 PE 信息(格式:PE:namePE:name:slots)。
-slots可选按槽数(CPU数)分组或过滤作业。无差异。
-D可选按部门分组或过滤作业。固定显示 defaultdepartment(无部门概念)。
-ar可选按高级预留(AR)分组或过滤作业。固定显示 0(无 AR 概念)。
-l按资源需求过滤作业(如 mem_free=1G,arch=x86_64)。支持资源属性:hostnamearchnum_procmem_freemem_totalvirtual_freevirtual_total。仅包括实际运行过的作业(start_time != 0)。
-m仅显示主任务(master tasks)。当前为占位功能,实现与不带该选项相同。
-f指定自定义账目文件路径。不支持,报错提示使用数据库而非账目文件。

输出模式说明

模式触发条件输出内容
详情模式-j <job_id|job_name|pattern>显示匹配作业的详细账目信息(无汇总统计)。
汇总模式不带 -j-j 不带参数按指定维度分组显示统计汇总(如 WALLCLOCK、UTIME、STIME、CPU、MEMORY 等)。
混合模式-j(不带参数)显示所有作业详情 + Total System Usage 汇总。

汇总统计字段

输出项功能描述主要差异
WALLCLOCK作业总墙钟时间(秒)。无差异。
UTIME用户 CPU 时间(秒)。无差异。
STIME系统 CPU 时间(秒)。无差异。
CPU总 CPU 时间(UTIME + STIME,秒)。无差异。
MEMORY内存使用量(字节)。当前实现为占位符,显示 0.000。
IOI/O 读写量(字节)。当前实现为占位符,显示 0.000。
IOWI/O 等待时间(秒)。当前实现为占位符,显示 0.000。

详情模式输出字段

输出项功能描述主要差异
qname队列名称(partition)。无差异。
hostname执行主机名。无差异。
group用户组名。无差异。
owner用户名。无差异。
project项目名称(wckey)。project 对应 wckey。
department部门名称。固定显示 defaultdepartment
jobname作业名称。无差异。
jobnumber作业 ID。数组作业显示 array_job_id。
taskid任务 ID(数组作业)。非数组作业显示 undefined
account账户名称。默认显示 sge
priority作业优先级。固定显示 0
qsub_time作业提交时间。无差异。
start_time作业开始时间。无差异。
end_time作业结束时间。无差异。
granted_pe授予的并行环境。固定显示 NONE
slots分配的槽数(CPU数)。从 TRES 数据中提取。
failed失败代码。根据作业状态映射失败码(26/37/100 等)。
exit_status作业退出状态码。失败作业加 128(ABNORMAL_EXIT_STATE_BASE)。
ru_wallclock墙钟时间。无差异。
ru_utime用户 CPU 时间。无差异。
ru_stime系统 CPU 时间。无差异。
ru_maxrss最大常驻内存集。从作业步骤的 TRES 数据中提取。
cpu总 CPU 时间。无差异。
mem内存使用(带 s 后缀)。从作业步骤的 TRES 数据中提取。
maxvmem最大虚拟内存。从作业步骤的 TRES 数据中提取。

使用示例

示例 1:查询特定作业的账目信息(详情模式)

$ qacct -j 5678
==============================================================
qname normal
hostname compute01
group users
owner user1
project project1
department defaultdepartment
jobname myjob
jobnumber 5678
taskid undefined
account sge
priority 0
qsub_time Mon Jan 15 10:30:00 2026
start_time Mon Jan 15 10:31:00 2026
end_time Mon Jan 15 11:30:00 2026
...

说明:显示作业 5678 的完整账目详情,不显示汇总统计。


示例 2:按作业名模式匹配查询

$ qacct -j "test_*"
==============================================================
qname normal
hostname compute01
...
==============================================================
qname normal
hostname compute02
...

说明:支持通配符 *? 匹配作业名。


示例 3:按用户和时间范围查询(汇总模式)

$ qacct -o user1 -b "202601010000"
OWNER WALLCLOCK UTIME STIME CPU MEMORY IO IOW
=============================================================================================================================
user1 3600 100.000 50.000 150.000 0.000 0.000 0.000

说明:显示用户 user12026-01-01 00:00 后启动的所有作业的统计汇总。


示例 4:按队列分组汇总

$ qacct -q
CLUSTER QUEUE WALLCLOCK UTIME STIME CPU MEMORY IO IOW
==============================================================================================================================
normal 36000 1000.000 500.000 1500.000 0.000 0.000 0.000
highmem 72000 2000.000 1000.000 3000.000 0.000 0.000 0.000

说明:按队列分组显示统计信息。


示例 5:按主机分组汇总

$ qacct -h
HOST WALLCLOCK UTIME STIME CPU MEMORY IO IOW
=============================================================================================================================
compute01 2317 0.000 0.000 0.000 0.000 0.000 0.000
compute02 111 0.000 0.000 0.000 0.000 0.000 0.000

说明:按执行主机分组显示统计信息。


示例 6:查询数组作业的特定任务

$ qacct -j 1234 -t 10
==============================================================
qname normal
hostname compute01
...
jobnumber 1234
taskid 10
...

说明-t 必须与 -j 配合使用,用于查询数组作业的特定任务。


示例 7:按资源需求过滤

$ qacct -l "mem_free=1G,arch=x86_64"
HOST WALLCLOCK UTIME STIME CPU MEMORY IO IOW
=============================================================================================================================
compute01 2317 0.000 0.000 0.000 0.000 0.000 0.000

说明:仅显示在满足资源需求的节点上运行过的作业。


示例 8:使用作业结束时间过滤

$ qacct -E -b "202601010000" -e "202601312359"

说明-E 选项使时间过滤基于作业结束时间而非开始时间。


示例 9:显示系统总汇总(默认模式)

$ qacct
Total System Usage
WALLCLOCK UTIME STIME CPU MEMORY IO IOW
=============================================================================================================================
108000 3000.000 1500.000 4500.000 0.000 0.000 0.000

说明:不带任何参数时,显示系统总的使用统计。


示例 10:混合模式(显示详情+汇总)

$ qacct -j
==============================================================
qname normal
...
==============================================================
qname normal
...

Total System Usage
WALLCLOCK UTIME STIME CPU MEMORY IO IOW
=============================================================================================================================
108000 3000.000 1500.000 4500.000 0.000 0.000 0.000

说明-j 不带参数时,显示所有作业详情后跟系统总汇总。


注意事项

1. 参数组合规则

  • 详情模式-j 带参数(-j <job_id\|name\|pattern>)显示详细信息,不显示汇总。
  • 汇总模式:不带 -j-j 不带参数时显示统计汇总。
  • 过滤参数组合:多个过滤参数(如 -j-o-h-q-l 等)同时使用时,结果需同时满足所有条件(AND 逻辑)。
  • 特殊组合
    • -l-h 同时使用时,取两者的交集(仅显示在满足 -l 资源需求的节点中且主机名匹配 -h 的作业)。
    • -t 必须与 -j 配合使用,且 -j 必须带参数。

2. 时间过滤行为

  • 默认时间范围:不带时间参数时,默认查询最近 30 天内开始的作业(可通过环境变量 FSCHED_ACCT_PAGE_SIZE 调整分页大小)。
  • 时间过滤基准
    • 不带 -E:基于作业开始时间过滤(start_time)。
    • -E:基于作业结束时间过滤(end_time)。
  • 时间格式:支持 [[CC]YY]MMDDhhmm[.SS] 格式(如 20260115080001150800260115080001150800.30)。

3. 查询性能优化

  • 分页查询:非特定作业查询(不带 -j-j 不带参数)使用分页机制,避免内存溢出。
  • 环境变量:可通过 FSCHED_ACCT_PAGE_SIZE 环境变量调整每页查询的作业数(默认 100)。