1

Я хотел бы, чтобы текстовый терминал оставался отзывчивым, даже если какое-либо мошенническое приложение пытается выделить всю оперативную память.

Дочерним процессам терминала также должно быть разрешено использовать это зарезервированное ОЗУ.

Можно ли зарезервировать оперативную память для процесса и его дочерних элементов?

1 ответ1

3

Контрольные группы ядра Linux - это то, что вы ищете. С помощью cgroups вы можете ограничить количество ресурсов, которые могут использовать определенные процессы, включая память. Таким образом, в вашем случае вы должны создать как минимум 2 группы. Можно было бы ограничить доступ к памяти для всех процессов в системе, возможно, до 90% от общего объема ОЗУ. Тогда у второго будет доступ ко всей оперативной памяти. Вы бы поместили свой терминальный процесс во вторую группу. В Интернете есть множество ресурсов, которые рассказывают о том, как настроить ваши cgroups, и это в некоторой степени зависит от вашего конкретного дистрибутива и версии ядра.

Другой, более простой вариант - просто отключить своп на вашем компьютере. Наблюдаемая вами "неотзывчивость" заключается в том, что ваша ОС использует пространство подкачки. Когда вы отключите его, oom_killer завершит процесс, который загружает всю память, чтобы система не зависала.

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