Cgroups (Control Groups, Kontrol Grupları) görevleri (process) kümelendirerek işlemci, sistem hafızası, ağ bant genişliği gibi kaynakların kullanımlarını sınırlandırmaya ve izole etmeye yarayan Linux çekirdeğinin bir özelliğidir. Cgroups kullanılarak sistem yöneticileri görevler ve kullanıcılar arasında öncelik, engelleme yapabilmekte, sistem kaynakların kullanımını daha verimli hale getirebilmektedir.
Cgroups Yapısı
Cgroups, linux uygulama modelindeki gibi hiyerarşik bir yapıya sahiptir. Ancak bu iki model arasında bazı farklılıklar vardır.
- Linux Uygulama (Process) Modeli
Linux sistemlerinde hiyerarşik yapının en üstünde, sistem yüklenirken çekirdek (kernel) tarafından çağırılan init (başlangıç) uygulaması çalışır ve diğer çalışan bütün uygulamalar ve görevler bu görevin altında çalışırlar. Linux uygulama modelinde bir ana görev vardır ve tek bir hiyerarşi veya ağaç şeklindedir.
- Hiyerarşik bir yapıya sahiptir.
- Alt gruplar bağlı bulundukları grubun niteliklerini taşırlar.
Cgroups modeli ile Linux Uygulama Modeli arasındaki en temel fark, Cgroups altında birden fazla hiyerarşinin yeralabilmesidir. Cgroups’ta yeralan her hiyerarşi, bir veya birden fazla kaynak kontrolcüsü (subsystem) içerebileceğinden birden fazla hiyerarşinin bulunması Cgroups için bir ihtiyaçtır. Cgroups 8 adet kaynak kontrolcüsü içerir.
- blkio: Blok aygıtlarına (sabit disk, USB disk gibi) olan erişime dair sınırlandırmaları yapar.
- cpu: Cgrups’un işlemciye (CPU) erişimini planlar.
- cpuacct: Bir Cgroups altında çalışan görevin işlemci (CPU) kullanımını otomatik olarak rapor eder.
- cpuset: Görevleri çok işlemcili sistemlerde belirli bir işlemci veya hafıza düğümüne atamak için kullanılır.
- devices: Görevlerin aygıtlara olan erişimini yasaklar veya erişimine izin verir.
- freezer: Görevin çalışmasını askıya alır veya devam ettirir.
- memory: Görevlerin hafıza kullanımını sınırlar ve kullanımları rapor eder.
- net_cls: Cgroups’un ağ aygıtının kullanımına dair sınırlandırmaları yapar.