macOS Spotlight 索引优化

判断与结论

现象

电脑体感卡顿(风扇狂转、操作延迟),但 Activity Monitor 里 CPU 和内存占用看起来都不高。

排查过程

  1. 先看整体指标:uptime 显示 load average 32(正常应个位数),sysctl vm.swapusage 显示 swap 用了 6.3GB/7GB 几乎满了。但 CPU idle 60%+ ——说明瓶颈不在计算,而在 IO。
  2. 定位 IO 来源:top -l 1 -o pageins 按换页次数排序,发现 mds_stores(Spotlight 索引)和 syspolicyd(Gatekeeper 验签)的 pageins 数远超其他进程,是 swap 风暴的主要制造者。
  3. 验证:排除相关目录后,load average 从 32 降到 4,风扇立刻安静。

结论

Spotlight 的 mds_stores 会无差别扫描所有目录(包括 . 开头的隐藏目录),遇到文件多或变动频繁的目录时会持续索引,挤占内存引发 swap 风暴。典型触发场景:

  • 文件数量大:包管理缓存(node_modules、.git objects、site-packages)、AI 工具缓存
  • 文件变动频繁:iCloud 同步目录、构建产物目录
  • 内容对搜索无价值:二进制文件、编译产物

排除方式两种:

  1. System Settings → Siri & Spotlight → Spotlight Privacy 里添加目录
  2. 目录下放一个 .metadata_never_index 空文件(但 iCloud Drive 下可能不可靠,建议用方式 1)

参考依据

  • 排查路径:top -l 1 -o pageins 可以按换页次数排序进程,定位到 mds_stores / syspolicyd 是罪魁祸首
  • 排除后 load average 从 32 降到 4,风扇立刻安静,效果立竿见影