修复MacBook缓慢
备注
本文是我遇到的一个硬件系统缓慢异常的处理实践记录,仅供参考
我最近一年重新开始在 MacBook Pro 15" Late 2013 上重新安装了 macOS Big Sur (Version 11.7.10,该硬件支持的最高版本),但是发现一个非常奇怪的现象:
在重新安装macOS之前, MacBook Pro 15" Late 2013 部署的是 Arch Linux ,运行性能正常。但是切换回macOS之后,发现中文输入法时候经常卡顿,也就是选词弹出会停顿不流畅,其他现象就是操作系统启动和应用启动明显比之前缓慢很多。
最初我怀疑是磁盘SSD存在故障,但是也未免太巧了。但是没有其他异常,也就忍了。
最近我在尝试对比 Rancher Desktop 运行的 Lima: Linux Machines 虚拟机性能,尝试在虚拟机内容器运行 Sphinx文档 的 make html 并对比物理主机 MacBook Pro 15" Late 2013 macOS直接运行 make html 的编译时间,结果大出意料: 物理主机的编译速度居然比虚拟机编译速度还要慢10倍:
make html 耗时The HTML pages are in build/html.
real 16m 0.05s
user 6m 59.18s
sys 0m 25.22s
make html 耗时make html 8881.77s user 29.18s system 98% cpu 2:30:41.26 total
可以看到虚拟机容器编译耗时16分钟,大多数时间都是在等待磁盘IO;但是物理主机编译则完全消耗在User空间的计算任务,却惊人地消耗了2.5小时,物理主机居然整整慢了10倍?
这是一个古怪的结果...
排查
Google AI提到了:
如果硬件散热问题(例如风扇积灰或散热膏失效),macOS会通过
kernel_task进程占满CPU资源来防止CPU进一步法人,从而导致用户任务极其缓慢电源适配器功率不足(非原装或充电头/线材孙欢),macOS也可能会进入低功耗模式,墙纸锁定CPU频率
对应排查方法:
在终端运行
pmset -g thermlog,观察到CPU_Speed_Limit数值小于100说明正在发生硬件限速
make html 编译任务时检查 pmset 输出# pmset -g thermlog
Note: No thermal warning level has been recorded
Note: No performance warning level has been recorded
2025-12-21 23:46:04 +0800 CPU Power notify
CPU_Scheduler_Limit = 100
CPU_Available_CPUs = 8
CPU_Speed_Limit = 100
但是我没有观察到 CPU_Speed_Limit 低于 100
系统级干扰可能有:
SSD剩余空间足部(通常低于15%)时文件系统读写效率会断崖式下跌,且交换文件(swap)效率极低,会影响所有计算密集型任务
如果物理主机在进行Spotlight索引,Photos图库处理或Time Machine备份,则CPU资源会被占用
我的主机都没有上述现象
排查造作:
重置控制芯片:尝试重置 SMC (系统管理控制器) 和 NVRAM,这能解决许多与电源管理和硬件性能相关的古怪问题
检查电池状态:如果 Mac 电池显示“建议维修”,系统可能会为了保护电压稳定而大幅降低 CPU 频率
我的电池检查完全正常(最近一年刚更换过电池),而且我是插着电源工作,不会受到电池影响
所以我的排查转向尝试 Mac设备重置
Mac设备重置 ,完成后发现并没有改善,编译执行时间:
make html 8449.83s user 18.93s system 98% cpu 2:22:43.11 total
我忽然想起MacBook Pro有两个显卡,CPU集成的Intel GPU以及外置的NVIDIA GeForce 750M。我之前遇到过内置Intel显卡发生过显示抖动问题,所以曾将关闭了
Automatic graphics switching功能而优先使用外之地NVIDIA GeForce 750M。最近一次重装系统又恢复为默认的自动显卡切换。会不会是这个自动显卡切换触发了异常的主频限制功能?
很不幸,我管理自动显卡切换,强制启用NVIDIA GeForce 750M,发现性能没有改善。
进一步排查
我回忆之前安装过的Linux系统,感觉当时使用Linux系统的性能是正常的,似乎是重装macOS之后才发现性能缓慢的。
我推测是不是Linux没有自动显卡支持,或者有什么电源节能管理功能绕过了这个MacBook Pro存在异常的节点组件?我甚至推测由于设备非常陈旧,是否有某个电源管理模块监控功能混乱导致macOS无法正常管理CPU频率。而我安装了Linux系统,恰恰因为不完全支持MacBook Pro的节点管理功能,误打误撞绕过了这个问题。
暂时解决
由于是非常古老的MacBook硬件,我并没有一直使用这台笔记本电脑,偶然在使用时发现这台笔记本再次无法启动,并且每次加电都会进入修复模式,强制要求我重装系统。我开始担心是硬件故障了
MacBook 启动时自动进入 Recovery(恢复)模式并提示重装系统,通常意味着电脑在启动过程中遇到了无法自行修复的问题,导致无法引导进入正常的 macOS 系统:
文件系统错误: 磁盘的目录结构或分区表出现故障
磁盘空间极度不足: 如果硬盘几乎全满,系统可能无法创建必要的缓存文件来完成启动
硬件故障: 对于较旧的机型(如带机械硬盘的 MacBook),可能是硬盘老化;对于新款(板载 SSD),则可能是闪存芯片故障
我在Recovery过程中使用了 First Aid 工具检查macOS卷,显示正常,但是检查 macOS-Data 卷是出现报错 rror: (oid 0x15891b) om: btn: found zeroed-out block Ojbect map is invalid. The volume /dev/rdisk3s1 cound not be verified completely. File system check exit code is 8. :
错误代码 exit code is 8 (表示fsck_apfs发现错误但无法在线修复)配合 found zeroed-out block (发现全零块,意味着磁盘在该位置数据已经全部丢失或无法读取)和 Object map is invalid (对象映射无效),是一个比较典型的 APFS 文件系统底层元数据损坏,通常是频繁断电、强制关机、或SSD固件瞬时故障导致卷的元数据出错。
尝试修复:
# 卸载卷
diskutil unmountDisk /dev/disk3
# 强制修复: 注意这里用 rdisk 速度更快,且针对整个容器
/sbin/fsck_apfs -fy /dev/rdisk3
但是很不幸,修复不成功
但是幸运的时,按照提示重新安装了一遍Big Sur系统(格式化抹掉了磁盘数据)之后,整个macOS意外复活了: 已经不再像之前重装系统之后非常卡顿甚至编译也非常缓慢。
这让我非常惊喜也非常疑惑,和gemini讨论之后,推测主要原因:
Late 2013 MacBook Pro (Haswell 架构)运行 macOS 11 Big Sur 出现卡顿,往往不是 NVMe 硬盘的硬件缺陷,而是 macOS 11 对非原生驱动支持的优化问题,以及 Big Sur 之后系统对索引(Spotlight)和图形加速(Metal)的需求大幅提升所致
显卡 (核心限制):Late 2013 使用的是 Intel Iris Pro (GT2) 或 NVIDIA GT 750M。这些显卡不支持 Metal 2/3
系统设置 -> 辅助功能 -> 显示 -> 降低透明度(Reduce transparency)对于非原生Metal显卡的老Mac提升明显
我使用了第三方NVMe( 三星PM9A1 NVMe存储 ),其早期固件版本在macOS下存在Trim延迟(尤其是 7301Q 或更早版在非原生系统下会导致严重的性能衰减)
当 使用OCLP(OpenCore Legacy Patcher)安装最新macOS 前建议 在WinPE环境更新Samsung PM9A1 firmware
在 OCLP 编译设置中,确保开启了
SetApfsTrimTimeout为999或-1。这能极大缓解启动缓慢和写入时的系统假死(也就是Trim超时立即返回避免陷入长时间假死)
下一步
在和gemini讨论 Obsidian(黑曜石) 无法在Big Sur安装时,gemini建议我 使用OCLP(OpenCore Legacy Patcher)安装最新macOS 15 Sequoia 来实现