btop GPU 监控完整指南:30 分钟跑通多品牌数据采集
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
渲染跑到第 40 分钟突然掉帧,你第一反应是看 CPU 还是 GPU?如果要在 nvidia-smi、rocm-smi 和几个 sysfs 路径之间来回切换才能找到答案,btop GPU 监控能省掉很多事:它把 NVIDIA、AMD、Intel 三家显卡的数据收进同一个程序,画在同一块屏上。
本文解决什么
| 你要解决的问题 | 去哪里看 |
|---|---|
| 我的机器能不能跑多品牌 GPU 监控 | 「30 分钟上手」第一阶段:环境确认 |
| 怎么编译出带 GPU 支持的版本 | 「30 分钟上手」第二、三阶段 |
| NVIDIA / AMD / Intel 各读什么数据 | 「三家数据源」三个小节 |
| 渲染时怎么判断瓶颈 | 「渲染监控」三条要点 |
它怎么采到数据的
btop 的 GPU 监控分三层。采集层src/linux/btop_collect.cpp不在编译期硬链任何厂商库,而是运行时用 dlopen/dlsym 加载 NVIDIA 的 libnvidia-ml.so 和 AMD 的 ROCm SMI 库;Intel 走另一条路——项目内嵌了 intel_gpu_top 的移植逻辑,直接读 sysfs 里的每引擎 PMU 计数器(结构定义见src/linux/intel_gpu_top/intel_gpu_top.h)。采集结果统一装进 gpu_info 结构,渲染层再按盒子画曲线。这个设计的好处是:某个品牌的驱动没装,它就不出现,另外两家照常工作。
30 分钟上手:从环境确认到跑通第一条曲线
阶段一:环境确认——先别急着编译
x86_64 上GPU_SUPPORT参数默认就是 true,缺的几乎都是驱动侧。三条命令确认清楚:
nvidia-smi # NVIDIA:官方驱动 + NVML 库 ls /dev/kfd # AMD:amdgpu 的 HSA 内核接口 ls /sys/class/drm # 三家通用:card0/card1 设备节点NVIDIA 必须用官方驱动(闭源和开源内核模块都验证过),nvidia-ml 动态库随驱动包自带;AMD 依赖 rocm_smi_lib,部分发行版不打包;Intel 只需要一个 C 编译器和 sysfs 读权限。
阶段二:编译安装
git clone https://gitcode.com/GitHub_Trending/bt/btop cd btop make && sudo make install # x86_64 默认开启 GPU 支持 sudo make setcap # Intel 核显与 CPU 功耗需要| 参数 | 默认 | 作用 |
|---|---|---|
GPU_SUPPORT | true(x86_64) | 开启 GPU 监控,false 可关 |
RSMI_STATIC | false | 静态链接 ROCm SMI,AMD 无系统包时用 |
STATIC | false | 静态链接——注意会废掉GPU 监控(动态库加载失效) |
DEBUG | false | 详细日志,排查问题用 |
阶段三:验证生效
btop -u 1000 # 1000ms 刷新,曲线填得快,验证更直观按 F2(或 o)进选项菜单,在 "Manually set which boxes to show" 一项里加入gpu0、gpu1(每张卡一个)。回主界面按 5、6、7 切换各卡独立盒子的显隐,按 0 显示共享概览图——平均利用率、总功耗、总显存三条曲线。设置会写入~/.config/btop/btop.conf的shown_boxes项,下次启动自动生效。
三家数据源:NVIDIA、AMD、Intel 各读什么
NVIDIA 显卡利用率怎么查:全从 NVML 拿
NVIDIA 路径的数据全部来自 NVML:GPU 与显存双利用率、显存总量/已用、温度及关断阈值、图形/显存双频、功耗、PCIe 双向吞吐、编解码器利用率。源码运行时 dlopen 加载,不静态链接,也不用额外装驱动包。多卡系统里每张卡独立成盒,键位 5、6、7 依次对应 gpu0、gpu1、gpu2。
AMD ROCm 配置步骤与 sysfs 兜底
AMD 首选 ROCm SMI,读计算单元利用率、显存、温度和功耗。消费级卡上如果 ROCm 库枚举不到设备,源码里还有一条 sysfs 兜底路径,直接读/sys/class/drm,没有 rocm_smi_lib 也不至于完全空白。发行版没有包的话,两条路:装 ROCm SMI 包,或编译时加RSMI_STATIC=true静态链接。盒子的显隐、位置都可以在选项菜单里调整:
Intel 核显权限问题与引擎级监控
Intel 是三家中最特别的一个:v1.4.0 起直接移植了 intel_gpu_top 的逻辑,逐引擎读忙计数器,还能看到 RC6 节能状态、实际频率和内存控制器读写带宽。注意它只有利用率、功耗和频率——核显共享主存,没有独立显存可拆。读 PMU 计数器需要额外权限,这是 Intel 支持最常见的坑,装完执行一次sudo make setcap(或make setuid)即可,之后不用每次 sudo。
渲染监控:看三件事
以 Blender 长渲染为例,btop 能直接回答三个问题:
- 显存是硬指标:used 条持续 90% 以上还伴随卡顿,多半是显存吃紧,降分辨率或减帧数,这比盯着单卡命令直观。
- 按 0 看总览:平均利用率、总功耗、总显存三条曲线,不用盯单卡就能判断整机是否打满。
- 和 CPU 关联看:GPU 利用率掉到 0% 但渲染进程还活着,通常是单核或 IO 在等——这时看进程列表顶部是谁,别怪卡。
快速排障:三个最常见的故障
- NVIDIA 不显示→ libnvidia-ml.so 缺失或用了静态构建 →
ldconfig -p | grep nvidia-ml确认库存在;STATIC=true 编出来的版本不支持 GPU 监控,换动态构建。 - AMD 缺功耗/温度→ rocm_smi_lib 太旧或未安装 → 装发行版的 ROCm SMI 包,或
RSMI_STATIC=true重编。 - Intel 核显无数据→ sysfs PMU 读权限不足 → 安装后执行
sudo make setcap,或直接用 sudo 启动验证是否是权限问题。
btop 本质是个日常资源监控程序,GPU 监控是 Linux x86_64 上的加分能力。
git clone https://gitcode.com/GitHub_Trending/bt/btop踩过的坑欢迎评论区聊聊。
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考