cgroup-utils
- предоставляет утилиту и библиотеку для контроля cgroups
в Linux
. Например, топ cgutil - htop подобная утилита , которая показывает деятельность запуска процессов в cgroups
Доступные команды: - configs
- event
- mkdir
- pgrep
- rmdir
- stats
- top
- tree
Поддерживаемые подсистемы:
- blkio (с возможностью debug)
- cpuset
- cpu and cpuacct
- devices
- freezer
- hugetlb
- memory
- net_cls
- net_prio
- pids
- rdma
Т.е. даже не используя контейнеризацию вы можете не только обернуть любой процесс в cgroups с установленными лимитами например по памяти или CPU и изоляцией, но и удобно им управлять и наблюдать.
Например поднять пару инстансов постгреса, чтобы они не дрались за память. :)
https://github.com/peo3/cgroup-utils
опубликовано в @gitgate
#cgroups #tools #cli #utils
GitHub
GitHub - peo3/cgroup-utils: cgroup-utils helps your cgroups life
cgroup-utils helps your cgroups life. Contribute to peo3/cgroup-utils development by creating an account on GitHub.
👍11🔥6
Совет дня:
Ограничение памяти с помощью cgroups
Control Groups (cgroups) позволяют ограничивать объем памяти, доступной для группы процессов.
Для начала необходимо создать группу для ограничения памяти:
Далее настраиваются ограничение на использование памяти для группы mygroup. Например, ограничение на 512 MB:
Добавьте процесс в группу cgroups, указав его PID:
Либо запустите процесс непосредственно в группе cgroups:
Теперь процесс будет ограничен в использовании памяти, что поможет избежать ситуаций, когда один процесс использует всю доступную память.
Примерно так же задаются ограничения и по CPU
опубликовано в @gitgate
#tips #cgroups
Ограничение памяти с помощью cgroups
Control Groups (cgroups) позволяют ограничивать объем памяти, доступной для группы процессов.
Для начала необходимо создать группу для ограничения памяти:
sudo cgcreate -g memory:/mygroup
Далее настраиваются ограничение на использование памяти для группы mygroup. Например, ограничение на 512 MB:
echo 512M | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
Добавьте процесс в группу cgroups, указав его PID:
sudo cgclassify -g memory:/mygroup <PID>
Либо запустите процесс непосредственно в группе cgroups:
sudo cgexec -g memory:/mygroup <command>
Теперь процесс будет ограничен в использовании памяти, что поможет избежать ситуаций, когда один процесс использует всю доступную память.
Примерно так же задаются ограничения и по CPU
опубликовано в @gitgate
#tips #cgroups
👍27🔥12
oomd
- средство устранения проблем с нехваткой памяти (OOM
) в пользовательском пространстве (userspace
) для систем Linux
.
OOM
из-за нехватки памяти исторически происходило внутри пространства ядра. В системе Linux
с перерасходом памяти malloc
и его альтернатив обычно никогда не терпят неудачу. Однако, если приложение разыменовывает возвращенный указатель, а система исчерпывает физическую память, ядро Linux
вынуждено принимать крайние меры, вплоть до уничтожения процессов. Иногда это медленный и болезненный процесс, поскольку ядро может тратить неограниченное количество времени на подкачку страниц и выгрузку страниц и вытеснение кэша страниц. Кроме того, настройка политики не очень гибкая, хотя и довольно сложная.oomd
стремится решить эту проблему в пользовательском пространстве. oomd
использует PSI
и cgroupv2
для комплексного мониторинга системы. Затем oomd
предпринимает корректирующие действия в пользовательском пространстве до того, как OOM
произойдет в пространстве ядра. Корректирующие действия настраиваются с помощью гибкой системы плагинов, в которой можно написать пользовательский код. По умолчанию это завершение нарушающих процессов. Это обеспечивает непревзойденный уровень гибкости, при котором каждая рабочая нагрузка может иметь пользовательские правила защиты. Кроме того, время, проведенное в режиме livelock
в пространстве ядра, сводится к минимуму. https://github.com/facebookincubator/oomd
опубликовано в @gitgate
#oom #kernel #userspace #cgroups
GitHub
GitHub - facebookincubator/oomd: A userspace out-of-memory killer
A userspace out-of-memory killer. Contribute to facebookincubator/oomd development by creating an account on GitHub.
👍17🔥9