2-х ядерная система и мы пренебрежем всеми cgroups кроме 1 рассматриваемой.
Внутри неё будет 2 дочерних cgroup.
Не выставляя шары мы получаем дефолт - 1024.
Значит каждая получит коэффициент 1024/(1024+1024)=0.5 что при двух ядрах дает нам 1CPU на каждую.
Предположим что в одной cgroup запущен процесс который желает поглощать 1.5CPU а во второй - 0.2CPU.
В таком случае механизм шар не будет ограничивать ту cgroup которая поглощает до 1.5 CPU вплоть до того момента пока процесс из второй группы не будет потреблять ~0.5CPU и более.
Тут обснованно возникает вопрос как тогда мы можем влиять на другой сервис если ресурсов ему в любом случае должно хватить при конкуренции?
Наверное четкий ответ дать не смогу, но предположу что продолжительное потребление на пределе в любом случае повлияет на второго желающего потребителя т.к. время выделяется кусочками, и в какой-то момент этого кусочка придется дождаться.
Другого объяснения у меня к сожалнию нет
ага. вот этот момент, что при шарес нет четкого ограничения - не больше того что положено. а это гарантия - т.е. будет выделено как минимум ваша доля, а можно и больше. но при этом накладные расходы от работы вытесняющей многозадачности при активном потреблении. А лимиты также накладывают расходы на их реализацию.... в общем надо переспать и потом потестироваться, на реальной нагрузке. чтобы понять что лучше - получить выхлоп от отключения лимитов или факап от "взбесившихся процессов"...
Обсуждают сегодня