Есть ли способ ограничить абсолютное время ЦП (в секундах ЦП), затрачиваемое в группе процессов?
ulimit -t 10; ./my-process
выглядит как хороший вариант, но если my-process
разветвляется, то каждый процесс в группе процессов получает свое ограничение. Вся группа процессов может использовать произвольное количество времени, разветвляясь каждые 9 секунд.
Принятый ответ на похожий вопрос заключается в использовании cgroups, но не объясняет как. Однако есть и другие ответы (Ограничить общее использование ЦП с помощью cgroups) говоря, что это невозможно в cgroups и может быть ограничено только относительное использование процессора (например, 0,2 секунды из каждой 1 секунды).
Лиран Фунаро предложил использовать длительный период для cpu.cfs_period_us
(https://stackoverflow.com/a/43660834/892961), но параметр для квоты может быть не более 1 секунды. Поэтому даже с большим периодом я не вижу, как установить ограничение времени ЦП в 10 секунд или час.
Если ulimit
и контрольные группы не могут этого сделать, есть ли другой способ?