На моей машине (Linux Mint x64, преднамеренно нулевой обмен), такие программы, как Firefox и Chrome (работающие одновременно, потому что, к сожалению, нужно), в конечном итоге потребляют намного больше памяти, чем имеют для этого основания. И когда они идут не так, вся машина останавливается.

Как заставить некоторые из этих задач принудительно ограничиться определенным объемом памяти, который они полностью осознают, чтобы они не пытались превысить свой максимальный объем памяти?

Мне надоели такие программы, как Chrome и Firefox, потому что они просто случайным образом (с точки зрения пользователя) решают: «Эй, мне нужно больше памяти. Ядро, мне нужно больше памяти!"вместо" Эй, мне нужно больше памяти ... Дерьмо, я ухожу. Что я режу?"

Лучшее, что я могу найти, на данный момент - это изолировать Chrome и Firefox (по отдельности) от виртуальных машин на другом компьютере с фиксированными максимальными объемами памяти. Но это очень расточительно и оказывается ужасно для таких вещей, как флэш-игры, особенно те, которые ожидают аппаратного ускорения.

Бог знает только то, что использует так много памяти, потому что у каждого браузера обычно не более 15 открытых вкладок. Итак, это еще одно разочарование.

Как заставить определенные программы жить в пределах определенного объема памяти, о котором они хорошо знают?

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

2 ответа2

1

Ты можешь использовать:

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

Для ознакомления со всеми опциями в ядре для контроля памяти вы можете проверить здесь.

Это решение относится к любой программе или группе программ.

0

Вы можете использовать ulimit для установки максимальной памяти процессов, запущенных через текущий терминал, или использовать программу типа softlimit для запуска программы с заданным ограничением памяти. Как только этот предел будет достигнут, распределение памяти завершится неудачно с ENOMEM (что может быть не правильно обработано всеми программами).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .