bottom 是一个跑在终端里的系统监控面板,主程序 5325600 字节。CPU、内存和交换区,加上网络与磁盘,连温度和进程表都放在一屏,方向键翻,鼠标也能点。
它解决的问题是「看资源占用要开一个大窗口」。任务管理器一开就是几百兆内存加一个图形界面,远程连上去还传不动。bottom 常驻 35.5 MB,在 SSH 里就能画图。
这次在 Windows 10 22H2 上跑了完整一轮:解压 0.04 秒,版本命令 168 毫秒,从下令到画出第一帧 1123 毫秒,空载常驻 35.5 MB。
一个 5325600 字节的监控面板
官方 zip 1926802 字节,解开 9 个条目。主程序直接放在压缩包根目录,不像别的工具套一层版本号目录。
| 文件 | 字节 | 作用 |
|---|---|---|
| btm.exe | 5325600 | 主程序,单文件 |
| zip 整体 | 1926802 | 解压后 9 个条目 |
| completion\ | 5 个脚本 | bash / zsh / fish / elvish / nushell |
| README.md | 约 6 KB | 安装与配置说明 |
版本命令 168 毫秒
连跑三次分别是 214 毫秒 / 194 毫秒 / 168 毫秒。第一次的差值同样是杀毒软件扫描新文件。
# 三次耗时 214 / 194 / 168 毫秒
btm --version
bottom 0.14.9
输出只有一行。它是 Rust 写的单文件程序,不需要 .NET 或 Node 这类运行时。
首帧 1123 毫秒
首帧是从 ConPTY 里下令开始,到输出流里出现 CPU 面板字样为止。1123 毫秒里有相当一部分是 cmd 与 ConPTY 建立的开销,程序本身的热启动在 168 毫秒上下。
| 环节 | 耗时 | 说明 |
|---|---|---|
| 解压 | 0.04 秒 | 9 个条目 |
| --version 第 1 次 | 214 毫秒 | 冷启动 |
| --version 第 3 次 | 168 毫秒 | 趋于稳定 |
| ConPTY 首帧 | 1123 毫秒 | 含 cmd 与 PTY 建立 |
第一帧要采一次全量数据
CPU 百分比、内存和网络速率,加上磁盘占用与进程表,这五块在首帧都要有值,所以启动时要先把每个数据源读一遍。1123 毫秒里这一轮采样占掉大头。
之后是增量刷新,默认一秒一帧。滚到别的面板不会重新采样,只是换个视图渲染。
五块面板各看什么
默认布局把 CPU 放最大,右边是内存与网络,下面是磁盘与进程表。截图那次 CPU 已经接近打满,内存也用掉九成。
| 面板 | 实测内容 | 怎么用 |
|---|---|---|
| CPU | 每核一条柱状图,右侧标百分比 | 看出是单核打满还是全核平均 |
| MEM / SWP | 29.3GiB / 31.9GiB 与交换区用量 | 判断是内存不够还是泄漏 |
| NET | RX 2.9M/s、TX 1.9M/s 加累计流量 | 确认有没有在偷偷传数据 |
| DISKS | 各分区占用条与读写速率 | 看是哪个盘在忙 |
| 进程表 | PID / CPU / 内存 / 读写 / 状态 | 定位具体是哪个进程 |
CPU 面板用柱状而不是折线
终端里画折线要占两三倍行高,柱状一行就够表示一个核。核多的机器上,这个取舍尤其明显。
网络与磁盘面板反过来用折线加面积,因为它们要看趋势而不是瞬时值,默认 1 秒刷新一帧。这两种画法在同一屏里混着用。
它自己占多少资源
监控工具最容易被忽略的一点是自身开销。这次单独起一个进程,等五秒后读它的资源占用。
| 指标 | 实测值 | 说明 |
|---|---|---|
| 常驻内存 | 35.5 MB | 空载,只显示面板 |
| 线程数 | 11 | 采样与渲染分开 |
| 空闲 CPU | 1.6% | 一秒一帧的刷新成本 |
| 启动到首帧 | 1123 毫秒 | 含终端建立 |
1.6% 在低配机器上要留意
这个数字是在一台多核机器上测的,摊到单核占比很小。换成两核的旧机器,同样的刷新频率会明显占一个核的份额。
嫌吵就调刷新间隔,配置文件里把 update_rate 从一千毫秒改成两千,成本直接减半,代价是曲线变粗。
和任务管理器的分工
两者不是替代关系,看场景选。
| 场景 | 任务管理器 | bottom |
|---|---|---|
| 本地看总体 | 顺手,点开就有 | 要开终端 |
| 远程 SSH | 传不过去 | 能跑,只要有终端 |
| 看历史曲线 | 有,但粗 | 可以按秒级滚动 |
| 结束进程 | 右键就杀 | 要进面板选进程再按确认 |
远程场景才是它的主场
SSH 进一台机器,没有图形界面,想看负载只能靠 top 那种纯文本。bottom 在同样条件下把曲线画了出来,常驻 35.5 MB,这是它和任务管理器最本质的差别。
两者可以并存。日常扫一眼用任务管理器,要盯某台机器的趋势就开 bottom。
四个真会踩的地方
配置文件路径不在程序目录
第一次运行会创建配置,位置在 %APPDATA%\bottom\bottom.toml。改布局、改刷新间隔和配色都在这个文件里,放在程序目录旁边的那个不会被读。
进程名是真实的
面板直接显示进程名,没有打码参数。做截图发出去之前要考虑这一屏里有没有不该公开的东西,这次的处理是把名字那一列糊掉,其余 7 列原样保留。
conhost 里颜色发灰
老版控制台只支持十六色,柱状图看起来是一坨。换 Windows Terminal 才有渐变与真彩色,同一条命令两种观感。
窄窗口下布局会折叠
列数小于八十时右侧面板被挤掉,只剩 CPU 与进程表。窗口拉到一百二十列以上,五块面板才排得开。
什么场景值得上
管远程机器的人最合适。5325600 字节的单文件,scp 上去就能跑,不装包、不依赖桌面环境,1123 毫秒出第一屏。
排查「机器为什么卡」时也顺手。CPU 柱状图能直接看出是单核打满还是全核平均,比看一个总百分比有用。
反过来,只在自己电脑上偶尔看一眼占用,任务管理器够用。多装一个终端工具,收益不明显。
| 项目 | 数值 |
|---|---|
| exe 字节 | 5325600 |
| zip 字节 | 1926802 |
| 常驻内存 | 35.5 MB |
| 空闲 CPU | 1.6% |
| 首帧 | 1123 毫秒 |








