Useful Tools | Linux | GitOps | DevOps
5.79K subscribers
152 photos
1 video
7 files
678 links
Полезные бесплатные opensource инструменты на все случаи жизни, а иногда и советы.

Понравился проект из поста - поддержи автора звездой!

Автор: @dmitry_malinin
Web: https://gitgate.d3.ru

Сотрудничество: @maxgrue
Обсуждение: @gittalk
Download Telegram
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
👍11🔥6
Совет дня:

Ограничение памяти с помощью 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
👍17🔥9