macmon - Apple Silicon Mac 的性能监控利器

跑本地 LLM 模型的时候,一直想看 GPU 和 ANE 的实时功耗和温度。macOS 自带的 Activity Monitor 只有 CPU 使用率,看不到功耗数据。之前有 powermetrics 可以看,但要 sudo 权限,输出也是纯文本。后来发现了 macmon,Rust 写的 TUI 工具,不需要 sudo 就能看到芯片级的实时数据,果断装上。

安装

通过 Homebrew 安装:

/opt/homebrew/bin/brew install macmon

⚠️ 仅支持 Apple Silicon(M1-M5),x86 的 Homebrew 会报架构不兼容。

功能

macmon 通过 macOS 私有 API 采集数据,和 powermetrics 用同一个底层接口,但不需要 root 权限。主要功能包括:

  • 实时功耗:CPU / GPU / ANE 的实时功耗(瓦特)
  • 📊 CPU 集群利用率:E-Core 和 P-Core 分开显示
  • 💾 内存 / Swap 使用量
  • 🌡️ CPU / GPU 温度
  • 📈 历史曲线:带平均值和最大值
  • 🎨 6 种配色主题,按 c 切换
  • 🪟 紧凑模式可以塞进小窗口

使用

基本 TUI

macmon

image-20260430下午114907974

运行后界面分几个区域:

  • 顶部:芯片型号、E/P 核心数、GPU 核心数、内存大小
  • CPU 使用率曲线:E-Core 和 P-Core 分开显示,macOS 日常用 E-Core,重负载才切 P-Core
  • GPU 使用率:图形处理负载
  • 功耗和温度:系统总功耗、CPU/GPU/ANE 分项功耗,以及 CPU/GPU 平均温度

键盘操作:

快捷键 功能
q 退出
v 切换 Sparkline / Gauge 视图
c 切换配色主题

控制采样间隔

macmon -i 500

默认 1000ms 刷新,可以改成 500ms 更频繁。

输出 JSON 给其他工具

macmon pipe -s 10

会输出 10 条 JSON 格式的指标数据,适合管道到 jq 或者其他脚本处理。

macmon -i 500 pipe -s 10 | jq

HTTP Server 模式

macmon 还支持把指标暴露为 HTTP 服务,方便接入 Prometheus / Grafana:

macmon serve          # 默认 9090 端口
macmon serve -p 8080  # 自定义端口
macmon serve -i 500   # 采样间隔 500ms

两个端点:

端点 格式 说明
GET /json JSON 当前指标快照
GET /metrics Prometheus Prometheus 格式指标

接入 Prometheus 的配置示例:

scrape_configs:
  - job_name: macmon
    static_configs:
      - targets: ["localhost:9090"]

小结

macmon 是目前 Apple Silicon Mac 上最方便的终端监控工具,Rust 实现,单二进制文件,无需 sudo 就能看到芯片级功耗和温度。对于跑本地模型、监控系统负载来说非常实用。

参考

  • macmon GitHub:https://github.com/vladkens/macmon

修复 opencode 命令运行时报错 TypeError fn3 is not a function