kernel_task споживає багато пам'яті, не можу закінчити обчислення


1

Я запускаю обчислювальний процес, який вимагає декількох ГБ пам'яті. Коли мій процес споживає близько 11 Гбіт, Monitor Monitor показує, що kernel_taskспоживає більше 20 Гбіт, таким чином у мене в системі не вистачає пам'яті. Мені потрібен мій процес, щоб закінчити обчислення, але kernel_taskз'їдаючи всю пам'ять, процес не закінчиться в будь-який розумний час. Чому kernel_taskвитрачається стільки пам’яті і чи є спосіб не дати їй знати? Гібернація вимкнена, відкриття вікон при перезапуску вимкнено.

Моя система: OSX 10.9.2, 32 Гб оперативної пам’яті


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

kernel_task, ймовірно, ваш процес. Ви можете спробувати звільнити "неактивну пам'ять" за допомогою команди очищення в Терміналі, просто введіть purgeі натисніть клавішу return, коли неактивна пам'ять стане хорошим відсотком використовуваної пам'яті.
чилін

@jksoegaard процес зчитує у файлі ідентифікатори та їх частоти та будує коди Хаффмана для цих ідентифікаторів. Він кладе всі пари частоти ІД на купу і будує дерево, витягуючи речі з купи. Таких ідентифікаторів може бути десятки мільйонів, тому дерево може вийти досить великим.
лінзоїд

Я бачу свій процес окремо ( huffman), і він займає 10-12Gb, до цього kernel_taskзаймає до 20Gb. Я спробую очистити понеділок :)
lynxoid

@lynxoid Ви забули згадати, які системні дзвінки використовує ваша програма? спробуйте відстежити його, щоб побачити, що відбувається взаємодія з ядром ... це призведе вас до шляху, щоб дізнатися, чому kernel_task займає стільки пам’яті
jksoegaard

Відповіді:


2

Процес kernel_task, про який йдеться, ймовірно, ваш процес працює.

Ви можете спробувати звільнити "неактивну пам'ять" за допомогою команди очищення в Терміналі, просто введіть purgeі натисніть клавішу return, коли неактивна пам'ять стане хорошим відсотком використовуваної пам'яті.

Ви також можете спробувати запустити процес без gui або без запуску віконного сервера. Це звільнить пам'ять та ресурси процесора.

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

  • Потім перезавантажте, щоб звільнити пам'ять.

  • у вікні входу (якщо встановлено як ім’я користувача / пароль) введіть >consoleу поле імені, натисніть клавішу Enter, і коли сервер вікон вийде ...

  • увійдіть у консоль, ім’я та введіть пароль, коли буде запропоновано

  • введіть screenі поверніть повернення

екранна сторінка людини - ви можете мати ще один термін, з яким слід переглянути top; буде використовувати менше ресурсів, ніж працює gui. control-a then cстворити новий термінал, control-a then nпереміщатися між двома екранами

запустіть ваш процес в одному, запустіть, top -u -s5щоб запустити утиліту, як монітор діяльності, щоб ви могли відстежувати ваш процес

коли закінчиться, просто exitз обох екранів, а потім exitіз консолі, щоб запустити віконний сервер і повернути вікно входу та назад до gui


Я вже запускаю процес з командного рядка, він не має gui (див. Коментар до початкового повідомлення). Однак я спробую запустити без віконного сервера. Дякую за пораду!
лінзоїд

1
@lynxoid ти неправильно розумієш! Ви, ймовірно, спочатку працюєте в терміналі, це у вікні, поза вікном - інші вікна, панель меню, елементи рядка завдань, меню, піктограми, робочий стіл, док. Це те, що ми називаємо графічним інтерфейсом користувача, він же GUI - консольний режим працює без накладних повного графічного інтерфейсу, без вікон, без віконного сервера, процесу входу в систему, без Finder, без меню, без покажчика, без док-станції. Це значна кількість ресурсів і пам'яті, які були пов'язані в графічному інтерфейсі, до якого мають доступ ваш процес та завдання ядра, оскільки вони не використовуються. Дивіться мою відповідь вище. Дякую.
чилін

Ви мали на увазі менеджера вікон для ОС - я це отримав, дякую за вашу відповідь.
рингоподібний

1

Це насправді те, що Apple насправді вбудувало в систему, досить химерне, але було навмисно. Дивіться цю публікацію від Apple: https://support.apple.com/en-us/HT207359

Однак якщо ви використовуєте вторинний монітор або монітор високої роздільної здатності, то спробуйте виконати наступне: змініть налаштування монітора з 1080 п.с. (що за замовчуванням) на 1080 p. У нас була ця проблема, і технічна підтримка в Resolve розібралася в цьому. Немає більше помилок із завданням ядра, ні проблем із пам'яттю. Успіхів усім, хто має це питання.

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