Kontrolgruppe (Linux)
Kontrolgruppe ( engelsk kontrolgruppe , cgroups [1] , cgroup [2] ) - en gruppe af processer i Linux , for hvilken isolering pålægges af kernemekanismer og begrænsninger er placeret på nogle computerressourcer (processor, netværk, hukommelsesressourcer, I / O ressourcer). Mekanismen gør det muligt at danne hierarkiske grupper af processer med specificerede ressourceegenskaber og giver programmatisk kontrol over dem.
Historie
Udviklingen blev startet af Googles ingeniører Paul Menage og Rohit Seth i 2006 og blev oprindeligt kaldt procescontainere [3 ] . I 2007 blev projektet omdøbt til cgroups (fra engelske kontrolgrupper ) på grund af tvetydigheden af betydningen af udtrykket "container" i Linux-kernen.
Siden version 2.6.24 af Linux-kernen har teknologien været inkluderet i de officielle versioner af kernen [4] . Siden da er udviklingen steget markant, mange ekstra funktioner er blevet tilføjet til mekanismen, mekanismen er væsentligt brugt i systemd initialiseringsteknologien og er også et nøgleelement i implementeringen af virtualiseringssystemet på LXC -operativsystemniveau .
Funktioner
Et af målene med mekanismen er at levere en enkelt programmeringsgrænseflade til en lang række processtyringsværktøjer, fra enkelt processtyring (såsom det gode hjælpeprogram ) til fuld virtualisering på systemniveau (som OpenVZ , Linux-VServer , LXC ). Mekanismen har følgende funktioner:
- ressourcebegrænsning : hukommelsesbrug , inklusive virtuel [ 5] ;
- prioritering: forskellige grupper kan tildeles forskellige mængder processorressource [6] og gennemstrømning af input-output-undersystemet [7] ;
- regnskab: beregning af omkostningerne ved visse ressourcer foretaget af en gruppe [8] ;
- isolation: adskillelse af navnerum for grupper på en sådan måde, at processer, netværksforbindelser og filer fra en anden gruppe er utilgængelige [4] ;
- ledelse: suspendere ( fryse ) grupper, oprette checkpoints ( checkpointing ) og genindlæse dem [8] .
Brug
Kontrolgruppe ( cgroup ) - et sæt processer forenet i henhold til nogle karakteristika, grupperingen kan være hierarkisk med arven af restriktioner og parametre for den overordnede gruppe. Linux-kernen giver adgang til mange såkaldte controllere (undersystemer) gennem cgroup [4] -grænsefladen , f.eks. begrænser "memory"-controlleren brugen af RAM, "cpuacct"-controlleren tager højde for brugen af processortid.
Kontrolgrupper kan styres på forskellige måder:
- gennem adgang til det virtuelle filsystem cgroup (som /proc ) direkte;
- hjælpeprogrammer cgcreate , cgexec , cgclassify (fra libcgroup);
- ved at bruge regelmotorens dæmon , som automatisk flytter processerne for visse brugere, grupper eller kommandoer til cgroups i henhold til konfigurationen;
- indirekte gennem anden software, der bruger cgroups, såsom LXC [9] og Docker containerization systemer, libvirt biblioteket , systemd init teknologi og Grid Engine [10] klynge management software .
En beskrivelse af installationen og brugen af mekanismen er inkluderet i Linux-kernedokumentationen.
Noter
- ↑ Reduktionen gælder for version 1
- ↑ Reduktionen gælder for version 2
- ↑ Jonathan Corbet . Procesbeholdere , LWN.net (29. maj 2007). Arkiveret fra originalen den 12. juni 2017. Hentet 29. december 2012.
- ↑ 1 2 3 Jonathan Corbet . Noter fra en container , LWN.net (29. oktober 2007). Arkiveret fra originalen den 22. juni 2012. Hentet 29. december 2012.
- ↑ Jonathan Corbet . Kontrol af hukommelsesbrug i containere , LWN (31. juli 2007). Arkiveret fra originalen den 29. januar 2018. Hentet 29. december 2012.
- ↑ Jonathan Corbet . Kernel space: Fair brugerplanlægning for Linux , Network World (23. oktober 2007). Arkiveret fra originalen den 19. oktober 2013. Hentet 22. august 2012.
- ↑ Kamkamezawa Hiroyu (2008-11-19). Cgroup and Memory Resource Controller (PDF) . Japan Linux Symposium. Arkiveret fra originalen (PDF-præsentationsdias) 2011-07-22 . Hentet 2012-12-29 . Arkiveret 22. juli 2011 på Wayback Machine
- ↑ 1 2 Dave Hansen. Ressourcestyring (PDF) . Linux Foundation. Arkiveret fra originalen (PDF-præsentationsdias) 2011-10-09 . Hentet 2012-12-29 .
- ↑ Matt Helsley . LXC: Linux-containerværktøjer , IBM developerWorks (3. februar 2009). Arkiveret fra originalen den 29. oktober 2012. Hentet 29. december 2012.
- ↑ Grid Engine cgroups Integration (downlink) . Skalerbar logik (22. maj 2012). Arkiveret fra originalen den 26. januar 2013. (ubestemt)
Links