Mac 的 syspolicyd 占用高,先找触发它的应用
刚打开下载的应用,syspolicyd 就排到了 CPU 列表前面,可以先回头看刚才开了什么,Apple 的 Gatekeeper 排障说明里记录了 syspolicyd 参与系统策略评估和公证检查的情况,但单看 CPU 很高,还不能确定它在检查哪个应用,也不能断定系统出了问题。
syspolicyd 在检查什么
Gatekeeper会帮助核对 App Store 以外软件的开发者身份,Apple 的代码签名指南说明,应用首次启动时会接受签名评估,嵌套代码也在检查范围内,syspolicyd 参与的是这些安全检查,不是在替应用处理日常功能。
刚下载的应用第一次打开,是值得核对的时间点,如果刚更新了应用、打开了大型应用包或多个下载的安装器,或者在反复构建和运行开发版本,就记下 CPU 上升时打开或替换了哪个包,这些是排查线索,不代表每次下载和构建都会触发同样的评估,也不能据此认定检查一定更慢。
想查整个进程列表和归属,可以看Mac 进程说明,这里重点看反复评估某个应用的情况,不再逐个介绍后台进程。
先留一段没有新操作的观察时间
在活动监视器的 CPU 列表里看 syspolicyd,记下占用开始上升和回落的时间,Apple 的活动监视器指南介绍了进程搜索、按列排序和进程信息窗口。
- 记下占用上升前的应用名称、版本和操作。
- 让已经开始的安装完成,期间不再打开新的应用。
- 暂停自己反复构建和启动的操作,或者排队打开应用的任务。
- 连续看几次 CPU 读数,再单独试一个已知应用。
安静下来后占用回落,是一条有用的线索,但还不能确定之前哪个应用触发了检查,这个方法没有固定等待时长,比起一次读数变低,持续回到没有操作时的水平更有参考价值。
区分首次检查和能重复出现的问题
每次只变一个条件,前后才容易比较。
| 观察到的情况 | 能说明什么 | 下一步 |
|---|---|---|
| 停止打开新应用后占用下降 | 这段时间里活动减弱了 | 恢复正常使用,留意是否重现 |
| 每次打开同一个应用都伴随占用上升 | 有能重复的关联,还不是原因 | 记下版本,检查这份应用 |
| 没找到触发操作,占用仍持续很高 | 首次启动还解释不了全部情况 | 保留观察记录,联系 Apple 支持 |
如果涉及反复构建,等没有操作时的对比完成后,再恢复一次构建并记下结果,占用重新上升就停止这次实验,不要同时改构建方式、安装包来源和安全设置,否则很难判断哪个变化起了作用。
检查反复触发的那份应用
Apple 的排障说明把签名损坏和公证问题分开处理,如果同一份应用反复打不开,先保留自己的文档,再从开发者获取新的安装器,打不开的提示和 CPU 上升要分开记录。
开发者或支持人员需要进一步核对时,Apple 提供了下面的签名验证方法,把示例路径换成要查的那份应用,保留引号。
codesign -v -vvv --strict --deep "/Applications/Example.app"
这条命令检查代码,不会改写签名,失败的结果需要开发者判断,通过也不代表公证一定正常,更不能解释 CPU 占用,把结果、应用版本、macOS 版本和复现时间一起交给开发者,观察电脑能否安静下来时,不要反复运行验证。
保留 Gatekeeper 检查
关闭评估会改变安全边界,并没有修好触发检查的应用,Apple 的签名说明解释了开发者身份和公证的作用,不要为了压低 CPU 占用移除隔离属性,也不要改系统策略数据库。
如果电脑慢不只发生在这个进程上,可以接着看Mac 为什么变慢,先分清 CPU 压力和其他原因,再决定要不要移除应用或数据。
Mole 能帮上什么
Mole Mac 的状态页会显示进程的 CPU 和内存占用,点 % CPU 列可以排序,方便查看忙碌的进程,Mole 不修改 Gatekeeper 策略,用这里观察占用变化就好,不要把排在前面当成结束 syspolicyd 的理由。
常见问题
syspolicyd 占用高就说明它是恶意软件吗?
名字本身既不能证明可信,也不能证明恶意,先核对进程身份和占用上升前的操作,再判断原因。
能关闭 Gatekeeper 来降低 CPU 占用吗?
保留安全检查,去查触发它的应用或能重复的操作,找不到触发条件时,把观察记录交给 Apple 支持,不改安全策略。
为什么同一个应用还会触发?
反复出现就值得检查这份应用和它的更新、构建流程,但仅凭占用上升,不能断定签名损坏、公证失败或 macOS 有缺陷。