bmtop 里的预估瓦特——归因模型,不是功率计
在 Mac 上做终端监控有两件麻烦事:按进程 CPU 排序很容易,「Chrome 占多少瓦」却不是内核里的单个字段。bmtop 展示当前版本写明的 SoC 向遥测,并明确预估瓦特是归因模型。
可以放心排序的
CPU 时间、常驻内存、线程数等来自标准进程接口,按它们排序很直接:
// 示意用的排序键——不是完整的 bmtop 采样器
#[derive(Clone, Copy)]
struct ProcSample {
pid: i32,
cpu_pct: f32,
mem_bytes: u64,
energy_impact: f32, // 平台在可用时提供的信号
}
fn top_by_cpu(mut rows: Vec<ProcSample>) -> Vec<ProcSample> {
rows.sort_by(|a, b| b.cpu_pct.partial_cmp(&a.cpu_pct).unwrap());
rows
}
「预估瓦特」指什么
在 Apple Silicon 上,系统工具能给出封装级功耗与热上下文。把封装功耗映射到各个 PID 需要模型:CPU 能耗影响占比、显示归因、采样窗口。活动监视器、powermetrics、菜单栏应用会对不上,因为它们优化的问题不同。
bmtop 产品页用白话写了边界:预估瓦特不是实验室级的逐进程功率计。风扇狂转时,把它当作 CPU% 旁边的诊断提示——结束进程前仍要确认。
SoC / 封装遥测 ──► 上下文条(功耗、温度、风扇,若硬件暴露)
进程采样 ──► 可排序表(CPU、内存、能耗相关信号)
用户确认 ──► 退出 / 信号(默认不静默强杀)
传感器因机型而异
风扇转速和部分温度节点取决于硬件。某台 Mac 缺少风扇行,常常是「未暴露」,不是「bmtop 忘了做」。当前构建声称什么,以产品页版本说明为准。
相关链接
- 产品:bmtop
- 源码:BetterMacNet/bmtop(MIT)