Як я налагоджую процес керування kernel_task поза контролем?


42

Нещодавно я помітив, що час автономної роботи зазнав досить значного падіння і «kernel_task», використовуючи досить трохи процесора (постійний 1-6% на моєму 2-ядерному i7, 2010 MBP, 2,8 гГц). Очевидно, я думаю, що використання процесора kernel_task сприяє падінню акумулятора, і мені потрібно з’ясувати, чому.

У пошуковій системі Google, схоже, kernel_task є версією ОС "svchost.exe" для ОС Windows X - горезвісний процес "робити все", який ви ніколи не можете по-справжньому налагодити, вам доведеться просто вручну перемикати комутатори, поки один з них не працює.

Чи є спосіб я легше дістатись до нижньої частини керованої діяльності kernel_task? Я не пробував перезавантаження, тому що якщо це "виправить" це, воно не дійсно виправить основну проблему.

Монітор активності показує використання процесора. Коли я натискаю Inspect, він показує 77 потоків, 2 порти, години та години процесорного часу, контекстні комутатори піднімаються приблизно на 400 в секунду, а Mach Messages In and Out піднімаються зі швидкістю 6000 в секунду.

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

(зауважте: мої поточні підозрювані - це недавнє оновлення 10.6.7, оновлення Firefox від 4 бета-10 до RC, або ScreenResX - це все, що я нещодавно зробив, про що я можу придумати)


Я б не описав це kernel_taskяк поза контролем. Монітор активності може бути не найкращою програмою для діагностики в цій області. У консолі додайте запити системного журналу, щоб допомогти вам визначити способи використання завдання ядра; потім уточнити вступне запитання до питання, на яке можна легше відповісти.
Грехем Перрін

1
Постійний 200% процесор звучить досить поза контролем для будь-якого процесу.
twe4ked

Відповіді:


12

У мене було подібне запитання про те, як ідентифікувати файли та програми, підключені до kernal_task, використовуючи таку команду терміналу:

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

Це відобразить різні кекси та пам'ять, пов'язану з ними. Наприклад, 6184960 com.apple.driver.AirPort.Brcm4360це велика свиня для мене, але я не можу багато з цим зробити, якщо хочу скористатися wifi.

Однією з пропозицій, які я отримав, було пошук усіх кекстів, що не входять до Apple, займають пам'ять, перекладаючи вищезазначене grep -v com.apple. Можливо, деякі програми, що не входять у Apple, використовують ваші ресурси. Ви повинні мати можливість видалити їх, нічого не порушуючи.

Вікове рішення звичайно - перезавантажити комп'ютер. Іноді це все, що потрібно для повернення процесів до нормального рівня використання процесора.


яке число в першому стовпчику?
Анентропний

@Anentropic - спробуйте man kextstat, дивлячись на це та awkкоманду захоплення $4, схоже на розмір використання кекс-пам'яті. Має сенс розглянути питання.
ребусB

11

Ось чудове пояснення, що таке kernel_task. Це можуть бути драйвери (кексти), мережеві або дискові дії. Ви не можете просто використовувати інструменти для приєднання до kernel_taskпроцесу.

Шукайте інші знаки, як-от журнали (Console.app), активність на диску (наприклад:) iotop fs_usage, мережева активність (спробуйте відключитись від локальної мережі, вимкнути пристрої в мережевих налаштуваннях), спробуйте видалити / видалити з пам'яті ( kextunload) драйвери, які від третьої сторони - планшети, usb 3g модеми тощо. Перевірте наявність програм, які встановлюють кексти

Також переконайтесь, що ваша файлова система не пошкоджена, якщо у вас недавно були збої - зробіть перевірку.


1
У мене було ~ 200% використання процесора (2 з 4 ядер) майже постійно, як правило, починається після завантаження при передачі файлів чи чогось подібного, але не повертаючись до нормального стану згодом. Причиною виявилось те, що мій об'єм системи потребував ремонту. Як тільки це було зроблено, kernel_taskповернувся до нормальних рівнів активності.
Даніель Бек

1
Посилання у відповіді тепер мертве
Swader

1
@Santa Дякуємо за запропоновану редакцію стосовно посилання, але немає сенсу видаляти посилання, коли на Wayback Machine існує версія. Замініть посилання на посилання на Wayback Machine.
грг

8

Як згадував @Christopher, нагрівання може спричинити спайк процесора kernel_task. Причина вказана в цьому дописі "Виправлення" Проблеми з процесором kernel_task в MacOS Lion 10.7 . Мабуть, коли процесор нагріється, ACPI_SMC_PlatformPlugin.kext займе цикли процесора, намагаючись зменшити фактичне завантаження процесора.

