cgroups nedir?
cgroups (control groups), Linux çekirdeğinin süreçleri gruplayıp bu gruplar için işlemci, bellek, disk G/Ç ve süreç sayısı gibi kaynakları sınırlamasını, ölçmesini ve önceliklendirmesini sağlayan mekanizmadır. Bir uygulamanın tüm sunucuyu tüketmesini engellemek için temel yapı taşıdır.
Konteynerler, systemd servisleri ve birçok hosting izolasyon çözümü cgroups kullanır. Günümüzde çoğu dağıtımda cgroups v2 olarak bilinen birleşik hiyerarşi kullanılır.
Nasıl çalışır?
cgroups, süreçleri bir hiyerarşi içindeki gruplara yerleştirir. Her gruba denetleyiciler (controller) bağlanır: cpu işlemci payını, memory bellek sınırını, io disk bant genişliğini, pids ise süreç sayısını yönetir. Bellek sınırı aşılırsa çekirdek grup içinde bellek yetersizliği (OOM) durumunu işletir ve gruptaki süreçleri sonlandırabilir.
Ayarlar /sys/fs/cgroup altındaki sanal dosyalarla yapılır; ancak çoğu zaman bunlara doğrudan dokunulmaz. systemd, birimlere MemoryMax, CPUQuota gibi ayarlarla cgroups kuralları uygular.
Sunucu ve hosting ortamında
Paylaşımlı hostingte bir müşterinin sitesinin diğerlerini yavaşlatmasını önlemek için CloudLinux’un LVE sistemi gibi çözümler cgroups mantığıyla kaynak sınırı koyar. Docker ve LXC, her konteynere cgroups ile kaynak tahsis eder. systemd servislerinde sınır tanımlamak, bellek sızdıran bir uygulamanın tüm sunucuyu çökertmesini önler.
Nasıl uygulanır?
- Kritik olmayan ve kaynak tüketen servislere
MemoryMax