解决在 OS X 中导致迟缓的 systemstats CPU 使用问题
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 还提供了强制退出进程的能力:
- 打开活动监视器,使用“搜索”功能查找“systemstats”
- 选择错误的 systemstats 进程并选择 (x) 按钮强制退出
- 如果有多个正在运行的进程占用过多的 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 以使全部更改生效。