Mac - расширение памяти per-kext, ака какой kext является утечкой?

У меня возникли проблемы с некоторыми расширениями ядра, которые я использую после одного или двух дней использования памяти. kernel_task увеличивается до 1,2 ГБ и остается там все время. Проблема в том, что у меня установлено несколько сторонних расширений, и было бы трудно попытаться удалить их один за другим, не говоря уже о том, что утечка может быть в некоторых из основных модулей.

Итак, есть ли способ увидеть разбивку потребления памяти по кексту этого kernel_task Итоговая сумма?

1 ответ

Решение

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

  1. Открытый терминал

  2. Тип kextstat

  3. Если вы не видите, что столбец проводной памяти больше столбца размера (размер памяти по умолчанию.kext) для любого из ваших предполагаемых расширений ядра преступника (или любых.kext), перейдите к шагу 4.

  4. тип man kextutil, прочитайте эту страницу руководства. Я успешно использовал это, чтобы помочь с правильной диагностикой проблем установки расширения ядра. Это может быть полезно, по крайней мере, для вашей информации.

    X. Я не уверен kextcache поможет тебе Кроме того, для отладки.kext, о котором идет речь, вам нужно использовать что-то вроде среды разработки Xcode и иметь как минимум 2 доступных компьютера. Позволь мне просто сказать, будь осторожен с тем, что ты загружаешь. Ищите в документации Apple по разработке, чтобы узнать, как это сделать на вашей платформе (ах). Если вы участвуете в кодировании расширений ядра, вы уже должны знать, как это сделать. Это не для света нажатия клавиш.

Некоторые моменты, которые нужно помнить:

  1. ОС будет использовать больше оперативной памяти, если она доступна. Поэтому, если вы недавно обновили свой ram с 8GB до 16GB, вы могли заметить большой скачок в использовании памяти kernel_task.

  2. Интегрированные графические процессоры (GPU) разделяют память с kernel_task, поэтому определенные процессы приведут к увеличению используемой памяти. В большинстве случаев, когда процесс завершается, память освобождается графическим процессором, и потребление памяти kernel_task уменьшается.

Если вы не можете отследить это в Terminal.app, я бы сделал следующее:

  • Загрузите и установите fseventer (затем перезагрузите Mac), затем запустите fseventer.

  • Откройте Activity Monitor и посмотрите, сможете ли вы найти какие-либо связанные процессы для этих программ.

  • Наблюдая за обеими программами, вы увидите, сможете ли вы связать процесс с записью большого количества данных на диск (программное обеспечение принтера HP является своего рода печально известным программным обеспечением, которое часто что-то делает). Затем попробуйте выйти из процессов из AM и посмотреть, остановится ли активность в fseventer или потребление памяти kernel_task уменьшится на некоторое количество.

  • Если вы думаете, что знаете.kext, но не знаете, какую программу, или знаете программу, но не знаете, какой.kext, то используйте Подозрительный пакет (также найденный в вопросе SU, связанном с ниже), чтобы исследовать любой из.pkg /.mpkg. файлы, которые вы подозреваете, могут быть связаны с.kext. Вы также можете щелкнуть правой кнопкой мыши или щелкнуть правой кнопкой мыши файл.m / pkg и щелкнуть "Показать содержимое пакета", чтобы войти внутрь.

  • Другой способ узнать, где находятся некоторые части программы, - перейти в Terminal.app, набрав lsbom (с пробелом после него), а затем перетащите соответствующий файл из /Library/Receipts затем введите один раз, а затем /Contents/Archive.bom и ударил в ответ. (Это не будет доступно для многих программ, если они были перенесены с другого компьютера)

  • Вы также можете использовать AppCleaner, чтобы помочь в удалении / расследовании.

... помощникам было бы полезно знать -> какое оборудование / программное обеспечение вы используете? все HW/SW в актуальном состоянии? Все эти.kexts для выполнения аналогичных задач? Что делаешь? У вас есть какое-то большое оборудование (например, аудиоинтерфейсы)?

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

  • Если ваши программы были перенесены, лучше их переустановить. Миграция и даже простое клонирование диска не обходятся без предосторожностей.

  • Плохой жесткий диск может также вызвать это, или часть платы логики могла фактически быть неисправной или поврежденной (видел, что это происходило моими собственными глазами). Запустите Apple Hardware Test (AHT) (должен поставляться вместе с Машиной на оригинальных установочных дисках) (или Apple Service Diagnostics (ASD), если у вас есть друг, который работает в Apple, или просто принимаете его)

  • Вы точно знаете, в каких программах запущены расширения ядра? У меня есть тонны сторонних приложений, работающих в фоновом режиме на разных этапах скрытия / невидимости, и большинство из них не имеют установленных расширений ядра.

  • Вы проверили Console.app в Приложениях> Утилиты? Если вы не проверили файлы журналов, вам следует это сделать, это может дать вам подсказку или потенциально полезную сторону, и в этом случае вы сможете пересмотреть свой вопрос для уточнения, если только вы не решите удалить виновника из своего система.

  • Команда top в терминале может предоставить немного больше подробностей, чем Activity Monitor.

  • Мне нравится программа Menu Meters, она может быть полезна для мониторинга, не оставляя монитор активности открытым. Конечно, будет запущена еще одна сторонняя программа.

  • Вы запускались в безопасном режиме (отключает дополнительные расширения ядра)?

  • Это очень "чистая" установка с точки зрения фрагментации / дней с момента повторной установки? (Очевидно, не с точки зрения количества запущенных сторонних приложений).

  • Вы постоянно делитесь множеством файлов, резервное копирование или пакетное редактирование или транскодирование A / V?

При первой публикации:

В соответствии с Activity Monitor моя kernel_task использует>800 МБ реальной памяти и>50 МБ ВМ. Время работы составляет менее 6 часов. Я просто переключил пользователей и вышел из Aperture, которая использовала ~3 ГБ реальной памяти, а задача ядра упала на ~ 50 МБ.

12 сентября 12 года

kernel_task использует 1,04 ГБ оперативной памяти 67 МБ ВМ. Время работы = ~5,5 дней. Два пользователя вошли в систему, десятки вкладок браузера в 5 различных браузерах на текущий пользователь.

Возможно, вы также захотите взглянуть на этот ответ на Вопрос о SU и его принятый ответ, а также на перечисленное там программное обеспечение в качестве инструментов, которые помогут вам разобраться в этом.

Другие вопросы по тегам