Як дослідити використання високої пам'яті завдання ядра?


131

Я використовував свій MBP (з 16 ГБ оперативної пам’яті) як завжди, і це не так сильно.

У вашій системі не вистачає пам'яті додатків.

Щоб уникнути проблем із комп’ютером, закрийте будь-які програми, які ви не використовуєте.

Force Quit Applications - у вашій системі не вистачає пам'яті додатків - скріншот

Я, очевидно, закрив мало, що міг, але це не допомогло.

Після перевірки на пам'ять, схоже, завдання ядра з'їла 7 ГБ та 22,36 Гб оперативної пам’яті загальною кількістю 23 ГБ (що, очевидно, так було). Однак у мене на SDD все ще 20 ГБ місця.

Пам'ять - меню iStat - скріншот

Монітор активності не дуже допомагав, поки моя ОС X прямувала до знищення.

Провідник процесів

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, відсутній головний біль тощо). ).

Моє запитання полягає в тому, як я можу перевірити високе використання пам'яті завдання ядра або як правильно впоратися з такою ситуацією? Я намагався взяти зразок з "Монітором активності", але він виявився сірим.


Мої реквізити MBR: 2.3 ГГц Intel Core i7 (кінець 2013 року) з 16 Гб оперативної пам’яті. ОС X: 10.9.5


1
@klanomath Зазвичай у мене досить багато заморожувань, особливо при тривалому режимі роботи, і це просто ядро ​​замерзає з невідомих причин (мій MBR зовсім новий). Але це перше, що я бачив у цьому спливаючому віці, який мені залишився без пам’яті (з 16 Гб оперативної пам’яті та 50 ГБ вільного місця). Однак моє головне питання полягає в тому, як дослідити використання пам'яті завдання ядра, тому, якщо воно відтворюється, це не має бути актуальним.
kenorb

5
Використовуйте zprint -t(Лев) або sudo zprint -t(Гірський лев та пізніші).
кланомат

1
Ви маєте рацію з невідповідністю відтворюваності щодо вашого запитання в заголовку, але це може бути актуальним для вирішення ваших проблем.
кланомат

1
Ви б не хотіли додати висновок до свого питання (або зберегти його у своїх документах)? Тільки для подальшої довідки / щоб мати можливість порівняти його з zprint, виготовленим у більш критичному стані системи. ІМХО - це невдача витік. Якщо ви опублікуєте це, я, можливо, зможу розповісти вам більше.
кланомат

1
У мене раптом одне і те ж питання. Я впевнений, що це стосується докера для Mac або гіперкіта. Як тільки я зупиняю докер для mac, kernal_task починає їсти 10 ГБ + пам'яті
Чарлі Мартін,

Відповіді:


176

Є багато речей, які виходять з ладу при високому використанні завдань ядра. Зазвичай це пов'язано з несправним або важким процесом, який зловживає системними ресурсами (наприклад, індексування пам’яті, запуск VM, занадто багато вкладок у веб-браузері або деякі інші фонові процеси).

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

Основні методи

  • Запустіть Console.appі перевірте " Усі повідомлення ", щоб побачити, чи відбувається зараз щось незвичне.
  • Використовуйте Монітор активності, щоб прочитати системну пам'ять та визначити, скільки використовується процесор, оперативна пам'ять та диск.

    Крім того, запустіть topу Terminal і утримуйте, Spaceщоб оновити - простіше знайти причину проблеми ( swapins / swapouts / disks ?).

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

    Дія. Розгляньте, як заборонити програми, які часто з’являються у списку, але ви їх не використовуєте.

    Дізнайтеся більше на тему : Як я можу налагоджувати процес керування керуванням «kernel_task»?

  • Виконатиsudo syscallbypid.d (або syscallbyproc.d), трохи почекати, натиснути Control- C. Тепер перевірте, який процес генерував найбільше системних викликів за цей час (останній стовпець), і якщо ви розпізнаєте його, подумайте про знищення. Якщо ні, Google це і дізнайтеся більше про нього.

Передові методи

  • Використовуйте sysdiagnoseкоманду (може бути спровоковано натисканням Shift- Control- - - .(періоду) для швидкого збору діагностичної інформації, що використовується для всієї системи, яка допомагає досліджувати проблеми системної пам’яті / працездатності (з'являться /var/tmp) у вас чи хлопців Apple. Під час аналізу намагайтеся не робити що-небудь, коли закінчите - розгляньте розпакування створеного файлу та проаналізуйте журнали.

    Див.: Як отримати файли діагностики системи з ОС 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
    

    Примітка. У нових ОС 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) або анімація, що нагадує рекламу, постійно виводить вміст.


1
Прожектор постійно повторюється, але я не використовую його, і кожного разу, коли я його вбиваю, він з’являється знову після другого ... Як / я повинен зробити, щоб я його позбувся?
лінг

1
@ling Я б запропонував вам задати ще одне запитання, оскільки це пов’язано з пам'яттю завдань з високим рівнем ядра, а не з прожектором.
kenorb

2
зітхання У мене на комп’ютері Mac 4 ГБ, і нещодавно завдання ядра піднімалося до 3,1 Гб, в основному заморожуючи весь мій комп'ютер. Закрили вкладку Google Диск, і вона знизилася до 950 МБ ...
Zizouz212

3
Недостатньо конкретний, щоб реально вирішити проблему з високою kernel_taskпам’яттю та використанням процесора.
hyiltiz

6

У мене була дуже схожа проблема після заміни рідкокристалічного екрана в кінці 2012 року на iMac. Вентилятор працює з високою частотою обертів і використовував високий CPU Kernel_task. Я звузив його до датчика температури, який потрібно перейти зі старого РК-екрана на новий екран заміни. якщо ви забудете це зробити, швидкість процесора та Kernel_task впливають на уповільнення роботи вашої системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.