如何调查高内核任务内​​存使用情况?


131

我像往常一样使用我的MBP(具有16GB的RAM),并且突然出现了以下弹出窗口:

您的系统已用完应用程序内存。

为避免计算机出现问题,请退出所有未使用的应用程序。

强制退出应用程序-您的系统已用完应用程序内存-屏幕截图

我显然已经关闭了一些我能做的,但没有帮助。

检查内存后,似乎内核任务占用了7GB内存,而使用了22.36GB的交换内存,总共使用了23GB内存(显然是这种情况)。但是,我的SDD上仍有20GB的可用空间。

内存-iStat菜单-屏幕截图

当我的OS X即将销毁时,Activity Monitor并没有太大帮助。

流程浏览器

kernel_task-“内存”选项卡-屏幕截图 kernel_task-“统计信息”选项卡-屏幕截图

我的top我的内核冻结之前的统计:

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

最后,我的OS X死机了,我不得不进行硬重置,以恢复模式修复SDD并随后进行修复(恢复丢失的工作,修复应用程序冲突,检查丢失的文件夹),Chrome /终端标签消失,头痛等。 )。

我的问题是,如何检查内核任务的高内存使用率或如何正确处理这种情况?我尝试使用活动监视器获取Sample,但是它是灰色的。


我的MBR详细信息:配备16GB RAM的2.3GHz Intel Core i7(2013年末)。OS X:10.9.5


1
@klanomath通常我有很多冻结,尤其是长时间运行时,这些只是出于未知原因的内核冻结(我的MBR是相当新的)。但这是我第一次看到内存不足的弹出窗口(具有16GB RAM和50GB可用空间)。但是,我的主要问题是如何调查内核任务的内存使用情况,因此,是否可重现应该无关紧要。
kenorb

5
使用zprint -t(狮子)或sudo zprint -t(山狮及以后)。
klanomath

1
您对标题中的问题的可重复性无关紧要,但您可能是对的,但解决您的问题可能与之相关。
klanomath

1
您介意将输出添加到问题中(或将其保存到文档中)吗?仅供以后参考/以便将其与在更关键的系统状态下生成的zprint进行比较。恕我直言,这是倒霉的事。如果您发布它,我也许可以告诉您更多。
klanomath

1
我突然间遇到了同样的问题。我很确定它与Mac或hyperkit的docker有关。一旦我停止了Mac的docker,kernal_task就开始吃掉10GB以上的内存
Charlie Martin

Answers:


176

高内核任务使用率有很多问题。通常,这与错误或繁重的过程有关,这些过程过度使用了系统资源(例如索引存储,运行中的VM,Web浏览器中的选项卡过多或某些其他后台过程)。

以下是一些有助于调查OS X内核使用问题的方法:

基本方法

  • 运行Console.app并检查“ 所有消息 ”以查看当前是否发生了异常情况。
  • 使用活动监视器读取系统内存,并确定正在使用多少CPU,RAM和磁盘。

    或者运行top终端和保持Space刷新-更容易找到原因问题(swapins / swapouts / 磁盘?)。

  • sudo fs_usage终端中运行,以实时报告与文件系统活动相关的系统调用和页面错误(我认为这是所有其他方法的最佳选择)。然后按Control- C停止。

    行动:考虑杀死经常出现在列表中的应用程序,但您没有使用它们。

    在以下位置了解更多信息:如何调试失控的“ kernel_task”进程?

  • 运行sudo syscallbypid.d(或syscallbyproc.d),稍等片刻,按Control- C。现在检查在给定的时间内哪个进程生成了最多的系统调用(最后一列),如果您识别出它,则考虑将其杀死。如果没有,请谷歌搜索并了解更多信息。

先进的方法

  • 使用sysdiagnose命令(可通过点击触发Shift- - Control- - .期)快速收集系统范围的诊断信息有帮助调查系统内存/性能问题(将出现在/var/tmp)。或者您或苹果的家伙在分析过程中,尽量不要做完成后的所有操作-考虑解压缩生成的文件并分析日志。

    请参阅:如何从OS X获取系统诊断文件?

  • 运行footprint以按VM区域类型级别和交换的字节收集详细的内存信息:

    sudo footprint -a
    

    旧版本:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • 使用spindump剖析整个系统,它会生成/tmp/spindump.txt文件(包括内核及其扩展)。

  • 使用vm_stat显示虚拟内存统计。例如

    vm_stat 1 # to display every second.
    
  • 使用zprint检查一下内核的使用信息,这是可能的:

    sudo zprint -t -s | head -n20
    

    它会显示最浪费的内核区域。

  • 使用newproc.d执行时为它们窥探新工艺,creatbyproc.d为文件:

    sudo newproc.d
    sudo creatbyproc.d
    

    注意:在较新的OS X(10.11或更高版本)上,启用完整性保护(按选中csrutil status)时,此功能可能不起作用。

  • 尝试sar-系统活动报告程序,可以抽样和报告操作系统维护的各种累积统计信息计数器。

有关更有用的调试工具,请检查dtrace脚本(grep dtrace /usr/bin/*)。如果您知道导致问题的错误过程,则可以使用dtruss它进行调试。


动作

这里有一些建议可以帮助您解决操作系统问题。

  • 释放一些不活动的内存。为此,您必须先刷新缓存并强制清除磁盘缓存:

    sync && sudo purge
    

    sync -强制完成挂起的磁盘写入(刷新缓存)

    purge -强制清除(清空并清空)磁盘缓存

    它的功能基本上是终止所有正在使用磁盘高速缓存的I / O挂起操作,然后释放所有占用的磁盘高速缓存,因此它应释放磁盘空间以方便分页和换出主内存。使用它是安全的,因为它不会影响通过malloc,vm_allocate等分配的匿名内存。

  • 使用某些第三方应用程序清除一些过度使用的内存,例如iBoostUpSystemPal等。

  • 您还可以禁用临时Spotlight:

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

    并通过以下方式考虑其他服务:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • 退出您的网络浏览器,并检查是否有帮助。例如,使用Chrome浏览器非常资源丰富,尤其是在后台进行某些前端处理(例如Javascript)或类似广告的动画不断渲染内容时。


1
聚光灯不断出现,但我没有使用它,每当我杀死它时,它会在第二秒后再次出现...我如何/应该摆脱它?
2016年

1
@ling我建议您再问一个问题,因为这与高内核任务内​​存有关,而与Spotlight无关。
kenorb '16

2
遗憾的是,我的Mac上有4 GB的内存,而最近内核任务已上升到3.1 GB,基本上冻结了我的整个计算机。关闭了我的Google云端硬盘标签,它下降到950 MB ...
Zizouz212 '16

3
不够具体,无法真正解决kernel_task内存和CPU使用率过高的问题。
hyiltiz

6

在2012年末的iMac上更换液晶屏后,我遇到了一个非常相似的问题。风扇以较高的RPM运行,并具有较高的CPU Kernel_task使用率。我将其缩小为一个温度传感器,您必须将其从旧的LCD屏幕移动到新的替换屏幕。如果您忘记这样做,则会影响CPU速度和Kernel_task,从而降低系统速度。

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.