Building a macOS app to know when my Mac is thermal throttling
5 months ago
- #macOS
- #thermal-throttling
- #SwiftUI
- 作者开发了MacThrottle——一款用于监测M2 MacBook Air热降频的macOS应用,特别针对高负载外接显示器场景
- 当CPU占用率达100%但功耗骤降时就会触发热降频,导致系统卡顿或无响应
- 苹果的ProcessInfo.thermalState和powermetrics都能提供热状态数据,但两者粒度和状态划分不同,使得ProcessInfo难以有效检测实际降频
- 作者发现thermald守护进程会向Darwin通知系统(notifyd)写入热压力数据,无需root权限即可获取
- 该应用采用SwiftUI菜单栏程序形式,通过温度计图标颜色变化(绿到红)直观显示热状态
- 初期版本使用powermetrics需要root助手,后改为利用thermald的IPC通知机制,兼顾安全性与简洁性
- 温度与风扇数据以紧凑折线图呈现,可显示10分钟窗口内的CPU温度曲线及风扇转速(若支持)
- 应用支持macOS状态变更通知,并通过SMAppService实现开机自启
- 由于未进行公证,安装需额外步骤,部分机型需要从源码编译