Я хочу знать, могу ли я установить динамические ограничения для подсистемы памяти в cgroup. В настоящее время у меня отключен OOM и фиктивный процесс для проверки контрольной группы, когда достигается ограничение в памяти, процесс останавливается (как и ожидалось), но когда я пытаюсь установить больший предел (например, в 2 раза больше памяти), echo
команда не выполняется, и процесс остается замороженным.
Как я могу установить ограничения использования динамической памяти в cgroup, не перемещая процессы в другую cgroup с новыми установленными ограничениями?
Ну, после некоторого исследования я нашел, что некоторые параметры в cgroup не могут быть изменены, когда существуют задачи на нем.
К сожалению, предельные параметры памяти являются одним из тех.
я думаю, что моя последняя опция состоит в том, чтобы использовать функцию миграции задачи и создать cgroups с новыми пределами памяти по требованию.
Когда Вы упоминаете "динамические пределы", использующие cgroups, необходимо быть немного более конкретны по поводу того, что Вы ищете. Его лучшее для обеспечения примера того, что приложение и cgroup делают наряду с cgconfig.conf. Это дало бы нам лучшее изображение.
, Хотя cgroups, позволяет ограничивать процесс определенным количеством памяти с помощью memory.limit_in_bytes
в cgconfig.conf, это только устанавливает верхнюю границу и не жалуется, использует ли процесс нижний предел. Поэтому я не уверен, требуете ли Вы cgroups в этом случае.
Поэтому, если Ваша программа выделяет память динамично, Вы, возможно, также должны проверить, сколько из памяти по фиксировавшему. Проверьте ядро tunables использование sysctl -a | grep overcommit
и изменитесь, чтобы всегда принять на себя непосильные обязательства независимо от того, доступна ли память или нет.