kernel_task грузит проц на 100% на MacOS BigSur

При запуске любых длительных и «тяжелых» задач в Мониторинге системы можно увидеть неопознанный процесс kernel_task, который нагружает систему также как и сама задача. Мириться с этим не хочется, так как задача из-за этого быстрее не выполнится.

Будем разбираться и снижать нагрузку.


Почему это происходит?

Как пишет сама Apple, процесс kernel_task нужен для торможения запущенных программ с высокой интенсивностью. Но реалии таковы, что на BigSur процесс kernel_task нагружает процессор больше, чем «высокоинтенсивная» программа.

Просто так отключить на MacOS версии 11.3 и выше не получится. Нужно доставать бубен.

На последних MacOS присутствует система SSV, которая помогает предотвратить модификацию и удаление ПО от Apple. Она для этого использует моментальные снимки файловой системы APFS. Это клево, если во время обновления что-то пойдет не так, то произойдет автоматический откат на старую версию.

Фактически MacOS Big Sur больше не загружается с системного тома, а загружается из моментального снимка (копия системного тома). Системный том монтируется только для чтения. Если его смонтировать с правами записи, то любая модификация или удаление файлов будет оставаться только до перезагрузки. После повторного включения, система восстановит все изменения из снимка.

Решение есть — сделать новый снимок.

План действий:

  1. отключаем защиту SIP;
  2. монтируем системный том;
  3. удаляем IOPlatformPluginFamily.kext;
  4. создаем новый снимок;
  5. Включаем загрузку с него.

После всех манипуляций, загрузка ОС будет дольше обычной на 2 минуты.

Удаляем kernel_task на MacOS BigSur

Отключаем защиту SIP

Если у Вас оригинальный компьютер Mac, то необходимо загрузить его в режиме восстановления с помощью CMD+R при старте компьютера.

Если у Вас компьютер не Mac, но операционная система MacOS, то в меню запуска Clover или OpenCore нужно выбрать Recovery Mode.

В обоих случаях Вы загрузитесь в режиме восстановления. Открываем Утилиты -> Терминал и исполняем команды:

csrutil disable
reboot

После этого заходим снова в режим восстановления. Выполняем команды:

csrutil authenticated-root disable
reboot

Монтируем системный том для записи

Смотрим название системного раздела:

sudo diskutil list
...
/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +255.9 GB   disk3
                                 Physical Store disk0s2
   1:                APFS Volume MySSD — данные          47.6 GB    disk3s1
   2:                APFS Volume Preboot                 293.4 MB   disk3s2
   3:                APFS Volume Recovery                613.7 MB   disk3s3
   4:                APFS Volume VM                      1.1 MB     disk3s4
   5:                APFS Volume MySSD                   15.0 GB    disk3s5
   6:              APFS Snapshot SnapshotName            15.0 GB    disk3s5s1
...

В нашем примере это диск номер 3 и раздел номер 5 (помечен полужирным) – disk3s5. Также запоминаем его название – MySSD.

Монтируем раздел:

sudo diskutil mount disk1s5
Volume MySSD on disk3s5 mounted

Добавляем права на изменение:

sudo mount -uw /Volumes/MySSD\ 1

Где \ 1 – важная дописка. Она нужна так как с таким именем уже есть символьная ссылка, а мы монтируем настоящий и MacOS добавляет в название символ «1». Слеш – показывает, что используется пробел.

Удаляем IOPlatformPluginFamily.kext

Удалять мы его полностью не будем, а для резерва перенесем в корень системного раздела.

Переносим файл IOPlatformPluginFamily.kext:

sudo mv /Volumes/MySSD\ 1/System/Library/Extensions/IOPlatformPluginFamily.kext /Volumes/MySSD\ 1/

Создаем новый снимок и делаем его «по умолчанию»

Создаем снимок:

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s "SnapshotName" -v /Volumes/MySSD\ 1

Ставим на него метку «по умолчанию»:

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r "SnapshotName" -v /Volumes/MySSD\ 1

Не забываем сделать перезагрузку:

reboot

После всего этого процесс останется в загруженных, но уже не будет нагружать систему как раньше.

Скачать оригинальный файл IOPlatformPluginFamily.kext

Если что-то пошло не так и Вы удалили IOPlatformPluginFamily.kext, то вот оригинальный kext от MacOS BigSur — IOPlatformPluginFamily.kext.zip

Теги:

Комментарии

Граватар пользователя «Роман»
Роман, 6 мая 2022 г. 13:30 #

Спасибо большое, помогло, но на 50%. MacBook Air 11 2013 года начал работать от батареи лучше, но все-равно подлагивает, от кабеля зарядки работает идеально. Можно ли как-то удалить MacBook6_1.plist в том кексте, чтобы окончательно решить проблему? Если полностью удалить тот файл, то система зависнет в терминале и больше не стартанет – спасает только полная переустановка системы.
Или может есть ещё вариант как решить проблему с лагами при работе от батареи?




В качестве аватарки используется сервис - gravatar.com



IT-событие
Создание AMD
Создание AMD