btop:在终端里查看 NVIDIA / AMD / Intel 显卡监控数据
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
btop 是一款运行在终端里的资源监控器,它的 GPU 监控模块能同时覆盖 NVIDIA、AMD 与 Intel 三家显卡,把利用率、显存、温度、功耗等指标直接画在 TUI 面板上。当渲染任务跑飞、游戏掉帧时,你不必靠猜——打开 btop 的显卡监控面板,就能判断瓶颈是否真的出在 GPU 上。
项目速览
btop 的定位是轻量级终端 TUI 资源监控器,CPU、内存、网络、进程之外,GPU 面板是 Linux 平台上的一个亮点。GPU 部分大致分三层:最底层的硬件抽象由 src/linux/btop_collect.cpp 统一收口,负责屏蔽不同发行版与内核的采集差异;中间是品牌适配层,NVIDIA 走 nvidia-ml 动态库,AMD 走 ROCm SMI 库,Intel 则直接读/sys/class/drm下的 PMU 性能计数器,后两者对应的采集逻辑分别封装在厂商库和 intel_gpu_top 模块里;最上层由 btop_draw.cpp 统一渲染成曲线与数值面板。整体设计不依赖驱动厂商的臃肿套件,这也是它适合放进 SSH 会话使用的原因。
从克隆到运行:安装全流程
先确认环境:内核建议 5.4 以上,三家厂商的官方驱动都要正常装好——NVIDIA 需要随驱动附带的nvidia-ml动态库,AMD 需要rocm_smi_lib(很多发行版有现成包),Intel 集显则无需额外库,但读取性能计数器需要提升权限。x86_64 Linux 下编译时 GPU 支持默认开启,一般直接make即可;如果发行版没有打包 ROCm SMI,可以静态链接该库,源码需放进lib/rocm_smi_lib目录,否则编译会失败。
克隆并编译安装的核心命令如下:
git clone https://gitcode.com/GitHub_Trending/bt/btop cd btop make sudo make install sudo make setcap其中setcap给 btop 授予扩展能力,Intel 显卡监控和 CPU 功耗读取都依赖这一步;不需要 Intel 支持的用户可跳过。常用编译参数一览:
| 参数 | 说明 | 适用场景 |
|---|---|---|
GPU_SUPPORT=false | 关闭 GPU 支持(x86_64 默认开启) | 无独显/核显、仅需 CPU 监控 |
RSMI_STATIC=true | 静态链接 ROCm SMI 库 | AMD 显卡且发行版未打包 rocm_smi_lib |
DEBUG=true | 降低优化等级并输出调试日志 | 排查监控数据异常 |
STATIC=true | 静态编译 | 注意:静态链接下 NVIDIA/AMD GPU 支持失效 |
装好后运行btop,若 GPU 面板出现曲线,说明安装成功;底部状态栏会显示主题与更新间隔等信息。
上手体验:GPU 面板怎么看
打开 btop 后,GPU 面板默认可能未展开。数字键5到7与0分别控制第一到第四块显卡面板的显示与隐藏,多卡机器按数字键逐一切出即可;按F2进入选项菜单,可把 GPU 利用率曲线叠加到 CPU 面板里显示(show_gpu_info)。面板内每条曲线对应一个采样周期,右侧列出显存用量/总量、温度、功耗与核心频率等瞬时值,刷新间隔可用+/-微调——观察长时间渲染时调慢一些,快速排查瓶颈时调快一些更直观。
三大品牌:各能拿到什么数据
| 品牌 | 依赖接口 | 可采集指标 |
|---|---|---|
| NVIDIA | nvidia-ml(NVML)动态库 | 利用率、显存用量/总量、温度、功耗、核心与显存频率 |
| AMD | rocm_smi_lib(ROCm SMI) | 利用率、显存、温度、功耗(部分旧卡或旧库版本缺功耗) |
| Intel | /sys/class/drm+ PMU 性能计数器 | 利用率、功耗、频率(较新内核可细分到引擎级) |
NVIDIA 是覆盖最完整的一家,闭源与开源内核驱动均已验证可用,注意必须使用官方驱动。AMD 走 ROCm SMI 通道,功耗字段依赖库版本,数据不全时通常先升级rocm_smi_lib。Intel 是三家中最"底层"的实现:btop 通过 PMU 计数器逐引擎统计忙闲,结构定义见 intel_gpu_top.h,粒度比单纯的"整机利用率"细一档:
struct engine { const char *name; unsigned int class; struct pmu_counter busy; // 忙碌 struct pmu_counter wait; // 等待 struct pmu_counter sema; // 信号量等待 };配置与主题:把面板调成你的风格
行为配置集中在~/.config/btop/btop.conf,与 GPU 相关的几个关键项:
shown_boxes="cpu mem net proc gpu0" show_gpu_info=On graph_symbol_gpu=braille updates=2000shown_boxes决定哪些面板常驻,graph_symbol_gpu可选 braille / block / tty 三种曲线符号,updates是刷新间隔(毫秒)。外观方面,themes/目录提供了三十多个主题文件,每个文件用theme[变量名]=颜色的形式定义标题、曲线、高亮等配色,在F2菜单里即可切换。深色终端里可以试试 themes/horizon.theme,它的低饱和底色配紫色高亮,长时间盯着 GPU 曲线不容易疲劳;偏好亮色背景的话 themes/adwaita.theme 更清爽。
实战场景
🎮 游戏掉帧定位,逻辑是"看指标 → 下结论 → 调设置":
- 利用率曲线长时间贴着 100% 且帧时间上升:GPU 是瓶颈,降分辨率或特效
- 显存逼近总量上限:显存不足,降低贴图质量与抗锯齿等级
- 利用率忽高忽低而 CPU 面板负载很高:瓶颈在 CPU,看进程列表找出吃核的进程
🎬 视频渲染(Blender、Premiere 等):
- 观察显存占用趋势:接近上限前调整队列规模或输出规格,避免中途爆显存
- 看温度与功耗曲线是否同步抬升后回落:回落点往往是撞温度墙,该检查散热了
- 对比 CPU 与 GPU 两条负载曲线:若 GPU 长期空闲而任务在跑,说明加速选项没生效
排障速查
| 现象 | 可能原因 | 处理命令 / 措施 |
|---|---|---|
| NVIDIA 显卡不显示 | nvidia-ml 缺失或编译时关了 GPU 支持 | nvidia-smi验证驱动;make GPU_SUPPORT=true重编 |
| AMD 功耗等数据缺失 | rocm_smi_lib 未装或版本过旧 | 装发行版包,或源码放入lib/rocm_smi_lib后make RSMI_STATIC=true |
| Intel 集显无数据 | 普通用户无 PMU 计数器读权限 | sudo make setcap(或sudo make setuid) |
btop 把三家显卡的监控收进同一块终端面板,少装驱动套件,多一分跨平台一致。仓库地址:git clone https://gitcode.com/GitHub_Trending/bt/btop。下一期打算写 btop 的主题定制与进程面板,感兴趣可以留意 CHANGELOG 的更新。
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考