风扇转到飞机起飞的尖啸,键盘区烫到搁手腕都不舒服,电池以两倍速度往下掉。你没刻意启动任何重型应用——至少没有故意启动。Mac 上有什么东西在干真活,CPU 或者 GPU 在升温,系统管理控制器(SMC)正把风扇拉高来把温度压在范围内。风扇是症状,进程才是原因。 这篇文章讲的是怎么找到那个进程,而不是怎么让风扇闭嘴。
快速结论
Mac 发烫、风扇狂转,是因为一个或多个进程长时间维持高 CPU 或 GPU 负载。Apple Silicon Mac(M1/M2/M3/M4)比 Intel Mac 凉,但负载够重时一样会降频,有风扇的机型一样会把风扇拉高(MacBook Air 无风扇,只会安静降频)。风扇没有坏,那种只是把风扇曲线压低的”风扇控制工具”其实是在掩盖真问题(而且会缩短硬件寿命)。
最快的诊断路径:
- 打开活动监视器(
/应用程序/实用工具/活动监视器.app)→ CPU 标签 → 点 %CPU 列表头降序。任何持续在 80% 以上超过一两分钟的进程都是热源——记下它的名字,以及它是用户应用还是系统进程。 - 在 Mac 笔记本上,切到 能耗 标签,看 过去 12 小时 列——Apple 把这个列的定义为该应用过去 12 小时(或自开机至今、取较短者)的平均能耗影响。值高的应用就是在这个时间窗里一直在加热你 Mac 的那些,即使此刻它们看上去并不热。能耗标签和这一列只在 Mac 笔记本上显示。
- 如果活动监视器看不出明显问题但风扇还在响,负载很可能在 GPU 上,或者来自一阵短促爆发——还没等你打开工具就过去了。这正是 ProcXray 用历史数据弥补活动监视器盲区的场景,详见下文 Step 3。
最常见的元凶,大致按现实中出现的频率排:
- 浏览器某个标签页或扩展在烧 CPU(一个跑飞的脚本、一个泄漏的 WebGL canvas、一个行为异常的广告)——参考 Mac 上 Chrome Helper 吃内存 怎么把一个 Helper 反查回标签页。
WindowServer因为某个图形重型应用或某个卡住的显示配置被钉在高 CPU——参考 Mac 上 WindowServer 高 CPU。mds/mds_stores在大量文件变动或刚恢复完备份后重建 Spotlight 索引——参考 Mac 上 mds_stores 高 CPU。photoanalysisd在刚同步过的”照片”库里跑媒体分析(人脸、场景、物体识别)。kernel_task占用大量 CPU——这其实是 macOS 故意在限制热量,不是它自己在制造热量。真正的原因在别处(常常是某个东西在加热 SoC,或者充电器/USB-C 配件出问题)。- 一个你忘记的后台任务:HandBrake 在转码、虚拟机在跑、Time Machine 在备份、编译任务、Docker 守护进程、另一个 Spaces 里的 Zoom 共享屏幕。
接下来这篇文章主要解决”原因从一眼活动监视器看不出来”的情况。
风扇为什么转:热量是症状,不是根因
Mac 风扇由 Intel Mac 上的 SMC(系统管理控制器)和 Apple Silicon 上等价的固件控制。风扇曲线是被温度传感器驱动的,不是直接被 CPU 使用率驱动——但两者高度相关,因为现代笔记本里持续的 CPU 或 GPU 负载是热量的主要来源。链条是:
某个进程跑得很热 → CPU 或 GPU 封装温度上升 → SMC 提高风扇转速,让更多空气流过散热片 → 如果温度还在涨,SoC 降频(自己放慢自己)→ 极端情况下系统直接关机。
由此可以推出三点:
- 风扇转就是 Mac 在正常工作。 用第三方风扇控制工具压住风扇,只会让降频更早触发,长期还可能伤硬件。
- 看不到明显 CPU 负载却很热,几乎一定是 GPU 在干活、短促爆发负载,或者外部热源。 活动监视器的默认视图对 GPU 用量显示得不好;一个进程每分钟烧 20 秒 100%,正好在你看的时候不烧,那它就永远不会以一个稳定的高数字出现在你眼前。
kernel_task高 CPU 是热保护系统在干活。 macOS 故意在kernel_task上塞合成负载,把 CPU 时间从重型进程那里抢走,从而降低热量。看到kernel_task钉得很高,要问的是”是什么在加热 SoC?“——而不是”为什么 kernel_task 这么忙?“。常见答案:发热的充电器、把电源控制器搞糊涂的 USB-C 配件、环境温度高,或者另一个早已把温度推过安全阈值的重型进程。
在没有风扇的 Apple Silicon Mac(MacBook Air M1/M2/M3)上,同样的链条以降频收尾,而不是风扇噪声——Mac 会安静地慢下来。但诊断完全一样:找出烧得最猛的那个进程。
哪些情况会让 Mac 发烫
七种常见原因,大致按出现频率排:
1. 浏览器标签页或扩展跑飞
在普通用户的 Mac 上,这是迄今为止最常见的原因。一个标签页里跑飞的 JavaScript 循环、一个泄漏的 WebGL canvas、一段被软件解码(因为硬件解码失败而回退)的视频、一段恶意广告,都能让一个 CPU 核心持续跑在 100%。现代浏览器把标签页分到独立的 Helper 进程里,所以在活动监视器里看到的是 Google Chrome Helper (Renderer)、Safari Web Content、Microsoft Edge Helper 等——不是 Chrome 或 Safari 本身。参考 Mac 上 Chrome Helper 吃内存 学怎么把 Helper 反查回标签页或扩展。
2. WindowServer 在一条出问题的图形路径上空转
WindowServer 负责合成你屏幕上看到的一切。当一个图形重型应用、一个卡住的动画、一个外接显示器的奇怪配置,或者一条有 bug 的 GPU 驱动路径让它反复重做工作时,WindowServer 能把一两个核心钉满,同时 GPU 一直在画。机身发烫,但表面上没哪个用户应用看起来特别忙。完整排查路径见 Mac 上 WindowServer 高 CPU。
3. Spotlight 重新索引(mds、mds_stores、mdworker)
macOS 升级、大批文件搬动、刚恢复完 Time Machine、刚挂载一块新外接盘之后,Spotlight 会重建索引。涉及的进程是 mds、mds_stores、mdworker、mdworker_shared,每一个都可能烧掉一个或多个 CPU 核心几十分钟,大盘上偶尔几个小时。系统发烫、风扇转,工作是真的但是临时的。参考 Mac 上 mds_stores 高 CPU。
4. 照片库分析(photoanalysisd、mediaanalysisd)
导入或同步大量照片/视频之后,macOS 在后台跑人脸识别、场景分类、物体检测。相关进程 photoanalysisd 和 mediaanalysisd 被设计成在 Mac 正在被使用时降低自己、在 Mac 空闲时(包括插电闲置)猛跑。如果你发现 Mac 半夜或者你离开的时候在发烫,这是个高嫌疑原因。
5. 一个被忘掉的前台任务
多 Spaces 或多外接屏幕环境下很容易漏掉:另一个 Space 里 HandBrake 在转码、Docker 跑着一个失控的容器、虚拟机、Xcode 在构建、cargo build --release、Final Cut Pro 在导出、Zoom 或 Teams 通话在共享高分辨率屏幕。这些都不是 bug——它们是真活——但仍然是热量的来源。
6. 发热的充电器、不靠谱的 USB-C 配件、环境热
热量不一定来自 SoC 内部。一个出问题的电源适配器、效率低的 USB-C hub、扩展坞、损坏的线缆、阳光直射顶盖,或者在软表面(床、沙发)上使用堵住底部出风口,都会拉高机身温度。SMC 的反应跟 CPU 热是一模一样的:转风扇、提高 kernel_task。症状:kernel_task CPU 很高,但找不到明显的其他罪魁进程。
7. 真硬件问题:积灰、干涸的硅脂、风扇老化
对于用了三四年以上的 Mac,散热片里积灰、出厂硅脂老化,两件事都会降低散热系统的效率。以前安静处理的工作开始让风扇响起来。轴承出问题的风扇也可能为了弥补风量下降而转得更快、发出可听见的杂音。这是最后才该假设的——绝大多数”我 Mac 发烫”的案例是软件问题——但确实会发生。
怎么找到真正的元凶
Step 1:活动监视器——CPU + 能耗标签,按这个顺序
/应用程序/实用工具/活动监视器.app。打开 CPU 标签,按 %CPU 降序,然后让它摆个 60–90 秒,看哪些进程一直在涨。不要只看一眼快照——热量来自持续负载,所以你要看的是”一两分钟里一直高的是谁”,不是某一瞬间排第一的是谁。
关于百分比的提醒:活动监视器里 100% CPU 意思是相当于一整个 CPU 核心。多核 Mac 上,一个进程报到远超 100% 是正常的——比如 380% 对一个用四个核心并行构建的任务来说很正常,不是误读。
在 Mac 笔记本上,切到 能耗 标签。过去 12 小时 列显示的是 Apple 所谓”过去 12 小时(或自开机至今、取较短者)的平均能耗影响”——这是找出”一小时前在加热 Mac、现在没在”的那个应用的地方。它经常能抓到 CPU 标签错过的元凶:曾短促烧 CPU 几十次的聊天客户端、通话中走 GPU 重路径的视频会议应用、半夜跑的索引后台任务。(能耗标签只在 Mac 笔记本上显示。)
如果某个进程名字看起来陌生(bird、cloudd、accountsd、assistantd、siriknowledged、photoanalysisd、mediaanalysisd),它几乎一定是 Apple 系统后台守护进程在干后台活——把名字带 “macOS” 一起搜一下再下”是不是恶意软件”的判断。
Step 2:用 powermetrics 看更完整的画面(终端)
powermetrics 是个内置命令行工具,会按很高频率采样报告每个任务(task)的 CPU 和能耗,外加整体的 CPU 和 GPU 功率,Intel Mac 上还有封装温度、Apple Silicon 上有 SoC 功率。需要 sudo。一行有用的命令:
sudo powermetrics --samplers cpu_power,gpu_power,tasks -i 5000 -n 6
这会打印 6 次 5 秒采样:tasks 采样器给出按任务的 CPU 和能耗,gpu_power 给出整机的 GPU 功率(它不按进程拆 GPU 用量)。能拿到的信号是”现在 GPU 在烧,同时这些是按 CPU/能耗最重的任务”——适合发现 WebGL 标签页或硬件加速视频在重压 GPU 但 CPU 看着不高的情况,但你仍然没法从它读出具体是哪个进程在用 GPU。
Apple Silicon 上还可以试 sudo powermetrics --samplers ane_power 看 Apple 神经网络引擎用量(ML 或照片分析是元凶的时候有用)。
Step 3:ProcXray 看历史数据和按进程的 GPU/功率
活动监视器和 powermetrics 加起来还是解决不了两个场景:
- 你开会那十分钟里风扇一直在叫,你检查的时候一切都已经平静了。
- Mac 只是间歇性发烫——一阵一阵的,你总是错过活跃窗口。
这两个场景都需要按进程的历史数据,但内置工具谁都不存。ProcXray 就是围绕这件事造的:
- 资源历史保存几小时内每个进程的 CPU、GPU、内存、功率,你可以回滚到风扇最响的那一刻,看那一刻哪个进程最热。这是抓住间歇性热源的唯一可靠办法。
- 系统仪表盘把整体 CPU + GPU + 功率并排画出来,让你不用手对日志就能看到 GPU 飙升和风扇拉满的时间关系。
- 按进程的 GPU 和功率列按当前 GPU 用量和功耗排序——不只是 CPU%。一个走硬件加速的 WebGL 标签页或视频转码常常 CPU 不高但 GPU 和功耗都不低,而 macOS 内置工具完全不暴露这种按进程的视角。
- 命令行视图显示每个进程的完整启动参数——分辨 Helper 子类型、识别哪个渲染器属于哪个扩展、查看某个后台守护进程是用什么参数启动的,都用得上。
- 窗口取景器识别任何可见窗口的归属进程,遇到”某个 app 在发热但 Dock 或菜单栏看不出是谁”时有用。
关于内置工具的盲区有哪些,更详细的对比见 ProcXray vs 活动监视器。
Step 4:排除外部原因
如果没有明显的进程主导而且 kernel_task 是最大的 CPU 用户:
- 一个一个拔掉外设——USB-C hub、外接显示器、扩展坞、充电器——每拔一个就观察
kernel_task是不是在一两分钟内冷静下来。充电器和扩展坞值得最先试,因为排除起来很快。 - 把 Mac 挪到平整硬表面上,把出风口(多数 MacBook 在转轴后侧,老款在底部)周围的遮挡物清掉。床上、沙发上使用通常会让机身温度升高 5–10°C。
- 检查环境温度。 35°C 以上环境温度下,即使是轻负载 Mac 也会转风扇;Apple 公布的运行温度范围上限是 35°C。
如果 kernel_task 只在 Mac 接上充电器的时候才高,试一个不同的充电器或线缆——出问题的电源适配器或非 Apple 认证的配件,可以在其他症状出现之前先以热问题的形式表现出来。
分步修复
按顺序来,最便宜、最不打扰的先做。
1. 退出或重启那个进程
如果是用户应用——浏览器、构建工具、聊天客户端、视频编码器——退出它,看温度有没有降。如果同一个应用一启动又立刻发热,你就有了一个可复现的案例,可以提 bug 给厂商或者绕过它(比如关掉某个标签页、不打开某个文档、停用某个功能)。
如果是系统守护进程(mds、WindowServer、photoanalysisd),不要第一步就强杀——这些进程通常在干合理的、有限的活。等一等,或者去处理根因(让 Spotlight 索引完、让”照片”分析完、用 launchctl 重启相应子系统)。上面每个守护进程对应的链接文章会讲正确做法。
2. 关浏览器标签页 + 停用可疑扩展
如果元凶是浏览器 Helper,打开浏览器自带的任务管理器(Chrome / Edge / Arc / Brave 里窗口菜单 → 任务管理器)结束最重的标签页或扩展。完整映射流程见 Mac 上 Chrome Helper 吃内存。整体重启浏览器会重置每一个 Helper,常常比追单一标签页更快。
3. 让后台系统任务跑完,然后确认它们停了
Spotlight 索引、照片分析、Time Machine 备份、软件更新都是边跑边加热的有限后台工作。让 Mac 插电、打开盖、不动一两个小时(如果改动量大——新照片库、刚恢复的备份——可以放一晚),然后再看活动监视器。如果一整晚闲置之后这些进程还在发热,就当成异常去对应守护进程做单项排查。
4. 排除外部热源
挪到硬表面、清出风口、一个一个拔外设、换充电器和线。如果拔某个特定配件后温度在一两分钟内下来了,那就是答案。
5. 重置 SMC(仅 Intel Mac)或重启(Apple Silicon)
Intel Mac 上,SMC 重置可以修复”风扇控制器卡在高转速、跟实际温度脱钩”的情况。具体按键组合因机型而异——Apple 的 SMC 重置支持文章是权威:在 Intel Mac 上重置 SMC。Apple Silicon Mac 没有 SMC 重置;普通重启起同样作用。
6. 更新 macOS 和关键应用
历史上有好几个 macOS 版本带过 WindowServer、mds 或图形驱动的回归 bug,让部分用户出现发热问题,后续更新里修复了。Chrome、Slack、Zoom、Teams 也一样。如果发热问题正好在某次更新之后开始、又跟其他用户的反馈吻合,去看一下有没有后续更新。
7. 硬件维修:积灰、硅脂、风扇
如果软件这一路都试过了、Mac 又用了好几年,散热系统本身就是下一个假设。授权服务可以清散热片积灰、换干涸的硅脂、换出问题的风扇。这是个真修复,不是装饰性的——但它不该是你的第一步。
如果发热只是诸多症状之一,需要更广义的 Mac 性能排查,参考 怎么通过结束正确的进程修好运行变慢的 Mac。
FAQ
为什么我的 MacBook 风扇突然变得这么吵?
几乎都是因为某个进程产生了足够多的热量,SMC 需要更多气流来把温度控制住。风扇反应是对的,问题是哪个进程。在活动监视器 CPU 标签排个序看 60 秒,再看能耗标签的”过去 12 小时”列里最近在加热 Mac 的应用。
Mac 这么烫安全吗?
现代 Mac 设计成在损坏之前老早就降频——SoC 太热时它会自己慢下来,极端情况下系统直接关机。重型负载下短时间发烫是正常的。每天连续几个小时持续发烫会缩短电池寿命、长期可能影响其他部件,所以值得解决而不是忽略,但不是紧急事件。
我要不要装个风扇控制工具让 Mac 安静一点?
不要。压住风扇曲线、降低转速的工具是用噪声换更高的 SoC 温度,结果是降频更早触发(Mac 变慢)、长期可能缩短硬件寿命。去找出制造热量的进程修掉它,不要去压制散热反应。
为什么我 Mac 一发烫 kernel_task 就占那么多 CPU?
kernel_task 故意消耗 CPU 时间来阻止重型进程跑、来降热。Apple 在 关于 kernel_task 进程 里有正式说明。看到 kernel_task 高,原因在别处——常常是发热的充电器、不靠谱的 USB-C 配件、环境热,或者另一个早已把温度推过阈值的重型进程。
我的 MacBook Air 没风扇——为什么还是发烫?
无风扇的 MacBook Air(M1 及之后)靠机身被动散热和必要时降频处理热量。诊断流程完全一致:找出烧 CPU、GPU、功率最猛的进程。Mac 不发风扇噪声,只是安静地变慢。
macOS 上能看按进程的 GPU 使用率吗?
活动监视器的 窗口 → GPU 历史 显示整体 GPU 用量,但不按进程拆。powermetrics 能给出整机的 GPU 功率(gpu_power 采样器)和按任务的 CPU/能耗线索(tasks 采样器),但没有任何 macOS 内置工具给出稳定的按进程 GPU 视图。ProcXray 在进程树里直接显示按进程的 GPU 使用率,并保留历史。
资料来源
- Apple 支持 — 关于 kernel_task 进程
- Apple 支持 — 在 Intel Mac 上重置 SMC
- Apple 支持 — Mac 笔记本电脑的工作环境和温度
- Apple 支持 — 如何使用活动监视器
- Mac 上 WindowServer 高 CPU
- Mac 上 mds_stores 高 CPU
- Mac 上 Chrome Helper 吃内存
- ProcXray vs 活动监视器
- 如何在 macOS 上监控进程:开发者完整指南
免费下载 ProcXray → — 在一个视图里看按进程的 CPU、GPU 和功率,几小时历史让你能抓到你不在的时候加热你 Mac 的那个进程。macOS Sonoma+,Apple Silicon & Intel。