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

如何在Linux终端实时采集保存nvidia-occupancy时序数据

可直接落地的采集方案

你不需要额外写复杂脚本,用NVIDIA官方自带工具就能实现10秒间隔的CUDA占用率(SM Occupancy)时序采集,拿到的是每个采样点的实时值,不是统计最大值。

方案1:用nvidia-smi原生能力采集(零额外依赖,和你现有采集逻辑完全兼容)

nvidia-smi的dmon子命令原生支持按固定间隔输出实时SM占用率指标,不需要安装任何第三方包:

  • 基础采集命令(10秒间隔,输出到终端):
    nvidia-smi dmon -s u -d 10
    参数说明:
  • -s u:指定采集GPU利用率类指标,输出列中的smoc就是你要的实时CUDA SM占用率,和你截图里的occupancy指标口径完全一致
  • -d 10:设置采样间隔为10秒,和你现有GPU时序数据的采集频率对齐
  • 如果要直接持久化保存为带时间戳的日志文件,方便后续和已有nvidia-smi采集数据做时间对齐,用下面的命令后台运行即可:
    nohup nvidia-smi dmon -s u -d 10 -o T > gpu_occupancy_ts.log 2>&1 &
    其中-o T指定输出为带标准时间戳的CSV格式,后续直接用pandas、awk等工具就能处理。

典型输出格式参考:

#Date       Time        gpu   sm   mem   enc   dec   smoc
20240520    14:32:10     0    12    5     0     0    18
20240520    14:32:20     0    35    12    0     0    42
20240520    14:32:30     0    8     3     0     0    11

输出里的smoc列就是每个采样点的实时占用率,不是周期内最大值。

方案2:用NVIDIA DCGM采集(精度更高,适合生产/多进程场景)

如果你需要更高的指标精度,或者要区分不同进程的CUDA占用率,可以用NVIDIA官方的DCGM工具采集:

  1. 安装DCGM(Ubuntu/Debian系):
    sudo apt install -y datacenter-gpu-manager
  2. 启动服务后执行10秒间隔采集命令:
    dcgmi dmon -e 1002 -d 10000
    参数说明:
  • -e 1002对应指标为SM_ACTIVE_OCCUPANCY,即实时SM占用率
  • -d 10000设置采样间隔为10000毫秒(即10秒),输出自带时间戳,可直接重定向存文件。

注意:DCGM对数据中心级GPU(Tesla、A系列、H系列)全版本支持,470及以上版本驱动也支持消费级GPU,指标统计粒度比nvidia-smi更细。

你之前只能拿到最大值,是因为你查看的是nvidia-smi的汇总视图,这类视图默认展示监控周期内的峰值占用,不是实时采样值,换用上面两个命令的持续采样模式就能拿到连续时序数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:57:20