guiden bag gardinet

belastningsgennemsnitsberegningen betragtes bedst som et glidende gennemsnit afprocesser i Linu. ‘ løbskø markeret kørende eller uafbrydelig. Ordene “tænkt på” blev valgt af en grund: sådan er målingerne beregnet til at blive fortolket, men ikke præcis, hvad der sker baggardin. Det er på dette tidspunkt i vores rejse, når virkeligheden af itall, somequuantum mekanik, synes ikke at passe den intuitive måde, som den præsenterer sig selv.,

belastningen gennemsnit, at de øverste og oppetid kommandoer display areobtained direkte fra / proc. Hvis du kører Linu.kernel 2.4 eller nyere, kan du selv læse disse værdier med kommandoen cat/proc/loadavg. Det er dog Linu. – kernen, der producerer demværdier i /proc. Specifikt, timer.c og sched.h arbejde sammen for at gøre beregningen. For at forstå, hvad timeren.c gør for at leve, konceptet med tidsskæring og jiffy counter hjælper med at afrunde billedet.

i Linu. – kernen får hver dispatchable proces en fast mængde tid på CPU ‘ en pr., Som standard er dette beløb 10 millisekunder eller 1/100 sekund. I det korte tidsrum er processen tildelten fysisk CPU, hvorpå dens instruktioner skal køres, og lov til at overtageden processor. Oftere end ikke, vil processen opgive kontrolfør 10ms er op gennem socket opkald, I/O-opkald eller opkald tilbage til kernen. (På en Intel 2,6 GH.-processor er 10ms nok tid tilcirka 50 millioner instruktioner til at forekomme. Det er mere end nokbehandlingstid for de fleste applikationscyklusser.,) Hvis processen bruger sinfuldt tildelt CPU-tid på 10ms, hæves en afbrydelse af Hard .aren, og kernen genvinder kontrollen fra processen. Kernen derefter hurtigtpenaliserer processen for at være sådan en hog. Som du kan se, at timeslicing er et vigtigt design koncept for at gøre dit system synes torun problemfrit på ydersiden. Det er også det køretøj,der producererbelastningsværdier.

10ms tid skive er et vigtigt nok koncept til at berettige aname for sig selv: quantumuantum værdi., Der er ikke nødvendigvis nogethelt specielt omkring 10ms, men der handler om kvanteværdien generelt, fordi uanset hvilken værdi den er indstillet til (den kan konfigureres,men 10ms er standard), styrer den, hvor ofte kerneltager kontrol af systemet tilbage fra applikationerne. En af de manychores kernen udfører, når det tager tilbage kontrol er at incrementits jiffies tæller. Jiffies-tælleren måler antallet afkvantumflåter, der er opstået siden systemet blev startet. Nårquuantum timer popper, timer.c indtastes på en funktion i kernen kaldettimer.,c:do_timer(). Her er alle afbrydelser deaktiveret, så koden ikke erarbejder med bevægelige mål. Jiffies-tælleren øges med 1, og belastningsgennemsnitsberegningen kontrolleres for at se, om den skal være computed.In faktisk beregnes belastningsgennemsnitsberegningen ikke rigtig påhvert kvantekryds, men drevet af en variabel værdi, der er baseret på h. – frekvensindstilling og testet på hvert kvantekryds. (H.skal ikke væreforvirret med processorens MH. rating. Denne variabel indstiller pulseratet for en bestemt Linu. – kerneaktivitet, og 1H. er som standard lig med en quantumuantum or10ms.,) Selvom h. – værdien kan konfigureres i nogle versioneraf kernen er den normalt indstillet til 100. Beregningskoden brugerh. – værdien til at bestemme beregningsfrekvensen. Specifikt timeren.C: calc_load() funktion vil køre den gennemsnitlige algoritme every5 * H., eller omtrent hvert femte sekund. Følgende er denne funktion i itsentirety:

avenrun-arrayet indeholder de tre gennemsnit, vi har diskuteret. Thecalc_load () funktion kaldes af update_times (), også fundet i timeren.c, og er koden ansvarlig for at levere calc_load() funktionen med theticks parameter., Desværre afslører denne funktion ikke densmest interessante aspekt: selve beregningen. Det kan dog nemt placeres i sched.h, en header, der bruges af en stor del af kernen code.In der er CALC_LOAD-makroen og dens tilknyttede værdier tilgængelige:

Her er hvor dækkene møder fortovet. Det skulle nu være bevisligt, at virkeligheden ikke ser ud til at matche illusionen. I det mindste, thisis bestemt ikke den type gennemsnit de fleste af os undervises i gradeskole. Men det er ikke desto mindre et gennemsnit., Teknisk set er det en eksponentieldecay-funktion og er det glidende gennemsnit af valg for de fleste UNI. – systemersamt Linu.. Lad os undersøge dens detaljer.

makro tager i tre parametre: den belastning-gennemsnit spand (en af de tre elementer i avenrun), en konstant eksponent og numberof kører/uninterruptible processer, der i øjeblikket kører på køen. Thepossible eksponent konstanter, der er anført ovenfor: EXP_1 for 1-minuteaverage, EXP_5 for 5 minutters gennemsnit og EXP_15 for de 15-minuteaverage. Det vigtige punkt at bemærke er, at værdien faldermed alderen., Konstanterne er magiske tal, der beregnes afmatematisk funktion vist nedenfor:

Når When=1, Derefter y=1884; når 5=5, Derefter y=2014; og når y=15, Derefter y=2037. Theformålet med de magiske tal er, at det tillader CALC_LOAD macroto bruge præcision fast punkt repræsentation af fraktioner. Magicnumbers er derefter intet andet end multiplikatorer, der bruges mod runningload-gennemsnittet for at gøre det til et glidende gennemsnit. (Den matematiske offi .ed-point repræsentation er uden for rammerne af denne artikel, så jeg vil ikkeforsøg en forklaring.,) Formålet med den eksponentielle forfaldsfunktion er, at den ikke kun glatter dips og pigge ved at opretholde en nyttig trendlinie, men det reducerer nøjagtigt kvaliteten af, hvad den måler som aktivitetsalder. Når tiden går fremad, øges successive CPU-hændelserderes betydning på belastningsgennemsnittet. Dette er hvad vi ønsker, fordimere nyere CPU-aktivitet har sandsynligvis mere indflydelse på den nuværende tilstand end gamle begivenheder., I sidste ende giver belastningsgennemsnittene en glattrend fra 15 minutter gennem det aktuelle minut og giver os et vindue iikke kun CPU-brugen, men også den gennemsnitlige efterspørgsel efter CPU ‘ erne. Da belastningsgennemsnittet går over antallet af fysiske CPU’ er, jo mere CPU ‘ en bliver brugt, og jo mere efterspørgsel er der for det. Og som det falder tilbage, jo mindreaf en efterspørgsel der er. Med denne forståelse kan belastningsgennemsnittet værebruges med CPU-procenten for at opnå en mere præcis visning af CPU-aktivitet.,

det er mit håb, at dette ikke kun tjener som en praktisk fortolkning af Linu. ‘ belastningsgennemsnit, men også belyser nogle af de mørke matematikskygger bag dem. For mere information vil en undersøgelse af e .ponentialdecay-funktionen og dens applikationer kaste mere lys over emnet. Men for de mere praktiske-minded, plotte belastningen gennemsnitevs. et kontrolleret antal processer (det vil sige modellering af virkningerne af CALC_LOAD-algoritmen i en kontrolleret sløjfe) ville give dig en fornemmelse af det faktiske forhold, og hvordan det forfaldne filter gælder.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *