You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JobID查询Linux已完成任务的峰值与平均内存占用

Linux下通过JobID查询已完成任务的内存占用(峰值/平均)

ps、top、htop或者grep VmPeak这类命令只能针对运行中的进程,没法获取已完成任务的内存数据。要查已完成任务的峰值和平均内存,得根据你用的任务调度器(或者任务启动方式)来用对应的工具:

1. Slurm调度器(常见于HPC集群)

如果你的JobID是Slurm生成的,用sacct命令直接查询:

sacct -j <你的JobID> --format=JobID,Elapsed,MaxRSS,AveRSS
  • MaxRSS:任务运行期间的峰值内存占用(单位通常是KB/MB,取决于系统配置)
  • AveRSS:任务的平均内存占用

如果需要更详细的内存统计,可以加更多字段,比如虚拟内存相关数据:

sacct -j <你的JobID> --format=JobID,MaxRSS,AveRSS,MaxVMSize,AveVMSize

2. PBS/Torque调度器

用qacct命令查询已完成任务的内存数据:

qacct -j <你的JobID>

在输出里找这两个核心字段:

  • maxvmem:峰值虚拟内存占用
  • avevmem:平均虚拟内存占用

3. LSF调度器

用bacct命令获取任务的详细统计:

bacct -j <你的JobID>

如果任务刚结束不久,也可以用bjobs -l <你的JobID>快速查看,输出里的内存相关字段会包含峰值使用情况。

4. 无集群调度器(本地后台任务)

如果是用&或者nohup启动的本地任务,事前没做监控的话很难回溯已完成任务的内存数据。但可以事前用/usr/bin/time -v启动任务,任务结束后会自动输出内存统计:

/usr/bin/time -v ./your_task.sh

输出里的Maximum resident set size (kbytes)就是任务的峰值内存占用,其他字段还包含内存相关的详细统计。

注意:直接用time可能是shell内置的简化版,必须用/usr/bin/time才能触发带详细统计的版本。

内容的提问来源于stack exchange,提问作者user19898808

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:40:27