Как исследовать использование памяти ядра с высоким ядром?

Я использовал мой MBP (с 16 ГБ оперативной памяти), как обычно, и из-за синего. Я это всплывающее окно, которое:

  

В вашей системе закончилась память приложения.

     

Чтобы избежать проблем с компьютером, закройте все приложения, которые вы не используете.

Force Quit Applications - ваша система закончила память приложения - снимок экрана

Я, очевидно, закрыл несколько, что мог, но это не помогло.

После проверки памяти, кажется, что задача ядра - 7 ГБ, и 22,36 ГБ памяти памяти было использовано в общей сложности 23 ГБ (что, очевидно, имело место). Однако у меня еще 20 ГБ свободного места на SDD.

Память - меню iStat - снимок экрана

Монитор активности не помог, пока моя OS X направлялась к уничтожению.

Process Explorer

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.

В конце моя ОС X заморозилась, и мне пришлось выполнить жесткий сброс, восстановить мой SDD в режиме восстановления и впоследствии исправлять (восстановление потерянной работы, исправление конфликтов приложений, проверка папки с потерянными + найденными, вкладки Chrome /Terminal, головная боль и т. д.).

Мой вопрос: как я могу проверить использование памяти ядра с помощью ядра или как правильно справляться с такой ситуацией? Я попытался взять Sample с Activity Monitor, но он greyed out.


Мои данные MBR: 2.3 ГГц Intel Core i7 (конец 2013 года) с 16 ГБ оперативной памяти. OS X: 10.9.5

103 голоса | спросил kenorb 25 MarpmWed, 25 Mar 2015 23:37:45 +03002015-03-25T23:37:45+03:0011 2015, 23:37:45

2 ответа


146

Есть много вещей, которые идут не так с высоким использованием задач ядра. Обычно это связано с неправильным или тяжелым процессом, который чрезмерно использует системные ресурсы (такие как индексирование хранилища, запуск виртуальных машин, слишком много вкладок в веб-браузере или некоторые другие фоновые процессы).

Вот несколько методов, которые помогают исследовать проблемы использования ядра OS X:

Основные методы

  • Запустите Console.app и отметьте ' Все сообщения ', чтобы увидеть, происходит ли что-то необычное в настоящее время.
  • Используйте Монитор активности для чтения системной памяти и определения сколько CPU, ОЗУ и Диск используются.

    Альтернативно запустите top в Terminal и удерживайте Пробел для обновления - проще найти причину проблемы ( swapins / swapouts / диски ?).

  • Запустите sudo fs_usage в Terminal , чтобы сообщать о системных вызовах и ошибках страниц, связанных с действиями файловой системы в режиме реального времени (я думаю, это лучший вариант из всех остальных). Затем нажмите Control - C , чтобы остановить его.

    Действие: подумайте о том, как убивать приложения, которые часто появляются в списке, но вы их не используете.

    Подробнее читайте в: Как отладить процесс безконтрольного â € œkernel_task?

  • Запустите sudo syscallbypid.d (или syscallbyproc.d), подождите немного, нажмите Control - C . Теперь проверьте, какой процесс вызвал большинство системных вызовов за это время (последний столбец), и если вы его узнаете, подумайте об этом. Если нет, Google и узнайте больше об этом.

Расширенные методы

  • Используйте команду sysdiagnose (можно запустить, нажав Shift - Control - ⌠¥ - âŒ~ - . (период), чтобы быстро собрать общесистемную диагностическую информацию, полезную при исследовании проблем с системной памятью /производительностью (появится в /var/tmp) либо вы, либо ребята из Apple. Во время анализа старайтесь ничего не делать, когда это делается - рассмотрите разжатие сгенерированного файла и анализ журналов.

    См. Как получить системные диагностические файлы из OS X?

  • Запустите footprint, чтобы собрать подробную информацию о памяти на уровне типа виртуальной зоны и обмениваться байтами:

    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 - принудительно очищать кеш диска (очищается и очищается)

    Его функция в основном заключается в том, чтобы завершить все операции ожидания ввода-вывода, которые используют дисковый кеш, а затем освободить весь загруженный кеш диска, поэтому он должен освободить место на диске, чтобы облегчить подкачку и переключение из основной памяти. Он безопасен в использовании, поскольку он не влияет на анонимную память, которая была распределена через malloc, vm_allocate и т. Д.

  • Используйте некоторые сторонние приложения, чтобы очистить некоторые излишние памяти, такие как iBoostUp , SystemPal и т. д.

  • Вы также можете отключить временный прожектор:

    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) или рекламные анимации, постоянно отображающие содержимое.

ответил kenorb 26 MarpmThu, 26 Mar 2015 15:20:00 +03002015-03-26T15:20:00+03:0003 2015, 15:20:00
3

У меня была очень похожая проблема после замены моего ЖК-экрана на iMac в конце 2012 года. Вентилятор работал на высоких оборотах и ​​имел высокую загрузку процессора Kernel_task. Я сузил его до датчика температуры, который вы должны перенести со старого ЖК-экрана на новый экран замены. если вы забудете сделать это, скорость процессора и Kernel_task повлияют на замедление работы вашей системы.

ответил fern10 3 J000000Sunday16 2016, 00:07:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132