Моя цель: предоставить пользователю возможность ограничить ресурсы, такие как ЦП, память для данного процесса (С++).
Итак, кто-то предложил мне использовать Cgroups, которая выглядит идеальной утилитой.
После некоторых исследований у меня есть опасения:
Когда мы используем memory.limit_in_bytes для ограничения использования памяти для данного процесса, есть ли способ обработать исключение нехватки памяти в процессе? Я вижу, что группы управления предоставляют параметр с именем «memory.oom_control», который при включении убивает процесс, запрашивающий больше памяти, чем разрешено. Когда он отключен, он просто приостанавливает процесс.
Я хочу, чтобы процесс знал, что он запрашивает больше памяти, чем ожидалось, и должен выдать исключение из памяти. Это делается для того, чтобы процесс изящно завершился.
Обеспечивает ли cgroups такое поведение?
Также доступна ли cgroup во всех версиях Linux? Меня в основном интересуют машины RHEL 5+, CENTOS 6+ и ubuntu 12+.
Любая помощь приветствуется.
Спасибо