Спосіб обмежити скільки оперативної пам'яті може зайняти довільний процес?


12

Скажімо, у нас працює машина X X з 4 ГБ оперативної пам’яті. Чи можливо це налаштувати так, щоб жоден процес не міг займати більше, ніж скажімо, 3 Гб, тож незалежно від того, якою є помилка пам’яті, завжди залишається пам’ять, щоб система відповідала?


6
Ні. І це було б контрпродуктивно. Мікроуправління розподілом оперативної пам'яті - це не те, що розробляються ОС. Безкоштовна оперативна пам'ять витрачається на марну пам'ять Занадто багато було зроблено з погано керованої оперативної пам'яті OS X. Закриття монітора активності та продовження вашого життя, здається, є найкращим засобом.

8
@cksum У вашому коментарі є величезна низка припущень, більшість з яких є помилковими. Я не намагаюсь підтримувати управління пам'яттю диска OS X. Насправді я намагаюся з’ясувати, чи є спосіб зберегти достатню функціональність системи під час тестування деякого коду, який досить легко перетворюється на утікаючий процес. Оскільки безкоштовна ОЗУ не витрачається на RAM, якщо вона дозволяє виправити помилки.
Фоміт

3
Вибачте, але якщо ваше запитання стосується програмування, (розробки та тестування) програм, то це питання не є темою для цього форуму. Перегляньте поширені запитання, щоб отримати докладнішу інформацію про те, які питання тут належать: apple.stackexchange.com/faq

10
FFS, це не питання програмування. Це питання ОС. Обмеження пам’яті може використовувати довільний процес - Safari, Matlab, Call of Duty - на рівні ОС - це однозначно питання ОС.
Фоміт

7
Бути сайтом для "ентузіастів Apple та енергетичних користувачів" питання, які по суті стосуються віртуальної пам'яті, явно знаходяться в межах та теми. Навіть якщо розробка пов’язана, це буде справедливим для налаштування чи вирішення проблем.
bmike

Відповіді:


9

Подібне запитання до цього зазначається тут. Як я можу обмежити кількість оперативної пам’яті, яку може використовувати програма Mac OS?

Вони рекомендують використовувати команду ulimit , але вони не змогли успішно обмежити суму, яку вони бажали. Я думаю, що проблема, з якою вони стикалися, полягала в тому, що параметр, який встановлюється -u або -v, не враховує систему підкачки пам'яті, наприклад, ви можете виділити лише X кількість місця для вашої обробки в реальній оперативній пам'яті, але ми можемо переглядати сторінку ви виходите у віртуальну пам'ять цілий день.

Зауважте, що це може бути небезпечно відключити віртуальну пам’ять, це може призвести до того, що ваш Mac просто заблокується тощо при запуску оперативної пам'яті.

Спробуйте запустити ulimit з аргументами -l, -m або -v, однак, як зазначено на сторінці ulimit man, це до ОС, якщо він зверне увагу на ці налаштування чи ні, як зазначено.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [межа]

Змінення лімітів ресурсів оболонки.

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

Неможливо знайти будь-яке визначене джерело, яке підтверджує, якщо OS X ігнорує ulimit чи ні, але після посилання ulimit не вдалося

Якщо ви можете змусити себе працювати для ваших потреб, тоді дайте йому піти, якщо не комбінація ulimit та відключення віртуальної пам’яті може допомогти вам встановити обмеження в 3 Гб для вибраних процесів. FYI тут є хорошим посиланням для отримання додаткової інформації про повністю вимкнути віртуальну пам’ять у Snow Leopard System 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Це виглядає як вірогідна правильна відповідь - я спробую це, коли наступний запускаю це. Поки що, прийнявши відповідь.
Фоміт

5

Якщо ви використовуєте сервер Lion (або новіший OSX) на вашому Mac, можливо, ви зможете запустити OSX всередині VM (VirtualBox, Parallels або VMWare, et.al.) на цьому Mac. Обмежте VM до 3 Гб фізичної оперативної пам’яті, і будь-яке додаток або процес всередині VM також буде настільки обмеженим. Система, що розміщує VM, повинна залишатися чутливою навіть у тому випадку, якщо ОС у VM працює з обмеженням резервного копіювання, заміною диска або збоєм.

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

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