Подсистема памяти CGroups

Я хочу знать, могу ли я установить динамические ограничения для подсистемы памяти в cgroup. В настоящее время у меня отключен OOM и фиктивный процесс для проверки контрольной группы, когда достигается ограничение в памяти, процесс останавливается (как и ожидалось), но когда я пытаюсь установить больший предел (например, в 2 раза больше памяти), echo команда не выполняется, и процесс остается замороженным.

Как я могу установить ограничения использования динамической памяти в cgroup, не перемещая процессы в другую cgroup с новыми установленными ограничениями?

2
задан 20 December 2016 в 13:56

2 ответа

Ну, после некоторого исследования я нашел, что некоторые параметры в cgroup не могут быть изменены, когда существуют задачи на нем.

К сожалению, предельные параметры памяти являются одним из тех.

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

1
ответ дан 20 December 2016 в 13:56

Когда Вы упоминаете "динамические пределы", использующие cgroups, необходимо быть немного более конкретны по поводу того, что Вы ищете. Его лучшее для обеспечения примера того, что приложение и cgroup делают наряду с cgconfig.conf. Это дало бы нам лучшее изображение.

, Хотя cgroups, позволяет ограничивать процесс определенным количеством памяти с помощью memory.limit_in_bytes в cgconfig.conf, это только устанавливает верхнюю границу и не жалуется, использует ли процесс нижний предел. Поэтому я не уверен, требуете ли Вы cgroups в этом случае.

Поэтому, если Ваша программа выделяет память динамично, Вы, возможно, также должны проверить, сколько из памяти по фиксировавшему. Проверьте ядро tunables использование sysctl -a | grep overcommit и изменитесь, чтобы всегда принять на себя непосильные обязательства независимо от того, доступна ли память или нет.

1
ответ дан 20 December 2016 в 13:56

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

Похожие вопросы: