Hasty Briefsbeta

双语

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实现开机自启
  • 由于未进行公证,安装需额外步骤,部分机型需要从源码编译