nvtop 介绍与选型指南

nvtop(Neat Videocard TOP)介绍与选型:定位、支持厂商矩阵、数据采集机制、功能特性、快速开始、适用场景与限制,并给出与 nvidia-smi、radeontop、intel_gpu_top、nvitop、glances 的量化选型对比。

nvtopGPU 监控性能监控2026/10/23

nvtop 介绍与选型指南

目标:说清 nvtop(Syllo/nvtop,Neat Videocard TOP)是什么、能监控哪些厂商的 GPU、数据从哪里来、与 nvidia-smi/radeontop/intel_gpu_top/nvitop/glances 等工具的差异与选型建议。本文为认知篇,全部信息来自官方仓库与官方文档的联网溯源(来源与查询日期均已逐项标注),未混入本地环境数据。

一、环境信息

  • 溯源日期:2026-10-23(本文所有"最新版本/星数/支持列表"均以该日查询结果为准)
  • 软件仓库:GitHub Syllo/nvtop(https://github.com/Syllo/nvtop)
  • 最新稳定版:3.3.2(查询方式:GitHub Releases releases/latest 返回 tag 3.3.2,2026-10-23)
  • 社区热度:约 11k stars(取自 shields.io GitHub Stars 徽章渲染结果 11k,2026-10-23)
  • 开源许可:GPLv3 或更新版本(来源:官方仓库 README「License」节,2026-10-23)
  • 主语言:C(构建系统 CMake,用户界面 ncurses)
  • 平台:Linux 为主(另有 Apple/WSL2 支持说明,见下文)
  • 作者/维护方:Maxime Schmitt(GitHub 账号 Syllo),man 页署名 "Written by Maxime Schmitt"

二、软件概述

nvtop 全称 Neat Videocard TOP,官方定义是"a (h)top like task monitor for GPUs and accelerators"——一个类似 htop 的 GPU 与加速器任务监视器。它解决的核心痛点是:在混插不同厂商显卡/加速卡(NVIDIA、AMD、Intel,以及昇腾、天数智芯等)的机器上,用一个统一的终端界面同时观察所有卡的利用率、显存、温度、功耗、时钟与进程占用,而不必在 nvidia-smi、radeontop、intel_gpu_top 之间来回切换。

与 htop 展示 CPU/内存的方式类似,nvtop 在终端里为每块 GPU 绘制三段式视图(来源:官方仓库 README 首图 screenshot/NVTOP_ex1.png 与 man 页 nvtop(1),2026-10-23):

  • 顶部设备条:每卡一行,展示利用率、显存占用、温度、功耗、风扇、时钟频率等即时数值与进度条;视频编码(ENC)/解码(DEC)单元被使用时会动态出现占用百分比条,闲置一段时间后自动隐藏;
  • 中部折线图:GPU 利用率与显存利用率随时间变化的曲线(plot),可切换绘制指标;
  • 底部进程列表:按卡列出占用 GPU 的进程及各进程的显存/利用率,支持排序与发信号终止。

💡 技术拓展:nvtop 从不同厂商获取数据的技术路径并不相同,了解这一点才能理解它的"支持条件"。常见三类采集路径对比——

采集路径代表厂商工作方式前提条件
厂商管理库NVIDIA(NVML)、昇腾(DCMI)、MetaX(MXSML)、燧原(EFML)、天数智芯(ixML)通过驱动自带的用户态管理库 dlopen 查询必须安装对应厂商驱动(NVML 随 NVIDIA 驱动分发)
内核 DRM/fdinfoAMD(amdgpu)、Intel(i915/xe)、Adreno(msm)读内核暴露的 DRM 与 fdinfo 接口内核版本要求:AMD ≥5.14、Intel ≥5.19、Adreno ≥6.0
sysfs/hwmon/procfsTenstorrent、VideoCore、Rockchip直接读内核文件系统,无需外部库需对应内核驱动(如 tt-kmd)与设备节点(如 /dev/vcio)

nvtop 同时实现了这三类路径,按启动时探测到的设备自动选择后端(来源:官方 README「GPU Support」各节与源码 src/extract_gpuinfo_*.c,2026-10-23)。

三、核心架构

nvtop 是单一可执行文件的 C 程序,架构上分三层(来源:官方源码目录结构 src/,2026-10-23):

  1. 设备抽象与采集层:extract_gpuinfo.c 统一调度各厂商后端(extract_gpuinfo_nvidia.c、extract_gpuinfo_amdgpu.c、extract_gpuinfo_intel.c、extract_gpuinfo_ascend.c 等),启动时探测可用设备并注册后端;每个后端把厂商私有数据规整为统一的设备信息结构(利用率、显存、温度、功耗、时钟、进程列表)。
  2. 界面层:基于 ncurses(要求宽字符版本 libncursesw)绘制设备条、折线图与进程列表;提供 F2 进入的交互式 setup 窗口(General/Header/Chart/Processes 四个分区)与 F12 持久化。
  3. 选项与配置层:命令行参数(nvtop -h)+ 运行中按键 + 配置文件 $XDG_CONFIG_HOME/nvtop/interface.ini(仅由 F12 自动写入,官方声明"Do not edit this file")。

厂商支持矩阵(来源:官方 README「GPU Support」节,2026-10-23):

厂商/平台驱动/接口内核要求备注
NVIDIA私有驱动 + NVML(libnvidia-ml);NvAPI(libnvidia-api.so.1,可选,补充时钟域)—Kepler 架构起(GeForce 600/800M 及之后)受 NVML 支持良好;不支持 nouveau
AMDamdgpu(主流)与 legacy radeon(有限)fdinfo 需 ≥5.14radeon 驱动指标较少
Inteli915 或 xefdinfo 需 ≥5.19读取总显存与精确频率需 CAP_PERFMON 或 CAP_SYS_ADMIN 能力(root 或 setcap cap_perfmon=ep $(which nvtop))
华为昇腾 AscendDCMI API(910B 实测)—编译期 -DASCEND_SUPPORT=ON 启用
Qualcomm Adrenomsm 驱动fdinfo 需 ≥6.0手机/开发板 GPU
Broadcom VideoCorev3d 驱动非 RPi OS 需 ≥6.12 且有 /dev/vcio树莓派 4B 实测
RockchipNPU 频率/温度/利用率—Orange Pi 5 Plus 实测
Apple M1/M2Metal—仅 macOS 构建;构建时只支持该厂商
MetaXMXSML 库—MXC500 实测
Enflame 燧原EFML 库—S60/L300/L600 实测
Tenstorrenttt-kmd 内核驱动—Blackhole/Wormhole/Grayskull,读 sysfs/hwmon/procfs,无外部库依赖
天数智芯 Iluvatar CoreXixML(libixml.so)—运行时动态加载

💡 说明:矩阵中"实测"字样均为官方 README 声明的硬件验证范围;nvtop 3.x 已明显超出"NVIDIA 专用"的早期定位——Ubuntu 22.04 仓库里的老版本 1.2.2 时代,包描述还是"Interactive NVIDIA GPU process monitor",这也是《Ubuntu 22.04 安装 nvtop 3.3.2 指南》中强调"老发行版仓库版本严重滞后"的原因(安装路径详见站内《Ubuntu 22.04 安装 nvtop 3.3.2 指南》。)。

四、功能特性

来源:官方 README 与 man 页 nvtop(1)(2026-10-23),关键能力逐条列出:

  • 多 GPU 统一监控:同屏展示全部 GPU/加速器,可用命令行 -s(快照输出)与界面内设备开关配合聚焦;
  • htop 式进程管理:底部进程列表可排序(F6 选字段、+/- 切升降序)、可高亮选中,F9 向选中进程发送信号(如终止);
  • 交互式界面定制(F2 setup):四个分区——General(颜色开关、刷新间隔)、Devices(华氏/摄氏、编解码隐藏计时、GPU 信息栏)、Chart(折线方向反转、绘制指标选择,含 GPU/显存利用率、温度、功耗、时钟、PCIe 收发吞吐)、Processes(排序字段、显示字段、排序方向);
  • 偏好持久化(F12):把 F2 中的选择写入 ~/.config/nvtop/interface.ini,下次启动自动加载;
  • 编码/解码动态条:ENC/DEC 使用时出现,闲置自动隐藏(隐藏时长由 -E 控制,默认 30 秒,负值常显);
  • 附加信息栏(-i):展示 NVML 不上报的动态参数(XBAR/SYS/NVD 时钟);-X 另可显示静态规格(着色器核心、L2 缓存、执行引擎)与次级时钟域(依赖 libnvidia-api.so.1,无则该栏自动不留位);
  • 脚本化输出(-s 快照 / -l 循环):不进 ncurses 界面,直接打印当前 GPU 状态,适合脚本与采集管道;
  • man 手册:man nvtop 提供完整手册页;
  • 单位口径:内存统一按 1024 字节(1 KiB)进制显示(man 页 MEMORY SIZES 节)。

五、快速开始(最小可用示例)

以下命令取自官方 README「Distribution Specific Installation Process / NVTOP Build」节(2026-10-23),在 Ubuntu 22.04 上的完整实测过程(含版本对比与逐条回显)见站内《Ubuntu 22.04 安装 nvtop 3.3.2 指南》:

# 路径一:发行版仓库(Ubuntu 22.04 的版本较老,见 B1 篇实测对比)
sudo apt install nvtop

# 路径二:官方 AppImage(免安装,从 Releases 页下载后直接运行)
chmod u+x nvtop-3.3.2-x86_64.AppImage
./nvtop-3.3.2-x86_64.AppImage

# 路径三:源码编译(功能最全、版本最新)
sudo apt install cmake libncurses5-dev libncursesw5-dev git libdrm-dev libsystemd-dev
git clone https://github.com/Syllo/nvtop.git
mkdir -p nvtop/build && cd nvtop/build
cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=ON -DINTEL_SUPPORT=ON
make && sudo make install

启动与基本交互(依据 man 页 INTERACTIVE COMMANDS 节):

nvtop          # 进入监控界面;F2 调整界面,F12 保存偏好,q 退出
nvtop -s       # 快照模式:打印一次状态后退出,适合脚本
nvtop -h       # 查看全部命令行参数
man nvtop      # 完整手册

界面预期(描述来源:官方 README 截图与 man 页,2026-10-23):在有 GPU 的机器上,nvtop 顶部按卡分块显示利用率/显存/温度/功耗/时钟等数值条,中部是利用率折线图,底部是进程列表;没有 GPU 时启动则直接提示 No GPU to monitor. 后退出。具体的图块布局以官方仓库截图 screenshot/NVTOP_ex1.png 为准,本文不以本地环境杜撰数值。

六、适用场景与限制

适合:

  • 混插多厂商 GPU/加速卡(如 NVIDIA + AMD + Intel)的训练/推理服务器,需要"一块屏幕看全部";
  • 排查显存被哪个进程占用、需要 htop 式按键(排序、发信号)的交互场景;
  • 无图形界面的 SSH 终端与长期挂着的监控小窗;
  • 把 GPU 状态纳入 shell 脚本/定时采集(-s/-l)。

限制(来源:官方 README「GPU Support」「Troubleshoot」与 man 页 BUGS 节,2026-10-23):

  • 不支持 nouveau 驱动栈与较老的 NVIDIA GPU(NVML 对 Kepler 之前的卡缺少查询支持);
  • AMD 老 radeon 驱动的卡指标有限;字段显示 N/A 时官方建议"升级内核或向厂商要更好的支持";
  • AMD/Intel 的进程级占用依赖内核 fdinfo(内核版本门槛见支持矩阵);
  • Intel 上读总显存/精确频率需要 root 或 CAP_PERFMON 能力;
  • 它是实时观察工具:没有历史数据存储、告警与 Web 界面——需要长期指标留存时应接入时序监控体系(nvtop 的 -s 快照可作为取数端被脚本复用)。

七、同类选型对比

围绕"终端 GPU 监控"这一场景,把常见工具放在一起量化对比(各工具的支持范围与形态以其官方仓库/手册为准,nvtop 数据为本文溯源值,2026-10-23):

工具实现语言支持 GPU交互形态运行时依赖许可定位差异
nvtopCNVIDIA/AMD/Intel + 昇腾/天数/燧原等 12 类htop 式 TUI(进程排序/发信号/界面定制/持久化)ncurses(编译期链接)GPLv3+多厂商统一视图 + htop 式交互,单二进制轻量
nvidia-smiC(驱动随附)仅 NVIDIA非交互 CLI(-l 循环打印)/ 持久模式管理随驱动安装闭源随驱动NVIDIA 官方瑞士军刀:查询/改参/看进程,但无可视化曲线与跨厂商能力
radeontopC仅 AMD(amdgpu/radeon)全屏 TUI(利用率曲线为主)ncurses/libdrmGPLv3AMD 专精的利用率观察,无 NVIDIA/Intel 支持,进程粒度信息有限
intel_gpu_topC(intel-gpu-tools 套件)仅 Intel(i915/xe)全屏 TUI(引擎级占用)intel-gpu-toolsMIT引擎(3D/Video/Blitter 等)级粒度最细,但仅 Intel 且通常需 root
nvitopPython仅 NVIDIA(基于 NVML/pynvml)TUI + 进程管理(attach/环境变量查看/kill)Python 运行时 + nvidia-ml-pyApache-2.0NVIDIA 深度最强(进程交互丰富),但依赖 Python 且只覆盖 NVIDIA
glancesPythonNVIDIA(插件式,需 pynvml)TUI/Web/REST/C/S 多形态Python + 依赖较多GPLv3全系统监控大杂烩,GPU 只是众多模块之一;对比详见站内《glances 介绍与选型指南》
bottom / btopRust / C++有限(NVIDIA 可选支持)现代 TUI单二进制MIT / BSD-2CPU/内存/磁盘/网络为主角的系统监控,GPU 非核心;bottom 详见站内《bottom 介绍与选型指南》
gtopNode.js无字符画布仪表盘Node.js 运行时MIT纯系统指标炫酷面板,不支持 GPU;详见站内《gtop 介绍与选型指南》

关键差异与如何选型:

  1. 看卡不看厂商 → nvtop:唯一同时覆盖 NVIDIA/AMD/Intel 并扩展到昇腾、天数智芯、燧原、Tenstorrent 等加速器的终端工具,混插环境几乎没有替代品;
  2. 单 NVIDIA 环境要深度进程操作 → nvitop 补位:nvitop 能 attach 进程、查看进程环境变量,比 nvtop 的 F9 更进一步;两者可并存(同一 NVML 不冲突);
  3. 驱动层参数修改 → nvidia-smi:锁频率、设功耗上限、持久模式等管理动作仍属 nvidia-smi,nvtop 是只读观察者(唯一例外是 F9 向进程发信号);
  4. AMD/Intel 的引擎级细节 → radeontop / intel_gpu_top:单厂商场景下它们更专精,但都做不了跨厂商统一视图;
  5. 要历史留存/告警/Web → nvtop 只当取数器:配合 -s 快照接入 Prometheus 等体系,或直接换用 DCGM-exporter 类采集器;
  6. 系统整体监控为主、GPU 偶尔看一眼 → glances/bottom:GPU 能力是配角;纯终端颜值仪表盘则 gtop,但与 GPU 监控无关。

一句话结论:nvtop 是"终端里的多厂商 GPU 任务管理器"——把 nvidia-smi/radeontop/intel_gpu_top 各管一摊的观察工作合并成一个 htop 式界面;管理动作交给厂商官方工具,长期指标交给监控平台,nvtop 负责把"现在哪块卡、哪个进程在吃什么"这件事做到一目了然。

八、参考链接