nvtop 3.3.2 配置参数详解
nvtop 3.3.2 配置参数详解:四层配置体系(编译期 CMake 选项、命令行参数、F2 交互设置、F12 持久化 interface.ini 全键位),环境变量与默认值逐项说明,配场景化配置模板与 FAQ,参数值均经实测与源码核对。
nvtop 3.3.2 配置参数详解
目标:把 nvtop 3.3.2 的全部可配置项一次讲清——它没有传统服务端那种主配置文件,配置分四层落地:编译期 CMake 选项(决定支持哪些厂商硬件)、命令行参数(单次运行行为)、运行中 F2 交互设置(会话内调整)、F12 保存的
interface.ini(持久化界面偏好)。本文每张参数表都来自 Ubuntu 22.04 实测回显或对 3.3.2 源码的逐行核对,安装过程见站内《Ubuntu 22.04 安装 nvtop 3.3.2 指南》。
一、环境信息
- 操作系统:Ubuntu 22.04(jammy,x86_64)
- nvtop 版本:3.3.2(源码 commit
76890233d759199f50ad3bdb57a0c0988e96fc44,tag 3.3.2,2026-02-08) - 参照老版本:1.2.2(Ubuntu 22.04 发行版仓库自带,用于版本差异对照)
- 溯源与核对日期:2026-10-23(官方 README/man 页/源码
src/) - 硬件说明:实验机器无 GPU——nvtop 的配置项、帮助文本、配置文件路径与版本行为均可完整验证;仅"图块显示效果"一节依据官方文档描述并标注来源。
二、前置条件
- 已按《Ubuntu 22.04 安装 nvtop 3.3.2 指南》装好 nvtop 并通过
nvtop --version验证(实测输出nvtop version 3.3.2); - 查看编译期选项需要源码树与 cmake(
cmake .. -LH),只看运行期参数则只需可执行的 nvtop 与nvtop -h; - 若要核对 interface.ini 键名,需要解包源码(
git clone后src/interface_options.c); - 无 GPU 的机器上
nvtop启动会输出No GPU to monitor.后退出(实测,退出码 0)——这不影响-h/--version等参数验证。
三、参数查看与修改方式
nvtop 的配置入口有四个,修改优先级与生效时长各不相同(依据 man 页 CONFIGURATION FILE/INTERACTIVE SETUP WINDOW 节与源码 src/nvtop.c 参数处理逻辑):
| 层级 | 入口 | 生效范围 | 查看方法 |
|---|---|---|---|
| 编译期 | CMake 选项(如 -DNVIDIA_SUPPORT=ON) | 决定二进制支持哪些硬件后端,改后需重新编译 | cmake .. -LH(源码树内) |
| 命令行 | nvtop -d/-p/-P/-i/-E/-c/-s/-l/-r/-C/-f | 仅本次运行 | nvtop -h |
| 会话内交互 | 界面内按 F2(setup 窗口) | 仅本次运行,F12 前不持久 | 界面内查看 |
| 持久化 | F12 保存 → interface.ini | 每次启动自动加载 | cat ~/.config/nvtop/interface.ini |
配置文件定位规则(源码 src/interface_options.c 第 37–58 行核对):固定相对路径 nvtop/interface.ini;目录取 $XDG_CONFIG_HOME,未设置则回退 $HOME/.config;-c <路径> 可整体替换该文件位置。程序启动时加载,interface.ini 不存在时全部用内置默认值。
⚠️ 官方立场:man 页明确 "Do not edit this file. The file is automatically created or updated upon toggling the interface saving key F12."——interface.ini 是 F12 的输出物而非手写配置;需要默认行为差异时用命令行参数或写 shell alias,不要手编 ini。
四、编译期参数总览(CMake 选项)
以下为 3.3.2 源码 CMakeLists.txt 与 cmake .. -LH 实测结果(配置命令 cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=ON -DINTEL_SUPPORT=ON -DCMAKE_BUILD_TYPE=Release,回显见安装指南 7.3 节):
| 选项 | 类型 | Linux 默认值 | 说明 |
|---|---|---|---|
NVIDIA_SUPPORT | BOOL | ON | 通过 libnvml 支持 NVIDIA GPU |
AMDGPU_SUPPORT | BOOL | ON | 通过 amdgpu 驱动支持 AMD GPU |
INTEL_SUPPORT | BOOL | ON | 通过 i915/xe 驱动支持 Intel GPU |
MSM_SUPPORT | BOOL | ON | 通过 msm 驱动支持 Adreno(高通)GPU |
V3D_SUPPORT | BOOL | ON | 支持 Broadcom VideoCore(树莓派) |
PANFROST_SUPPORT / PANTHOR_SUPPORT | BOOL | ON | ARM Mali GPU(Panfrost/Panthor 驱动) |
METAX_SUPPORT | BOOL | ON | MetaX GPU(MXSML 库) |
ASCEND_SUPPORT | BOOL | OFF | 昇腾 NPU(Ascend DCMI)——唯一默认关闭的主力后端,启用需显式 -DASCEND_SUPPORT=ON |
TPU_SUPPORT | BOOL | 自动探测 | Google TPU(GRPC),检测到 libtpuinfo.so 才开 |
APPLE_SUPPORT | BOOL | OFF(Linux) | Apple Metal(仅 macOS 构建且独占) |
BUILD_TESTING | BOOL | OFF | 单元测试(依赖 GTest) |
USE_LIBUDEV_OVER_LIBSYSTEMD | BOOL | OFF | 设备枚举:默认用 libsystemd,置 ON 强制 libudev |
CMAKE_BUILD_TYPE | STRING | 无(建议显式 Release) | Release=无调试信息;RelWithDebInfo=带调试信息;Debug=开警告与地址/UB 消毒器(开发用,官方 README 说明) |
CMAKE_INSTALL_PREFIX | PATH | /usr/local | 安装前缀;多版本共存时改此值(如 /opt/nvtop-3.3.2) |
ASCEND_ROOT | PATH | 无 | 昇腾 CANN 安装在非标准位置时指定(官方 README:-DASCEND_ROOT=/path/to/Ascend) |
两点实测细节值得注意:
- 默认开关随平台变化:源码
CMakeLists.txt第 64–89 行按平台分支设定默认值——Linux 非 Apple/非昇腾构建时 NVIDIA/AMDGPU/INTEL/V3D/MSM/PANFROST/PANTHOR/METAX 全部默认 ON,仅 ASCEND 默认 OFF;Apple 平台则只默认开 APPLE_SUPPORT。因此"裸cmake ..即得全厂商版"在 Linux 上成立,显式传三大-D*_SUPPORT=ON是官方 README 给出的稳妥写法。 - TPU/Enflame 按依赖探测:
CMakeLists.txt对 Linux 上的libtpuinfo.so(TPU)与 Enflame GCU 库做find_library探测,找到才默认启用——编译机上没有厂商库就不会编进对应后端。
五、命令行参数详解(运行期)
nvtop -h 在 Ubuntu 22.04 的实测回显(逐行照抄):
nvtop version 3.3.2
Available options:
-d --delay : Select the refresh rate (1 == 0.1s)
-v --version : Print the version and exit
-c --config-file : Provide a custom config file location to load/save preferences
-p --no-plot : Disable bar plot
-P --no-processes : Disable process list
-r --reverse-abs : Reverse abscissa: plot the recent data left and older on the right
-C --no-color : No colors
line information
-f --freedom-unit : Use fahrenheit
-i --gpu-info : Show bar with additional GPU parameters
-E --encode-hide : Set encode/decode auto hide time in seconds (default 30s, negative = always on screen)
-h --help : Print help and exit
-s --snapshot : Output the current gpu stats without ncurses(useful for scripting)
-l --loop : Output the current gpu stats without ncurses in a loop
逐项说明(默认值取自源码 src/interface_options.c 的 alloc_interface_options_internals() 与 man 页):
| 参数 | 默认值 | 说明与注意 |
|---|---|---|
-d <delay> | 10(即 1 秒,源码 update_interval = 1000 毫秒) | 刷新间隔,单位 0.1 秒:-d 5 = 0.5s、-d 100 = 10s |
-v | — | 打印版本退出(实测输出 nvtop version 3.3.2) |
-c <file> | 空(走 XDG 默认路径) | 指定配置文件位置,加载与 F12 保存都用它 |
-p | 不隐藏(图表区默认绘制) | 清空每卡图表绘制项(源码 nvtop.c 第 292–296 行:把 to_draw 置 0),只留设备条与进程列表 |
-P | 不隐藏 | 隐藏底部进程列表 |
-r | 关(图表默认"旧→新"从左到右,源码 plot_left_to_right = false) | 反转横轴:新数据在左 |
-C | 关(use_color = true) | 单色模式 |
-f | 关(temperature_in_fahrenheit = false,摄氏度) | 华氏度显示 |
-i | 关(has_gpu_info_bar = false) | 附加 GPU 信息栏:显示 NVML 不上报的动态时钟(XBAR/SYS/NVD);静态规格需 -X(man 页/README 提及),时钟域读 libnvidia-api.so.1,库缺失时该栏自动不留位 |
-E <seconds> | 30(encode_decode_hiding_timer = 30.) | ENC/DEC 占用条闲置后自动隐藏的秒数;负数常显 |
-s | — | 快照模式:打印一次状态后退出,不进 ncurses |
-l | — | 循环快照模式(同样无 ncurses),适合管道采集 |
-h | — | 帮助(注意帮助文本中 -C 下一行的 line information 是换行续排的 "No colors / line information",实测原样) |
与 1.2.2 的参数差异(1.2.2 -h 实测对照,老环境运维必读):
| 参数 | 1.2.2 含义 | 3.3.2 含义 |
|---|---|---|
-s | --gpu-select:选卡(需参数,实测缺参报 Unhandled error in getopt missing argument) | --snapshot:快照输出(无参数) |
-i | --gpu-ignore:忽略指定卡 | --gpu-info:附加信息栏 |
-P | 不存在(1.2.2 实测报 missing argument) | 隐藏进程列表 |
-l | 不存在 | 循环快照 |
-c | 存在,同义 | 同义 |
无 GPU 机器上实测:nvtop -s、nvtop -l、nvtop -s 0(1.2.2 的选卡写法)均输出 No GPU to monitor. 且退出码 0——快照参数先于界面初始化生效,行为一致。
六、运行中交互设置(F2 setup 窗口)与快捷键
有 GPU 的机器进入界面后,F2 打开 setup 窗口,四个分区对应四组设置(man 页 INTERACTIVE SETUP WINDOW 节原文归纳):
| 分区 | 可调项 | 对应默认值 |
|---|---|---|
| General | Color support(颜色开关)、interface update interval(刷新间隔) | 颜色开;1000ms |
| Devices | 华氏/摄氏切换、编码/解码隐藏计时、GPU 信息栏开关 | 摄氏;30s;信息栏关 |
| Chart | 图表方向反转、绘制指标选择(GPU/显存利用率、温度、功耗、时钟、PCIe 收发吞吐) | 不反转;默认绘制利用率与显存利用率 |
| Processes | 排序开关与方向、排序字段、显示字段 | 按显存降序(源码 sort_processes_by = process_memory、sort_descending_order = true) |
运行中快捷键(man 页 INTERACTIVE COMMANDS 节全表):
| 按键 | 作用 |
|---|---|
| Up / Down | 上/下选中进程 |
| Left / Right | 进程行内横向滚动 |
+ / - | 升序 / 降序排序 |
| F2 | 打开 setup 窗口 |
| F12 | 保存当前界面偏好到 interface.ini |
| F9 | 向选中进程发送信号(如终止) |
| F6 | 选择排序字段(当前排序字段在表头高亮) |
F10 / q / Esc | 退出 |
其他运行期机制:ENC/DEC 占用条在使用时动态出现、闲置按 -E 时长自动隐藏(man 页 DYNAMIC METERS 节);内存单位一律 1024 进制(man 页 MEMORY SIZES 节:"Memory sizes in nvtop are displayed as multiples of 1024 bytes or 1 KiB")。
七、持久化配置:interface.ini 全键位
F12 保存的文件按 XDG 规范落在 $XDG_CONFIG_HOME/nvtop/interface.ini(默认 ~/.config/nvtop/interface.ini);-c 指定路径时则写到指定位置。文件由程序自动创建/更新(目录递归创建,源码 create_config_directory_rec()),首行固定注释 ; Please do not edit this file.。
键位清单(源码 src/interface_options.c 第 158–196 行常量定义核对,3.3.2 完整集合):
[GeneralOption]
UseColor=true|false ; 颜色开关,默认 true
UpdateInterval=<整数毫秒> ; 刷新间隔,默认 1000
ShowInfoMessages=true|false ; 启动信息提示,默认 true
[HeaderOption]
UseFahrenheit=true|false ; 温度单位,默认 false(摄氏)
EncodeHideTimer=<秒,可负> ; ENC/DEC 条隐藏计时,默认 30
GPUInfoBar=true|false ; 附加信息栏,默认 false
[ChartOption]
ReverseChart=true|false ; 图表方向,默认 false
[ProcessListOption]
HideNvtopProcessList=true|false ; 隐藏 nvtop 自身进程列表项
HideNvtopProcess=true|false ; 过滤 nvtop 进程(默认 filter_nvtop_pid=true)
SortBy=<见下表> ; 排序字段,默认 memory
DisplayField=<逗号分隔的字段> ; 显示字段集合
SortOrder=descending|ascending ; 排序方向,默认 descending
[Device] ; 每卡一节
Pdev=<PCI 设备地址> ; 卡标识
Monitor=true|false ; 是否监控该卡(保持至少一张卡被监控)
ShownInfo=<见下表> ; 该卡图表显示的指标集合
SortBy 合法值(源码 process_sortby_vals 数组原文):pId, user, gpuId, type, gpuRate, encRate, decRate, memory, cpuUsage, cpuMem, cmdline, none。
ShownInfo 合法值(源码 device_draw_vals 数组原文):gpuRate, gpuMemRate, encodeRate, decodeRate, temperature, powerDrawRate, fanSpeed, gpuClockRate, gpuMemClockRate, effectiveLoadRate, none。
实测验证(无 GPU 机器):运行 nvtop -c /root/nvtop-test.ini 在检测不到卡时直接退出,不会生成配置文件(ls /root/nvtop-test.ini 实测 No such file or directory)——配置文件只在界面内按 F12 或程序正常初始化界面后由程序写入。因此持久化配置的首次生成必须在有 GPU 的机器上完成。
💡 技术拓展:
interface.ini是 INI 格式,但键值语义由程序硬编码解析(ini_parse_file+ 固定 section/key 常量),手写非法值不会报错而是被忽略并回落默认——这也是官方"别手编"的原因。若确需批量预置(如给 50 台训练机统一界面),做法是:先在一台有卡的机器上按 F12 调好并保存,再把生成的 interface.ini 分发到各机的~/.config/nvtop/(或配合-c指到统一挂载路径),比手写键值可靠。
八、环境变量与运行前提
nvtop 读取的环境变量与外部条件(全部有官方文档或源码依据):
| 变量/条件 | 作用 | 来源 |
|---|---|---|
TERM | 必须为有效终端类型(如 xterm-256color),否则报 ncurses: cannot initialize terminal type ($TERM="unknown")(仅在能进界面时触发) | 官方 README Troubleshoot |
XDG_CONFIG_HOME | 配置文件根目录;未设置回退 $HOME/.config | 源码 default_config_path() |
HOME | XDG 未设置时的回退依据 | 同上 |
LD_LIBRARY_PATH | 影响 dlopen 查找 libnvidia-ml.so/libnvidia-ml.so.1——NVIDIA 机器上该库缺失/不可见即报 No GPU to monitor. | 源码 extract_gpuinfo_nvidia.c 第 275/277 行 |
PATH | AppImage 直跑需要 fusermount 在 PATH 中 | 实测报错 No suitable fusermount binary found on the $PATH |
| CAP_PERFMON/CAP_SYS_ADMIN | Intel 卡读总显存与精确频率需要(root 或 setcap cap_perfmon=ep $(which nvtop)) | 官方 README Intel 节 |
九、场景化配置模板
nvtop 无服务端主配置,"生产模板"落地为命令行用法约定 + 预置偏好文件两件套。以下三个场景直接可用(路径与账号均落实际值,本例以 root 用户为例):
场景一:训练服务器 SSH 常驻观察(16GB 内存小机也适用,nvtop 自身内存占用极低)
# ~/.bashrc 追加别名:1 秒刷新 + 显示附加信息栏 + 华氏度关闭(默认摄氏)
alias nvtop='command nvtop -i'
说明:-i 附加栏对 NVIDIA 机器展示 XBAR/SYS/NVD 时钟;不额外加 -d,默认 1s 刷新对 GPU 利用率曲线已足够平滑。
场景二:定时采集进监控脚本(cron 每 5 分钟留一份快照)
# crontab -e 追加(root 用户,密码策略同系统规范,示例目录提前 mkdir -p /var/log/gpu-snap)
*/5 * * * * /usr/local/bin/nvtop -s >> /var/log/gpu-snap/snapshot.log 2>&1
说明:-s 快照模式无 ncurses 依赖、可直接重定向;比 -l 常驻循环更省心(无进程存活管理问题)。
场景三:统一界面偏好分发(N 台机器同一观感)
在一台有 GPU 的机器上运行 nvtop → F2 调整(关颜色可选、刷新 0.5s、图表含功耗与 PCIe 吞吐、进程按显存降序)→ F12 保存 → 分发:
scp /root/.config/nvtop/interface.ini admin@gpu-node02:/home/admin/.config/nvtop/interface.ini
说明:目标机用户为 admin(登录密码遵循内部统一测试口令 q1w2e3r4),分发前确认目标机 ~/.config/nvtop/ 目录存在(nvtop 也会在 F12 时自动建,scp 需手动先建)。
十、常见问题(FAQ)
Q1:为什么找不到 /etc/nvtop.conf 或类似全局配置?
nvtop 没有"系统级配置文件"这一层——它是单用户交互 TUI,配置仅两处:命令行参数(临时)与每用户的 XDG interface.ini(持久)。系统级统一行为用 shell alias/脚本包装实现(见场景三)。
Q2:-c 指定的配置文件为什么没被创建?
配置文件由 F12 触发保存时写入;无 GPU 的机器上 nvtop 在界面初始化前就退出(实测输出 No GPU to monitor.),因此不会生成文件。首次生成必须在有 GPU 的机器上按 F12。
Q3:改了 UpdateInterval 但感觉没变?
单位是毫秒(源码 %d 直接赋给 update_interval),且命令行 -d 的单位是 0.1 秒——-d 10 等价 ini 里 UpdateInterval=1000。两处混用容易换算错,建议固定用一种入口。
Q4:-p 之后图表区还在吗?
不在。3.3.2 的 -p 会清空每卡绘制项(源码 to_draw = 0),界面只剩设备条与进程列表;man 页"只显示一个最大值图表"是旧版描述,以 -h 实测文本与源码为准。
Q5:编译后 -i 信息栏没有时钟数据?
该栏的扩展时钟域依赖驱动附带的 libnvidia-api.so.1(官方 README:recent drivers install alongside NVML);库缺失时"the rest of the interface is unaffected and the bar takes no room",属预期降级而非故障。
Q6:手编 interface.ini 为什么有些键不生效? 键名与取值是硬编码白名单(第七节的两个值域表),非法键被静默忽略。分发预置文件时从"已调好的真机导出",不要手写。
十一、参考链接
- man 手册 nvtop(1)(3.3.2 随源码安装:
/usr/local/share/man/man1/nvtop.1;SYNOPSIS/INTERACTIVE/CONFIGURATION FILE 节) - 官方 README(Build 选项、Troubleshoot):https://github.com/Syllo/nvtop (查询日期 2026-10-23)
- 源码 3.3.2:https://github.com/Syllo/nvtop/tree/3.3.2 (键名常量:
src/interface_options.c第 158–196 行;参数处理:src/nvtop.c;NVML 加载:src/extract_gpuinfo_nvidia.c) - 站内系列:《nvtop 介绍与选型指南》《Ubuntu 22.04 安装 nvtop 3.3.2 指南》《nvtop 3.3.2 常用 CLI 命令与工具详解》