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


0

На моїй машині (Linux Mint x64, навмисно нульовий своп) такі програми, як Firefox і Chrome (працюють одночасно, тому що тоді, на жаль, потрібно) споживають набагато більше пам’яті, ніж у них є якісь причини. А коли вони йдуть не так, вся машина зупиняється.

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

Мені нудно і такі програми, як Chrome і Firefox, що мене накручують, тому що вони просто випадковим чином (з точки зору користувача) вирішують: "Ей, мені потрібно більше пам'яті. Ядро, мені потрібно більше пам'яті!" замість "Гей, мені потрібно більше пам'яті ... Лайно, я виходжу. Що я вирізаю?"

Найкраще, що я можу знайти, - це виділити Chrome та Firefox (окремо) на VM на іншій машині із зафіксованими максимальними слідами пам’яті. Але це дуже марно і виявляється жахливо для таких речей, як флеш ігри, особливо тих, які очікують апаратного прискорення.

Бог знає лише для чого використовується стільки пам’яті, тому що кожен браузер, як правило, не має більше 15 вкладок. Отже, це подальше розчарування.

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

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

Відповіді:


1

Ви можете використовувати:

  • контрольні групи ( cgroups]) у вашій основній ОС.
  • lxcзамість VM з cgroupsкеруванням пам'яттю.

Для ознайомлення з усіма параметрами в ядрі для управління пам'яттю ви можете ознайомитися тут .

Це рішення стосується будь-якої програми або групи програм.


0

Ви можете використовувати ulimit для встановлення максимальної пам'яті процесів, запущених через поточний термінал, або використовувати програму типу softlimit для запуску програми з заданим обмеженням пам'яті. Як тільки ця межа буде досягнута, розподіл пам’яті не вдасться виконати за допомогою ENOMEM (який може бути не оброблений коректно всіма програмами).

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