如何在Mac OS中识别连接到kernel_task进程的文件和程序?


5

我知道kernel_task进程链接到System / Library / Extensions(以及可能的Library / Extensions?)中的几个.kext文件。如何识别哪些文件对Activity Monitor中标识的400多MB内存使用有贡献?我可以做些什么来卸载或删除不需要的进程以减少内存使用量?


1
kernel_task是一个过程 - 你的意思是“流程正在贡献”
马克

1
你在谈论使用400MB物理内存的kernel_task进程吗?它在这里使用2.6GB,所以400MB听起来不太糟糕。
nohillside

我想我的意思是.kext文件与它有关。我知道它们是Mac OS上各种程序的配置文件,但有些可能是不必要的。我怎么知道哪个?我可以卸载那些不再需要的吗?
intcreator 2015年

Answers:


6

我找了一些显示/操作内核扩展的通用命令。kextstat引起了我的注意,根据它的输出,第4列是

kext占用的内核内存的字节数。如果这是零,则kext是内核的内置部分,其具有记录作为用于解决kexts之间的依赖性的kext。

唯一的问题是它的大小是十六进制的。所以我将十六进制转换为十进制并仅打印相关信息(如kext bundle id)。

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

打破它:

  • kextstat -l -k - 打印已加载的非内置kexts列表
  • | awk '{n = sprintf("%d", $4); print n, $6}'- 将输出管道化awk,将第4个“大小”列从十六进制转换为十进制,打印该字符串和kext包ID。
  • | sort -n- 将输出sort通过数字比较传递给命令并对列表进行排序(使“10”不小于“1”)。

您可以将输出通过管道输入以tail -n 3获得前3个内存hogger。这是我的:

1757184 com.apple.nvidia.driver.NVDAGK100Hal
2572288 com.apple.nvidia.driver.NVDAResman
3923968 com.apple.driver.AirPort.Brcm4360

更新:你也可以通过管道grep -v com.apple来查看加载了哪些非苹果kexts。


看起来非常好然后我猜... AirPort一般是指wifi,对吧?即使我没有AirPort路由器也应该使用它,对吧?
intcreator 2015年

1
是的,这个一般是指WiFi。
Eimantas 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.