Ограничить ЦП / ОЗУ во всем процессе для Debian

Всякий раз, когда я запускаю задачи с интенсивным использованием ЦП / ОЗУ, я не могу использовать свой компьютер, он зависает, пока задача не будет завершена. Я искал способ ограничить ресурсы на процесс для всех процессов.

т.е. ни один из процессов не проходит выше 25% ЦП или 3 ГБ ОЗУ.

Спасибо

1 ответ

Ограничение всех процессов произвольным ограничением может оказаться не таким полезным, как вы могли бы изначально подумать.

Как отмечается в комментарии, вы можете ограничить ЦП, но в зависимости от процесса вам лучше обойтись, просто установив nice -степенность процесса (также известная как приоритет процесса). Это позволит процессу работать на полной скорости, когда вы просто читаете сайт и не используете какой-либо процессор, но уступаете и уступаете своему браузеру, как только он начинает использовать процессор (ы) для любого JavaScript (как пример).

Другой вариант - установить привязку процессора к процессу. Это позволяет ОС запускать процесс только на одном конкретном ядре ЦП, оставляя другие 3 (в вашем случае) свободными для всего, что может понадобиться. Это хорошо, когда ваш процесс является однопоточным (например, процесс кодирования видео или процесс создания исходного кода); Вы можете установить привязку к 1-му ядру ЦП, и у вас будет 3 других на холостом ходу (пока не будет использовано).

И есть также ulimit, который вы можете использовать для установки мягких и жестких ограничений или ОЗУ / ЦП (хотя это для всей системы, а не для процесса).

Следует отметить, что ограничение вашей оперативной памяти может иметь непредвиденные последствия (например, использование подкачки), и вместо этого вы должны попробовать nice значение, сродство процессора или ulimit для процессорного времени перед ограничением оперативной памяти. Оперативная память не похожа на процессор в том смысле, что ее большее использование ухудшит общую производительность системы; напротив, производительность системы имеет тенденцию к увеличению, когда можно использовать больше ОЗУ, и вы должны заметить снижение производительности только в том случае, если область подкачки должна использоваться поверх ОЗУ (поскольку своп обычно основан на диске и на несколько порядков медленнее, чем ОЗУ), и вы замечаете, что большая часть области подкачки используется с кучей свободной оперативной памяти, а затем происходит что-то еще, что необходимо решить (например, настройки ядра).

Надеюсь, что это может помочь.

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