解决在 OS X 中导致迟缓的 systemstats CPU 使用问题

systemstats process going wild on a Mac

systemstats 进程用于检索有关系统统计信息和电源使用情况的信息,尽管它通常在后台不被注意地运行,但众所周知,systemstatsd 和 systemstats 进程在 OS X 中会随机失控,消耗 100%-300 % 或更多 CPU 同时降低 Mac 速度。

一般来说,如果您看到 systemstats 在活动监视器上出现短时间飙升或顶部,则无需担心,许多标准 Mac 功能可能会导致它暂时出现。例如,systemstats 进程在 MacBook 系列上通过查看能源使用选项从OS X 电池菜单,其他用户在调整其他能源设置时可能会短暂看到它。当进程无缘无故地以非常高的 CPU 使用率持续运行时,就会出现问题,这就是我们要在这里解决的问题。

杀死错误的systemstats进程

简单地终止 systemstats 进程可以解决 OS X 中几乎所有事件的 CPU 使用率和缓慢问题。

Terminal:对于那些喜欢使用 Terminal 的人来说它的速度,征服疯狂的 systemstats 进程只是转储 killall 命令的问题:

sudo killall systemstats

sudo 是必需的,因为 systemstats 进程以 root 身份运行。

Activity Monitor:许多用户更喜欢留在 OS X GUI 和 Activity Monitor 还提供了强制退出进程的能力:

  1. 打开活动监视器,使用“搜索”功能查找“systemstats”
  2. 选择错误的 systemstats 进程并选择 (x) 按钮强制退出
  3. 如果有多个正在运行的进程占用过多的 CPU,则重复此操作

这应该会立即解决问题,但如果您不断尝试访问电池或系统使用情况,那么您会看到该过程再次出现。

如果问题仍然存在,重置 SMC 可能会解决挥之不去的问题。

此外,禁用 App Nap 还可以解决 systemstats 的遗留和自发问题,如果它们只发生在系统唤醒或启动时。

禁用系统统计

不推荐,除了禁用属性电池和电源管理监控(包括 App Nap 功能)外,它可能会产生意想不到的后果,但您可以禁用 systemstats,但从 launchd 卸载守护进程。这应该仅限于高级用户:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.systemstatsd.plist

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.systemstats.daily.plist

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.systemstats.analysis.plist

请注意,这也会导致所有“powerstats”报告不再出现在控制台系统诊断报告中。

同样,不建议禁用 systemstats。可以通过使用以下三个命令将守护进程重新加载回 launchd 来撤销这些更改:

sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.systemstatsd.plist

sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.systemstats.daily.plist

sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.systemstats.analysis.plist

无论哪种情况,您都需要重新启动 Mac 以使全部更改生效。