Как предотвратить использование запущенных программ всей оперативной памяти и процессора?

У меня раздражающая проблема с управлением ресурсами Ubuntu. Часто случается, что некоторые программы, такие как браузер Google Chrome, потребляют 100% ЦП и большую часть памяти моего ноутбука.

Я хочу, чтобы у меня всегда была отзывчивая ОС, это означает, что я хочу иметь возможность переключаться между программами и перемещать мышь по экрану или переключаться на tty и давать команды ОС. Поэтому я ищу способ настроить ОС для резервирования, скажем, 10% системных ресурсов для себя. В настоящее время Ubuntu не ведет себя таким образом, часто chrome потребляет весь мой процессор и память, а затем система перестает отвечать на запросы, и, конечно, я не могу ждать больше минуты или двух, поэтому мне приходится долго нажимать кнопку питания.

Есть ли способ заставить Ubuntu всегда быть отзывчивым? По крайней мере, до такой степени, что я могу убить ресурсную программу? (Я знаю, что ядро ​​в конечном итоге убьет некоторые программы, чтобы освободить место, но я хочу заставить его делать это либо быстрее, либо резервировать больше ресурсов для себя)

Version: UBUNTU 14.04
~$ uname -a
Linux spielplatz 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

CPU: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
RAM: 8GB

Обновление (8 октября 2017 г.)

Лучшее решение, которое я нашел, - это использование cgroups. Для этого есть смысл.

1 ответ

Решение

Я использовал cpulimit прежде чем "задушить" неуправляемые программы, загружающие ЦП (плагин Xfce4 Mailwatch иногда зависает и иногда получает 100% ЦП). cpulimit это:

инструмент для ограничения использования процессора процессом

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

Он работает, отслеживая целевой процесс и посылая "сигналы SIGSTOP и SIGCONT процессу, чтобы убедиться, что он может им управлять, и ограничить средний объем потребляемого им ЦП". Увидеть:

Это должно сделать остальную часть вашей ОС более отзывчивой, но я попробовал это на Firefox, и это делает его гораздо менее отзывчивым, поэтому может оказаться не лучшим ответом для браузера Chrome. Поиск путей ускорения самого Chrome может быть более плодотворным.

Если вам просто нужен хороший способ узнать, сколько ЦП и ОЗУ используется, и какие процессы их используют, я бы предложил программу мониторинга системы (например, top, htop, Я предпочитаю conky), тогда, когда вы видите что-то съедающее весь ваш процессор или баран, вы можете закрыть / перезапустить и т.д.


Если вам интересно узнать, какие программы запланированы для запуска в первую очередь, обратите внимание на приоритетность и "правильность" планирования. Возможно, вы могли бы сделать Chrome более привлекательным, не нанося вреда.
Вот клип из info coreutils 'nice invocation':

"nice" печатает "правильность" процесса или запускает команду с измененной корректностью."благородство" влияет на то, насколько благоприятно процесс запланирован в системе.

Значения достоверности варьируются по крайней мере от -20 (процесс имеет высокий приоритет и получает больше ресурсов, тем самым замедляя другие процессы) до 19 (процесс имеет более низкий приоритет и сам по себе работает медленно, но оказывает меньшее влияние на скорость других запущенных процессов). Некоторые системы могут иметь более широкий диапазон значений приятности; и наоборот, другие системы могут применять более строгие ограничения. Попытка установить милость за пределами поддерживаемого диапазона рассматривается как попытка использовать минимальное или максимальное поддерживаемое значение.

Приятность не следует путать с приоритетом планирования, который позволяет приложениям определять порядок, в котором запланированы потоки. В отличие от приоритета, приятность - это просто совет для планировщика, который планировщик может игнорировать. Кроме того, в качестве пункта терминологии, POSIX определяет поведение "nice" в терминах "приятного значения", которое является неотрицательной разницей между милосердием и минимальным милосердием. Хотя "nice" соответствует POSIX, в его документации и диагностике используется термин "любезность" для совместимости с исторической практикой.

И вот несколько полезных ссылок о планировании


И комментарий / сообщение Муру о Cgroups (на ArchWiki) выглядит хорошо, об ограничении оперативной памяти, похоже, что он может ограничивать ядра процессора и "общие ресурсы " тоже ("По умолчанию все группы имеют 1024 доли. Группа с 100 долями получит ~10% времени процессора ").

В первом абзаце статьи ArchWiki также упоминается этот потенциально полезный параметр, хотя я думаю, что он в основном предназначен для ограничения пользователей / групп, см.: man pam_limits & man limits.conf

Другие вопросы по тегам