【免费下载链接】MacThrottle
Menu bar app to know when your Mac is thermal throttling
Mac 在重度编译、导出视频或跑大型模型时会悄悄变慢,这往往是**热降频(Thermal Throttling)**在起作用。MacThrottle 是一款轻量级 macOS 菜单栏热压力监控工具,能实时显示 5 级热压力状态、CPU 温度和风扇转速,并在热降频发生时发出通知。本文将用它作为例子,带你一文搞懂 macOS 热压力 5 级机制及其对 Mac 性能的真实影响。
什么是热降频?为什么你的 Mac 会突然变慢
当 CPU、GPU 等芯片持续高负荷运行时,温度会不断攀升。为了不让芯片过热损坏,macOS 会主动降低芯片运行频率和功耗——这就是热降频。
热降频的典型表现:
- 🔥 跑分、编译、视频导出任务越跑越慢,甚至卡住
- 💻 机身发烫,风扇狂转(有风扇的机型)
- 📉 多任务切换时出现明显卡顿
好消息是:热降频是自我保护机制,不是故障。但你需要知道它何时发生,才能针对性优化(比如暂停后台任务、改善散热、调整负载)。
macOS 热压力的 5 个等级:一张表看懂
macOS 内核会持续评估整机的"热压力(Thermal Pressure)",并将其分为5 个等级(数值 0~4)。MacThrottle 通过系统 Darwin 通知读取这一状态,无需管理员权限,核心实现见 ThermalPressureReader.swift。
| 系统数值 | 等级名称 | MacThrottle 显示 | 含义 | 对性能的影响 |
|---|---|---|---|---|
| 0 | Nominal(正常) | 🟢 Nominal | 温度一切正常 | 无任何影响 |
| 1 | Moderate(中等) | 🟡 Moderate | 温度升高,系统开始收紧功耗 | 基本无感知,功耗预算收紧 |
| 2 | Heavy(重度) | 🟠 Heavy | 热降频正式开始,主动限制频率 | 性能明显下降 |
| 3 | Trapping(受限) | 🔴 Critical | 严重过热,大幅限制芯片与外设 | 性能大幅下降 |
| 4 | Sleeping(休眠) | 🔴 Critical | 极端情况,系统可能强制进入休眠 | 机器可能直接"睡着" |
💡重点记忆:Heavy(第 2 级)是分水岭。从这一级开始,芯片频率被实质性压低,你才会真正感受到"变慢"。这也是 MacThrottle 默认在 Heavy 和 Critical 两级推送通知的原因——判定逻辑可参考 ThermalModels.swift。
由于 Trapping 和 Sleeping 在实际使用中极少出现,MacThrottle 将它们合并显示为Critical,用红色图标thermometer.sun.fill警示你。菜单栏图标与状态的对应关系定义在 MenuBarIcon.swift 中:
| 菜单栏图标 | 对应状态 |
|---|---|
thermometer.low | Nominal(正常) |
thermometer.medium | Moderate(中等) |
thermometer.high | Heavy(重度降频) |
thermometer.sun.fill | Critical(严重降频) |
为什么值得盯住"完整 5 级"而不是系统自带的 4 状态?
macOS 其实提供了公开 APIProcessInfo.thermalState,但它只有 4 个状态,粒度不够:
ProcessInfo.thermalState | 对应的实际热压力等级 |
|---|---|
| nominal | Nominal |
| fair | Moderate + Heavy(被混为一谈!) |
| serious | Trapping |
| critical | Sleeping |
问题在于:Moderate(还没降频)和 Heavy(已经降频)在公开 API 里都叫fair。而这两者的体验差距是**"还满血"和"已经降频"**的差别。MacThrottle 直接读取系统内部通知com.apple.system.thermalpressurelevel,完整保留 5 级粒度,让你精准知道降频是否真的发生了。
上手 MacThrottle:菜单栏里看温度与历史曲线
安装后,MacThrottle 常驻菜单栏,点击图标即可看到:
- 当前热压力状态(Nominal / Moderate / Heavy / Critical,颜色区分)
- CPU 温度:直接从 SMC 芯片读取各核心温度,取最高值显示(实现见 TemperatureReaders.swift)
- 10 分钟历史曲线:背景色块代表热压力等级变化,白色曲线为温度,青色虚线为风扇转速百分比
- Statistics 统计:最近 10 分钟中,Mac 在每个热压力等级停留的时长与占比
- 通知设置:可在 Heavy / Critical / 恢复时收到通知,并可选提示音
数据每 2 秒采集一次,面板逻辑在 ThermalMonitor.swift,界面在 MenuContentView.swift。它还支持:
- Launch at Login:开机自启
- Show Temperature in Menu Bar:菜单栏直接显示温度数字
- 无风扇机型(如 MacBook Air)会自动隐藏风扇相关选项
MacThrottle 安装方法:一行 Homebrew 命令搞定
MacThrottle 要求macOS 15.0(Sequoia)及以上,无需管理员权限和后台守护进程。
方法一:Homebrew 安装(推荐)
brew tap angristan/tap brew install --cask macthrottle方法二:下载 Releases 安装包
由于应用未签名,首次启动可能被 Gatekeeper 拦截。将MacThrottle.app拖入应用程序文件夹后,在终端执行:
xattr -r -d com.apple.quarantine /Applications/MacThrottle.app方法三:本地编译(自动使用你的证书签名)
git clone https://gitcode.com/gh_mirrors/mac/MacThrottle cd MacThrottle xcodebuild -project MacThrottle.xcodeproj \ -scheme MacThrottle \ -configuration Release \ -derivedDataPath build打开MacThrottle.xcodeproj按Cmd+R也可以直接构建运行。更多安装细节可查阅 README.md。
发现热降频后怎么办?实用建议清单
当菜单栏图标变成橙色(Heavy)或红色(Critical)时:
- ⏸️暂停非必要的高负载任务:关闭视频渲染、虚拟机、大规模构建,让热压力回落到 Nominal
- 🔍查看历史曲线定位规律:如果每次跑同一类任务都进入 Heavy,说明该负载超过了这台机器的持续散热能力,可考虑分批处理
- 🌬️改善散热环境:避免把笔记本放在被子、沙发等遮挡进风口的位置;桌面端可清理风扇灰尘
- 🔕善用通知功能:开启 On Heavy / On Critical 通知,即使在看别处也能第一时间知道 Mac 正在降频
- 📊用 Statistics 评估占比:若 10 分钟内 Heavy 占比超过 50%,你的工作流已长期处于过热边缘,值得重新规划任务调度
常见问题 FAQ
Q:MacThrottle 会占用多少资源?它只是轻量菜单栏应用,每 2 秒读取一次 SMC 温度和系统热压力,没有守护进程、不需要 root 权限,对性能影响可忽略不计。
Q:温度显示和其他工具不一致?MacThrottle 优先读 SMC 各核心传感器(针对 M1~M4 芯片维护了不同的传感器键),失败时回退到 IOHIDEventSystem,两种来源的读数可能略有差异,属正常现象。
Q:无风扇的 MacBook Air 能用吗?可以。热压力、温度、历史曲线、通知功能全部可用,仅风扇转速一栏会自动隐藏。
小结
macOS 热压力分为Nominal、Moderate、Heavy、Trapping、Sleeping 共 5 级,其中Heavy 是热降频真正开始的分水岭。MacThrottle 以完整 5 级粒度(合并显示为 4 态)把这个"隐形降频"过程可视化到菜单栏,配合温度曲线与停留时间统计,让你从"感觉变慢"升级到"看得懂为什么变慢"。装好它,你的 Mac 性能问题就不再是玄学了。
更多功能细节与版本记录,可参考项目内的 README.md 与 CHANGELOG.md。
【免费下载链接】MacThrottle
Menu bar app to know when your Mac is thermal throttling
相关推荐
如何看懂 macOS 内存压力:Mac Performance Monitor 压力指数计算原理完整拆解
如何看懂 macOS 内存压力:Mac Performance Monitor 压力指数计算原理完整拆解 Mac Performance Monitor 是一款
FLTK未来发展方向:新特性预览与社区贡献指南
FLTK未来发展方向:新特性预览与社区贡献指南 FLTK(Fast Light Tool Kit)作为一款轻量级跨平台GUI开发工具包,正通过持续的技术创新和社
彻底搞懂NVIDIA开源驱动:内存分配如何影响GPU性能?
彻底搞懂NVIDIA开源驱动:内存分配如何影响GPU性能? 你是否曾遇到过GPU内存不足导致程序崩溃?或者疑惑为什么相同硬件配置下,有些应用能流畅运行而有些却卡
驱动开发操作系统高性能计算
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考