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

3720
petr

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

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

6

1 ответ на вопрос

9
NOTjust -- user4304

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

  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нажать один раз, а затем нажать «Return». ( Это не будет доступно для многих программ, если они были перенесены с другого компьютера )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

`kextstat | awk 'NR == 1 NR! = 1 '| sort -n` использует `awk` и` sort`, чтобы сделать вывод из `kextstat` немного более легким для чтения и сортировать kexts по использованию памяти. Isaac 9 лет назад 2

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