Kontrolní skupina (Linux)
Řídicí skupina ( anglicky control group , cgroups [1] , cgroup [2] ) - skupina procesů v Linuxu , u kterých je izolace vnucena mechanismy jádra a omezení jsou kladena na některé výpočetní zdroje (procesor, síť, paměťové zdroje, I / O zdroje). Mechanismus umožňuje vytvářet hierarchické skupiny procesů se specifikovanými vlastnostmi zdrojů a poskytuje nad nimi programovou kontrolu.
Historie
Vývoj zahájili inženýři Google Paul Menage a Rohit Seth v roce 2006 a původně se jmenoval procesní kontejnery [3 ] . V roce 2007 byl projekt přejmenován na cgroups (z anglického control groups ) kvůli nejednoznačnosti významu pojmu „kontejner“ v linuxovém jádře.
Od verze 2.6.24 linuxového jádra je tato technologie obsažena v oficiálních verzích jádra [4] . Od té doby se vývoj výrazně zvýšil, do mechanismu bylo přidáno mnoho dalších funkcí, mechanismus je významně využíván v inicializační technologii systemd a je také klíčovým prvkem při implementaci virtualizačního systému na úrovni operačního systému LXC .
Funkce
Jedním z cílů mechanismu je poskytnout jediné programovací rozhraní pro celou řadu nástrojů pro řízení procesů, od řízení jednoho procesu (jako je pěkný nástroj ) až po plnou virtualizaci na systémové úrovni (jako OpenVZ , Linux-VServer , LXC ). Mechanismus poskytuje následující funkce:
- omezení zdrojů : využití paměti , včetně virtuální [5] ;
- prioritizace: různým skupinám lze přidělit různá množství procesorových zdrojů [6] a propustnost vstupně-výstupního subsystému [7] ;
- účetnictví: kalkulace nákladů na určité zdroje skupinou [8] ;
- izolace: oddělení jmenných prostorů pro skupiny tak, že procesy, síťová připojení a soubory jiné skupiny jsou nepřístupné [4] ;
- správa: pozastavení ( zmrazení ) skupin, vytvoření kontrolních bodů ( checkpointing ) a jejich opětovné načtení [8] .
Použití
Řídicí skupina ( cgroup ) - soubor procesů sjednocených podle některých charakteristik, seskupení může být hierarchické s dědičností omezení a parametrů nadřazené skupiny. Linuxové jádro poskytuje přístup k mnoha takzvaným kontrolérům (subsystémům) přes rozhraní cgroup [4] , například „paměťový“ řadič omezuje využití RAM, řadič „cpuacct“ zohledňuje využití procesorového času.
Kontrolní skupiny lze spravovat různými způsoby:
- prostřednictvím přímého přístupu k virtuálnímu souborovému systému cgroup (jako /proc );
- utility cgcreate , cgexec , cgclassify (z libcgroup);
- pomocí démona enginu pravidel , který automaticky přesouvá procesy určitých uživatelů, skupin nebo příkazů do cgroups podle konfigurace;
- nepřímo prostřednictvím jiného softwaru, který používá cgroups, jako jsou kontejnerizační systémy LXC [9] a Docker , knihovna libvirt , technologie systemd init a software pro správu clusteru Grid Engine [10] .
Popis instalace a použití mechanismu je obsažen v dokumentaci linuxového jádra.
Poznámky
- ↑ Snížení platí pro verzi 1
- ↑ Redukce platí pro verzi 2
- ↑ Jonathan Corbet . Procesní kontejnery , LWN.net (29. května 2007). Archivováno z originálu 12. června 2017. Staženo 29. prosince 2012.
- ↑ 1 2 3 Jonathan Corbet . Poznámky z kontejneru , LWN.net (29. října 2007). Archivováno z originálu 22. června 2012. Staženo 29. prosince 2012.
- ↑ Jonathan Corbet . Řízení využití paměti v kontejnerech , LWN (31. července 2007). Archivováno z originálu 29. ledna 2018. Staženo 29. prosince 2012.
- ↑ Jonathan Corbet . Prostor jádra: Spravedlivé plánování uživatelů pro Linux , Network World (23. října 2007). Archivováno z originálu 19. října 2013. Staženo 22. srpna 2012.
- ↑ Kamkamezawa Hiroyu (2008-11-19). Cgroup and Memory Resource Controller (PDF) . Japonské linuxové sympozium. Archivováno z originálu (prezentace PDF) dne 22. 7. 2011 . Staženo 29. 12. 2012 . Archivováno 22. července 2011 na Wayback Machine
- ↑ 1 2 Dave Hansen. Správa zdrojů (PDF) . Linux Foundation. Archivováno z originálu (prezentace ve formátu PDF) dne 2011-10-09 . Staženo 29. 12. 2012 .
- ↑ Matt Helsley . LXC: Linuxové kontejnerové nástroje , IBM developerWorks (3. února 2009). Archivováno z originálu 29. října 2012. Staženo 29. prosince 2012.
- ↑ Grid Engine cgroups Integrace (downlink) . Scalable Logic (22. května 2012). Archivováno z originálu 26. ledna 2013. (neurčitý)
Odkazy