Отже, одне рішення - охолодити ваш Mac (наприклад, вентилятор) через зовнішній вентилятор або щось на зразок SMCFanControl .

У статті дано ще одне рішення, яке полягає у видаленні підтексту, що викликає таку поведінку. Хоча мушу визнати, я особисто не впевнений у тому, наскільки безпечно відключити таку поведінку.


2
Я загрожую здогадатися, що це причина більшості kernel_task, що робить стабільно високе використання процесора. Кожного разу, коли це сталося зі мною, я досить активно використовую свою машину, і вона почне відставати, але жоден із очевидних процесів, які я використовував, не спричинив шип, просто kernel_task. Вимкніть важкі процеси (як правило, відео чи ігри), і врешті-решт вони пройдуть. Тим часом мій MBP 2011 року звучить так, що він скасується! Розтріскав його і добре очистив, видалив ковдри пилу на радіаторах, і я знову в бізнесі з низьким вентилятором і без kernel_task божевільний.
Joey T

5

Зазвичай kernel_taskце поза контролем, коли деякі інші процеси надмірно використовують системні виклики або ресурси (події вводу / виводу пам'яті або диска).

Коли це станеться, ви можете скористатись fs_usageутилітою для звітування, яка в режимі реального часу покаже вам системні виклики та помилки сторінки, пов’язані з активністю файлової системи

Отже, запустіть цю команду в Терміналі:

sudo fs_usage

то спостерігайте, які процеси часто виконують деякі системні дзвінки, і якщо ви їх не використовуєте, подумайте про їх закриття / вбивство.

Щоб бути більш конкретним, будь ласка, перевірте стовпець " ІНТЕРВАЛЬ ЧАСУ ", який дає пройдений час, витрачений на системний дзвінок. Поява, що Wз’являється після закінчення часу, вказує на те, що процес був запланований за діяльністю (у цьому випадку пройдений час включає час очікування).

Отже, щоб відфільтрувати процеси, які використовують найбільш часовий інтервал у системних викликах, запустіть:

sudo fs_usage | grep -v 0.0000

який покаже вам в останньому стовпці найбільш голодні процеси (з точки зору часу ядра). Ви можете налаштувати кількість нулів для точності (менше нулів відображається, більше витрачено часу).

Для отримання додаткових ідей також перевірте: Як дослідити використання пам'яті з високим рівнем ядра?


Ось найпоширеніші проблеми:


2
Хороший розумний вихідний потік після відфільтрування iTerm2 та grepсамого себе:sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
Джоель Пурра,

4

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


Це божевільно! Ви коли-небудь перевіряли свої журнали під час налагодження цього? Як ви прийшли до цього рішення?
Ricket

3

У мене була така ж проблема в Йосеміті, але завдяки цій хорошій душі, що базується на цьому другому доброго хлопця, я міг її вирішити. Я досі не можу зрозуміти, що сталося, але, втративши цілі вихідні, намагаючись розправитись, я просто здався і сліпо слідую його вказівкам. Подивіться на моє відчай в моніторі діяльності:

Всі ваші процесори належать нам

Будьте уважні, завжди спочатку робіть резервну копію та читайте надані посилання для пояснення. Я не несу відповідальності за будь-яку заподіяну шкоду. Вас попередили.

Знайдіть модель

$ system_profiler -detailLevel mini | grep "Ідентифікатор моделі:"

Ідентифікатор моделі: MacBookPro8,2

Переміщення та резервне копіювання файлу

$ mkdir -p ~ / резервне копіювання

$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist ~ / резервне копіювання /


1
Це рішення працювало на мене. У мене така ж версія MacBookPro. На жаль, це передбачає відключення функціональності, призначеного для збільшення довговічності машини. Я перевірив темп та функціональність вентилятора, і це здається нормальним, тому я припускаю, що в цьому функціоналі є помилка, однак я все ще не зміг дійти до низу, чому спрацьовує помилка охолодження процесора (іноді з перед тим як увійти, до кінця).
errant.info

@ errant.info чомусь El Captain вирішив це. Мій комп'ютер також мав несправний акумулятор, і я помінявся на El Captain, тому не знаю, яка дія була виправлена ​​насправді. Успіхів з вашим мак!
Хтось досі використовує вас MS-DOS

2

Я на OSX Lion з новою версією Macbook Pro 2011, і нещодавно у мене kernel_task працює близько 25-30% процесора, і мої вентилятори крутяться на максимум години та години. Я спробував одне за одним, і що вирішило це було ... закриття 5 або 6 вікон у додатку Finder. Не можу сказати, я розумію, чому, але це було чітко.


2
Чи встановлені розширення для Finder? Наприклад, програми, які щось додають на панель інструментів або контекстне меню правою кнопкою миші?
Ricket

1
Це відбувається тому , що один або більше з ваших вікон є «показати все розміри» встановлено прапорець в «Вид-> Показати опції перегляду» Конфігурація Turn , що відключення, то встановлюються за замовчуванням для всіх папок і він зупиниться ..
Брайан Топпінг

2

На моєму Mac використання процесора kernel_task пропорційно пропускній здатності Інтернету, яку я використовую, коливаючись приблизно від 0% до 50%. Можливо, це викликано драйверами мого модему Huawei 3G (HuaweiDataCardDriver.kext).

Ви можете спробувати відключити розширення ядра. Не потрібно використовувати kextunload: безпечно просто перемістити пакети kext з / Система / Бібліотека / Розширення / до якоїсь іншої папки та перезапустити. Ви можете скористатися каналом консультанта або kextstat | grep -v com.appleперерахувати розширення ядра, які не поставляються з ОС X.


1

Щоб вирішити конкретні проблеми kernel_task поза контролем , ось кілька корисних команд:

  • Профілюйте всю систему, зосередившись на процесі ядра (PID: 0), запустіть:

    sudo spindump 0 -reveal
    

    Для конкретного процесу (наприклад launchd) використовуйте sample, наприклад, sudo sample launchdабо PID.

  • Щоб зібрати споживання пам'яті за завданням ядра, використовуйте (відсортовано за брудним за замовчуванням):

    sudo footprint 0
    

    Примітка. Використовуйте -aдля націлювання на всі процеси.

  • Для того, щоб зібрати загальносистемну діагностичну інформацію з кількох утилитов, запустіть: sudo sysdiagnose.

    Це також може бути спровоковано натисканням Shift- Control- - -. (періоду).

    Ви повинні побачити, що екран блимає при запуску, а потім зачекайте кілька хвилин, поки файл знайдеться у Finder .

    Див.: Як отримати файли діагностики системи з ОС X?

    Потім розпаковувати і перевіряти файли , такі як footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txtта інші.

  • Перевірте vm.swapusageв станах ядра, наприклад sysctl -a | grep ^vm.swapusage.

    В основному, чим більше ви використовуєте свопів (перевірте файли, /private/var/vmякими керує dynamic_pager, див. :), Тимman dynamic_pager більше ядро ​​бореться з продуктивністю завдяки операціям Swapins / Swapouts (див. man vm_statТа man fs_usage). Щоб перевірити, запустіть:

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    Примітка: Натисніть Control- Cдля зупинки.


0

Для мене був один процес (Netbeans в даному випадку, який читав файл на зразок 20 ГБ), і він би використовував 80% процесор для netbeans, 20% процесор для kernel_task (дуже підозріло). Це змусило всю мою систему працювати як дьоготь.

Також підозрілим є те, що "Menumeters" повідомили б про багато часу "за сис" за процесор. Ви також можете бачити це в команді "верх", якCPU usage: 21.40% user, 23.74% sys

Пізніше це може бути netbeans 120% процесор, kernel_task 65%, але все одно вони були "високим процесором одночасно"

sudo fs_usage показав багато цього:

12:46:34.446367  PAGE_IN_FILE      A=0x093a5bb000       0.000001   java.453214

Моя теорія полягає в тому, що netbeans "читав так багато", що змушував сторінки сторінки навіть запускати власну програму (тобто надсилати для заміни власної програми), тому отримуючи чергу за системою помилок сторінки. І, ймовірно, міняти "іншими програмами", щоб також поміняти місцями, в результаті чого вся система впаде.

Використовуючи top, стовпчик "НЕПРАВНІ" також збільшувався на 70 К / с.


0

Мій macbook Pro був майже непридатним через кілька тижнів з високим процесором kernel_task. Одночасно акумулятор роздувався, тому я нарешті вирішив піти на Apple Center у Римі, щоб замінити його ... навіть якщо поза гарантією Apple замінила мій акумулятор (і клавіатура) також за 0 € вартість. Ще краще ... проблема kernel_task раптом зникає !!! тож я впевнений, що це було через акумулятор, прямо чи опосередковано

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