问题
最近经常遇到一些莫名其妙的机器崩溃重启问题,还有就是外接显示器有时候会绿屏或者不识别。另外就是某端时间之后,总是发现WindowServer
进程CPU占用总是偏高,平时基本在30%~40%,一旦有任务会拉高到更高。这究竟是为什么呢?
分析
通过查询机器崩溃的报告,得到一个结论,就是需要检查一下内核扩展是否存在可能的问题。那如何查看已经加载的内核扩展呢? 可以通过这款工具kextviewr
来查看。安装这款工具可以使用brew
1 2 |
brew cask install kextviewr |
然后可以运行这款工具,取消Show OS kexts
的勾选,就能看到安装的第三方内核扩展了。
这里发现了MSMVideoDevice.kext
和MSMVideoBuffer.kext
两个扩展。经过查找,是之前安装iDisplay后来删除后遗留的。另外还有一个Zoom的音频扩展,也一并处理掉。运行以下命令
1 2 3 |
rm -rf /Library/Extensions/MSMVideoDevice.kext rm -rf /Library/Extensions/MSMFramebuffer.kext |
然后重启即可。重启后观察到WindowServer
这个进程的CPU占用在平时降低到5%甚至以下了。看来这和无用的iDisplay内核扩展确实有关系。
后记
以后删除macOS的应用的时候还是要注意,不仅仅是把app拖到垃圾桶就行了。如果有安装其他东西,特别是内核扩展,一定要记得删除。不然性能会受到影响。