btop|终端里的 GPU 监控,一次编译三家通吃
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
渲染任务突然变慢,你手边却只有一个top,连 GPU 利用率都看不到——这就是 btop 要解决的场景:一个轻量级终端资源监控器,把 CPU、内存、磁盘、网络和 GPU 利用率实时曲线放进同一个终端窗口。本文按"跑通 → 用起来 → 排障"的顺序讲,读完你能带走:
- 一条带 GPU 支持的 btop 编译命令
- GPU 面板是否生效的判定标准(看哪行输出、按哪个键)
- 三条最常用的配置项和几个马上能试的快捷键
- 一个四行排障速查表
能力全景:btop 的 GPU 监控到什么粒度
btop 的数据分三层走:
- 采集层:CPU/内存/磁盘/网络从
/proc和 sysfs 读取;GPU 数据在src/linux/btop_collect.cpp里按厂商走不同动态库——NVIDIA 走 nvidia-ml,AMD 走 rocm_smi_lib,Intel 核显走src/linux/intel_gpu_top/下内嵌的采集模块(该目录还带一份 CMake 构建配置)。 - 渲染层:
src/btop_draw.cpp把采样值画成终端图形字符曲线、显存条和温度读数。 - 交互层:
src/btop_menu.cpp提供 F1/F2 菜单和全部快捷键,所有选项都能从 UI 里改。
一句话概括它的差异点:同一份二进制覆盖 NVIDIA、AMD、Intel 三家——多数同类工具只覆盖其中一两家。
从零到跑通
环境自检
这一步确认编译器版本和厂商库齐不齐:
- 编译器要GCC ≥ 14 或 Clang ≥ 19(C++23,构建脚本会检查
std::expected、std::ranges等特性); - NVIDIA 用官方驱动(闭源或开源内核模块均可),自带 nvidia-ml 动态库;AMD 需系统里有
rocm_smi_lib;Intel 核显额外要求能读 SYSFS,靠make setcap解决。
构建与安装
x86_64 Linux 上 GPU 支持默认开启,Debian/Ubuntu 系装好构建依赖后直接编译安装:
# 构建依赖(Debian/Ubuntu 示例;Fedora 用 dnf install 对应包) sudo apt install build-essential coreutils sed git lowdown # 克隆并编译 git clone https://gitcode.com/GitHub_Trending/bt/btop.git && cd btop make && sudo make install需要动手的构建参数只有三个:
| 参数 | 作用 | 什么时候需要 |
|---|---|---|
GPU_SUPPORT=false | 关闭 GPU 支持(x86_64 Linux 默认开) | 目标机不带显卡时省依赖 |
RSMI_STATIC=true | 把 rocm_smi_lib 源码打进lib/rocm_smi_lib/静态编译 | AMD 卡且发行版没装 rocm_smi_lib |
STATIC=true | 全静态链接 | 目标机环境差异大;注意静态编译会禁用 GPU 支持 |
验证生效
先看版本号,启动后验证面板:
# 版本信息里应能看到 GPU 支持字样,没有就回头查编译参数 btop -V判定标准:启动 btop 后按数字键5,界面上出现显卡面板(利用率曲线、显存条、温度/功率)即算成功。没出现?先查编译时GPU_SUPPORT是否生效、对应厂商库是否装好;Intel 核显还要确认做过make setcap。
场景实战:三个盯 GPU 的时刻
推理任务盯显存。现象是吞吐掉、GPU 利用率却不高。这时看 GPU 面板的显存条和利用率:显存贴近上限,btop 看显存能立刻确认是 OOM 边缘在反复重建上下文,而不是算力不够——加显存或降 batch size,方向完全不同。
长批处理盯温度功率曲线。温度/功率的斜率比单点值有用:曲线一路缓升说明散热跟不上负载,可以提前降频或加大风扇;GPU 占用 100% 但温度曲线走平,多半是数据供给没喂满,瓶颈在 CPU 或磁盘。
多卡核对负载。数字键5、6、7依次切换第一到第三块卡(5~9对应 gpu0~gpu4),各卡曲线摆在一起看:高低差明显就是任务没均分,据此改调度;+/-键每次增减 100 ms 刷新间隔,长曲线用 2000 ms 以上采样更平滑。
个性化与进阶
配置都在 F2 选项菜单里,落到~/.config/btop/btop.conf,四个最常被改的参数:
shown_boxes:手动指定默认显示的盒子,值里加gpu0(多卡加gpu1、gpu2),启动后 GPU 面板不用再按5;graph_symbol:曲线符号,braille分辨率最高、tty最省字体;update_ms:刷新间隔,默认 2000 ms,低于 100 ms 的取值会被拒;temp_scale:温标,celsius/fahrenheit/kelvin/rankine四选一。
主题放themes/目录,40 多套官方配色;想换风格只需改主题文件里的几个色值,比如 themes/horizon.theme。
踩坑速查
| 现象 | 根因 | 修复 |
|---|---|---|
按5没有 GPU 面板 | 发布/静态二进制未启用 GPU 支持(动态加载厂商库与静态链接互斥) | 从源码重编,make GPU_SUPPORT=true |
| Intel 核显无数据 | 普通用户读 SYSFS 无权限 | sudo make setcap(非默认安装前缀时加PREFIX=...) |
| AMD 卡缺功耗/频率 | 发行版没打包 rocm_smi_lib | 源码放lib/rocm_smi_lib后make RSMI_STATIC=true重编 |
编译报缺std::expected/std::ranges | 编译器版本不足,C++23 新特性未就绪 | 换 GCC ≥ 14 或 Clang ≥ 19 |
仓库在https://gitcode.com/GitHub_Trending/bt/btop,需要 Intel 侧更细粒度指标或新版 GPU 行为变化时,先看仓库里的CHANGELOG.md——v1.4.0 起 Intel 支持才纳入主线。
【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trending/bt/btop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考