macmon 是 Mac 上的芯片监控工具,免费开源,不用 sudo。Rust 写的命令行程序,只认 Apple Silicon,从 M1 支持到 M6。
0.10.0 版 10 月 14 日发布,装起来一条命令:brew install macmon。
它盯的是芯片本身:CPU、GPU 和神经网络引擎(ANE)的实时功耗、三档核心的频率与占用、内存和交换分区、风扇转速和温度。

功能:功耗、温度、进程,一个窗口全摆下
顶上一排数据盒,CPU、GPU、ANE 各自吃了多少瓦,系统总功耗、内存功耗、GPU 显存功耗分开列。
powermetrics 也能给你这些数,前提是先 sudo;macmon 不用。
频率和占用按核心档位给。能效核、性能核各自跑在多少兆赫,active_ratio 说的是这段时间里有多大比例在干活。
scaled_ratio 再把频率折算进去:同一个占用比例,跑在低频和跑在高频不是一个意思。
Apple 到 M6 把核心分成了三档,macmon 0.10 跟上的是这个。
内存和交换分区各占多少,风扇当前转速和上限是多少,powermetrics 能给的那几项都没落下。
底部是进程列表,每个进程的 CPU、内存、功耗和 GPU 占用都列出来。
0.10 新加了一列 TIME,可以点着排序,专门用来找吃 CPU 时间最多的那个。
键盘操作是这一版扩得最狠的地方。按 i 弹出信息浮层,选中进程的工作目录、打开的文件和套接字逐条列出来,按类型分组,还能再筛。
按 k 结束进程,Terminate 和 Force kill 两档,动手前会先问一次。按 e 在访达里定位,按 c 复制路径。
过滤走 / 键:逗号分隔多个词,词前加个 ! 就是排除,每个词后面还跟一行合计;记不住按键就按 ?,整张表都在。

除了看界面,还有三种用法。macmon pipe 把每次采样打成 JSON 吐到标准输出,管进 jq 就能接脚本。
加 -s 10 取十次、-i 500 把间隔压到半秒,够写个一次性探针。
macmon serve 换个活法,在本机起个 HTTP 服务,9090 端口上给两个端点。
/json 给当前快照,/metrics 按 Prometheus 的文本格式给全套指标。
想让它常驻就加 --install,会在 ~/Library/LaunchAgents 里建一个代理,登录自启、崩溃重启,plist 不用自己写。
另有一个 macmon stress,分 pulse、cpu、gpu、all 四种模式往芯片上压负载,拿来验证读数对不对。
优势:不装 sudo 就看得见,还能按进程算功耗
同类工具里,不装 sudo 是 macmon 最硬的一条。
powermetrics 是苹果自带的读数工具,每回都得先输密码。asitop、pumas 这些仿写的路数,根子都扎在 powermetrics 上,所以绕不开 sudo。
macmon 换了条路,直接去读 IOReport 里的隐藏能耗报告。
第二条是接口。管道吐 JSON、HTTP 端点吐 Prometheus,这两件事把它从「看一眼」变成「接得进监控面板」。
以前想给 Grafana 喂 Mac 的功耗,得自己写脚本去解析 powermetrics 那堆文本。
第三条是进程。macmon 能给出单个进程吃了多少功耗,htop、btop 这类通用进程查看器给不了。
编译时偷偷多吃的瓦数,最后都由电池和风扇买单,这笔账只有它算得清。
适合的人:常跑本地模型推理或大型编译,想知道芯片此刻到底吃了多少瓦。
还有想把 Mac 的功耗接进 Prometheus 和 Grafana 的台子,以及单纯不想给一个看温度的工具开 root 的。
不适合的有三个方向。想要菜单栏图标和图形界面的,macmon 只在终端里待着,serve 能自启但只给 HTTP。
想手动调风扇转速的,它只读不写,mactop 才带这个。想看磁盘和网络吞吐的,它也不管。
对比:和 mactop、asitop、NeoAsitop 摆一起看

| macmon | mactop | asitop | NeoAsitop | |
|---|---|---|---|---|
| 需要 sudo | 不用 | 不用 | 要 | 不用 |
| 语言 | Rust | Go | Python | Swift |
| 进程列表 | 有 | 有 | 没有 | 没有 |
| 结束进程 | 有,k 键 | 有,F9 键 | 没有 | 没有 |
| 数据接口 | JSON + Prometheus | JSON/CSV + Prometheus | 没有 | 没有 |
| 最近更新 | 2026-10-14 | 2026-09-30 | 2024-04 | 2024-07 |
| 安装 | brew install macmon | brew install mactop | pip install asitop | 下载 release |
真正的对手是 mactop。两个都不用 sudo,都带进程列表,都能结束进程,也都能吐 Prometheus。
差别在取向。mactop 铺得宽,22 种布局、全线温度传感器、Thunderbolt 带宽、网络与磁盘读数、风扇控制,活像个终端版的活动监视器。
写风扇那一步还是要 root,其余的都不需要。
macmon 收得窄,只盯芯片功耗和进程,界面朴素,依赖也少,和同类拉开了差距。
asitop 是这一脉的原点,Python 写的,当年很红,可仓库停在 2024 年 4 月。
README 上还写着只在 macOS Monterey 上工作,后来的系统一概没测。
NeoAsitop 拿 Swift 重写了一遍,同样不用 sudo,但测试机型只到 M1,2024 年 7 月之后再没动过。
一句话选型:只要芯片功耗、要最少的依赖和最好接出去的接口,选 macmon。
要传感器全、要调风扇、要能摆一屏花活,选 mactop;后两个当历史参照就行。
资料补充:macOS 27 换了读数来源,它是自己摸出来的

macOS 27 动了 CPU 和 ANE 的功耗读数。以前那条通道变得看得见、却不刷新。
想让它继续刷新就得要苹果签名的私有授权。苹果自家的 powermetrics 有这个授权,所以照样能用;macmon 拿不到,加 sudo 也拿不到。
作者的解法是从 AppleCLPC 驱动里翻出隐藏的能耗报告。
这些报告只给不透明的编号,不带 CPU、GPU、ANE 的名字,计数器和单位只能靠人工一件件对上。
换句话说,macmon 手里维护着一份苹果没公开的映射表,换新芯片时可能还得再补。
项目 2024 年 6 月建仓,MIT 协议,现在 1993 star。
0.10 这一版顺手把界面自身的 CPU 占用砍了一半,在虚拟机里跑则自动藏掉读不到的功耗和频率。

仓里另有一份 Rust 库的用法。想在自己的程序里采这些数,可以 cargo add macmon --no-default-features,示例见 examples/demo.rs。
在哪儿拿
下载地址在 https://github.com/vladkens/macmon,只认 Apple Silicon 的 Mac。
最省事的一条:brew install macmon。
不想装 Homebrew 也行,MacPorts、Cargo、Nix 三种装法 README 里都列了。
评论区