Kontrollgrupp (Linux)
Kontrollgrupp ( engelska kontrollgrupp , cgroups [1] , cgroup [2] ) - en grupp processer i Linux , för vilka isolering åläggs av kärnmekanismer och begränsningar läggs på vissa datorresurser (processor, nätverk, minnesresurser, I / O resurser). Mekanismen gör det möjligt att bilda hierarkiska grupper av processer med specificerade resursegenskaper och ger programmatisk kontroll över dem.
Historik
Utvecklingen startades av Googles ingenjörer Paul Menage och Rohit Seth 2006 och kallades ursprungligen processcontainrar [3 ] . 2007 döptes projektet om till cgroups (från engelska kontrollgrupper ) på grund av oklarheten i betydelsen av termen "behållare" i Linux-kärnan.
Sedan version 2.6.24 av Linux-kärnan har tekniken inkluderats i de officiella versionerna av kärnan [4] . Sedan dess har utvecklingen ökat avsevärt, många ytterligare funktioner har lagts till mekanismen, mekanismen används avsevärt i systemd initieringsteknik och är också ett nyckelelement i implementeringen av virtualiseringssystemet på LXC- operativsystemnivå .
Funktioner
Ett av målen med mekanismen är att tillhandahålla ett enda programmeringsgränssnitt till en hel rad processhanteringsverktyg, från en enda processkontroll (som det trevliga verktyget ) till full virtualisering på systemnivå (som OpenVZ , Linux-VServer , LXC ). Mekanismen har följande funktioner:
- resursbegränsning : minnesanvändning , inklusive virtuell [ 5] ;
- prioritering: olika grupper kan tilldelas olika mängder processorresurs [6] och genomströmning av input-output-delsystemet [7] ;
- redovisning: beräkning av kostnaderna för vissa resurser av en grupp [8] ;
- isolering: separering av namnutrymmen för grupper på ett sådant sätt att processer, nätverksanslutningar och filer från en annan grupp är otillgängliga [4] ;
- ledning: avbryta ( frysa ) grupper, skapa kontrollpunkter ( kontrollpunkter ) och ladda om dem [8] .
Användning
Kontrollgrupp ( cgroup ) - en uppsättning processer förenade enligt vissa egenskaper, grupperingen kan vara hierarkisk med arvet av begränsningar och parametrar för den överordnade gruppen. Linuxkärnan ger tillgång till många så kallade kontroller (undersystem) genom gränssnittet cgroup [4] , till exempel begränsar "minnes"-kontrollern användningen av RAM, "cpuacct"-kontrollern tar hänsyn till användningen av processortid.
Kontrollgrupper kan hanteras på olika sätt:
- genom åtkomst till det virtuella filsystemet cgroup (som /proc ) direkt;
- verktyg cgcreate , cgexec , cgclassify (från libcgroup);
- använder regelmotorns daemon , som automatiskt flyttar processerna för vissa användare, grupper eller kommandon till cgroups enligt konfigurationen;
- indirekt genom annan mjukvara som använder cgroups, såsom LXC [9] och Docker containeriseringssystem, libvirt- biblioteket , systemd init-teknologi och Grid Engine [10] klusterhanteringsprogramvara .
En beskrivning av installationen och användningen av mekanismen ingår i Linux-kärnans dokumentation.
Anteckningar
- ↑ Reduktionen gäller för version 1
- ↑ Reduktionen gäller för version 2
- ↑ Jonathan Corbet . Processcontainrar , LWN.net (29 maj 2007). Arkiverad från originalet den 12 juni 2017. Hämtad 29 december 2012.
- ↑ 1 2 3 Jonathan Corbet . Anteckningar från en behållare , LWN.net (29 oktober 2007). Arkiverad från originalet den 22 juni 2012. Hämtad 29 december 2012.
- ↑ Jonathan Corbet . Kontroll av minnesanvändning i behållare , LWN (31 juli 2007). Arkiverad från originalet den 29 januari 2018. Hämtad 29 december 2012.
- ↑ Jonathan Corbet . Kärnutrymme: Rättvis användarschemaläggning för Linux , Network World (23 oktober 2007). Arkiverad från originalet den 19 oktober 2013. Hämtad 22 augusti 2012.
- ↑ Kamkamezawa Hiroyu (2008-11-19). Cgroup and Memory Resource Controller (PDF) . Japan Linux Symposium. Arkiverad från originalet (PDF-presentationsbilder) 2011-07-22 . Hämtad 2012-12-29 . Arkiverad 22 juli 2011 på Wayback Machine
- ↑ 1 2 Dave Hansen. Resurshantering (PDF) . Linux Foundation. Arkiverad från originalet (PDF-presentationsbilder) 2011-10-09 . Hämtad 2012-12-29 .
- ↑ Matt Helsley . LXC: Linux-containerverktyg , IBM developerWorks (3 februari 2009). Arkiverad från originalet den 29 oktober 2012. Hämtad 29 december 2012.
- ↑ Grid Engine cgroups Integration (nedlänk) . Skalbar logik (22 maj 2012). Arkiverad från originalet den 26 januari 2013. (obestämd)
Länkar