kuorma-keskiarvon laskennassa on paras ajatus kuin liukuva keskiarvo ofprocesses Linux on ajaa jonossa merkitty käynnissä tai ups. Sanat ”ajatuskin” valittiin syystä: näin toimenpide on tarkoitettu tulkittavaksi, mutta ei aivan sitä, mitä sopimuksen takana tapahtuu. Se on tässä vaiheessa matkaamme, kun itallin todellisuus, likequantum-mekaniikka, ei tunnu sopivan intuitiiviseen tapaan, kun se esittäytyy.,
kuorman keskiarvot, että ylä-ja käyttöaikakomentojen näyttö on suoraan /proc. Jos käytät Linux-ydintä 2.4 tai myöhemmin, voit lukea nämä arvot itse komennolla cat / proc / loadavg. Kuitenkin, se on Linux-ydin, joka tuottaa thosevalues in /proc. Erityisesti ajastin.c ja sched.h työskennellä yhdessä todo laskenta. Ymmärtää, mikä ajastin.c tekee työkseen, theconcept aikaa viipalointi ja jiffy laskuri auttaa koko kuvan.
Linux-ytimessä jokaiselle lähetettävälle prosessille annetaan kiinteä määrä aikaa suorittimelle lähetystä kohden., Oletuksena tämä määrä on 10 millisekuntia eli 1 / 100 sekunnin. Sillä lyhyellä aikavälillä prosessi on assigneda fyysinen CPU, jolla suorittaa sen ohjeita ja saa ottaa haltuunsa kyseisen prosessorin. Useammin kuin ei, prosessi on luopua controlbefore, että 10ms ovat läpi socket puhelut, I/O-puhelut tai puhelut takaisin ytimen. (Intel 2.6 GHz-suorittimella 10ms riittää aikaa 50 miljoonan ohjeen toteutumiseen. Se on enemmän kuin tarpeeksi prosessointiaikaa useimmille sovellusjaksoille.,) Jos prosessi käyttää sille myönnettyä suorittimen aikaa 10ms, laitteisto nostaa keskeytyksen ja ydin saa prosessin hallinnan takaisin. Tämän jälkeen ydin promptlypenalisoi prosessin sellaiseksi sikalaksi. Kuten näet, että aikalisä on tärkeä suunnittelukonsepti, jotta järjestelmä näyttää Torun sujuvasti ulkopuolella. Se on myös ajoneuvo, joka tuottaa theload-keskiarvot.
10ms aika siivu on tarpeeksi tärkeä käsite takaa animi itse: quantum arvo., Ei välttämättä anythinginherently erikoista 10ms, mutta on noin quantum valuein yleensä, koska mitä arvoa se on asetettu (tämä on konfiguroitavissa,mutta 10ms on oletuksena), se määrittää, miten usein vähintään kerneltakes valvonta järjestelmään takaisin sovelluksissa. Yksi manychores ydin suorittaa, kun se ottaa takaisin control on incrementits jiffies counter. Jiffies-laskuri mittaa systeemin käynnistämisen jälkeen tapahtuneiden punkkien määrää. Kun thequantum ajastin ponnahtaa, ajastin.C merkitään funktiona ytimen calledtimer.,c: do_timer (). Täällä kaikki keskeytykset ovat pois käytöstä, joten koodi ei toimi liikkuvien kohteiden kanssa. Sen hetkessä laskuri kasvaa 1,ja kuorma-keskiarvon laskennassa tarkastetaan nähdä, jos se olisi laskettu.Todellisuudessa, kuorma-keskimääräinen laskenta ei ole aidosti laskettu oneach quantum rasti, mutta ajaa muuttujan arvo, joka perustuu theHZ taajuusasetus ja testattu kunkin quantum rasti. (HZ-taajuutta ei saa käyttää prosessorin MHz-taajuudella. Tämä muuttuja määrittää pulserate erityisesti Linux-ytimen toimintaa ja 1 HZ on yksi quantum or10ms oletuksena.,) Vaikka HZ-arvo voidaan konfiguroida joissakin ytimen versioissa, se on yleensä asetettu 100: een. Laskentakoodi käyttää HZ-arvoa laskutaajuuden määrittämiseksi. Erityisesti ajastin.c: calc_load () – funktio suorittaa keskiarvoalgoritmin joka 5 * HZ eli suunnilleen joka viides sekunti. Seuraavat on, että toiminto itsentirety:
avenrun array sisältää kolme keskiarvot olemme keskustelleet. Thecalc_load () – funktiota kutsutaan update_times-toiminnolla (), joka löytyy myös ajastimesta.c, ja on koodi, joka vastaa calc_load () – toiminnon toimittamisesta thesticks-parametrilla., Valitettavasti tämä toiminto ei paljasta itsmost mielenkiintoinen näkökohta: laskenta itsessään. Se voi kuitenkin sijaita helposti schedissä.s, otsikon käytetty paljon ytimen koodia.Siellä, CALC_LOAD makro ja siihen liittyvät arvot ovat saatavilla:
Tässä on, jos renkaat tavata jalkakäytävä. Sen pitäisi nyt todistaa, että todellisuus ei näytä vastaavan illuusiota. Ainakin, tämä ei todellakaan ole sellainen keskiarvo useimmat meistä opetetaan gradeschool. Mutta se on kuitenkin keskiverto., Teknisesti se on eksponentialdecay-funktio ja on liukuva keskiarvo valinta useimmille UNIX-järjestelmille sekä Linuxille. Tutkitaan sen yksityiskohtia.
makro vie kolme parametrit: kuorma-keskimääräinen ämpäri (yksi niistä kolmesta elementtejä avenrun), vakio eksponentti ja määrä käynnissä/ups prosessit tällä hetkellä ajaa jonossa. Thepossible eksponentti vakiot on lueteltu edellä: EXP_1 1-minuteaverage, EXP_5 5 minuutin keskiarvo ja EXP_15 15-minuteaverage. Tärkeä huomio on se, että arvo laskee iän myötä., Vakiot ovat taika numerot, jotka on laskettu themathematical toiminto alla:
Kun x=1, niin y=1884, kun x=5, niin y=2014; ja kun x=15, y=2037. Maagisten lukujen käyttötarkoitus on se, että sen avulla KALK_LOAD-makroto käyttää murtolukujen tarkkuusfixed-point-edustusta. Magicnumbers on siis vain kertoimia, joita käytetään runningloadin keskiarvoa vastaan, jotta se olisi liukuva keskiarvo. (Matematiikan offixed-point edustus eivät kuulu tämän artiklan soveltamisalaan, joten en tee selitystä.,) Tarkoituksena on eksponentiaalinen vaimeneminen functionis, että se ei vain tasoittaa kuopat ja piikit ylläpitämällä usefultrend line, mutta se tarkasti laskee laatua, mitä se measuresas toimintaa kaikenikäisille. Ajan edetessä perättäiset SUORITINTAPAHTUMAT lisäävät kuormitusta keskimäärin. Tämä on mitä me haluamme, koskaenemmän viime CPU aktiivisuus on luultavasti enemmän vaikutusta currentstate kuin antiikin tapahtumia., Lopulta, kuorman keskiarvot antaa smoothtrend 15 minuuttia läpi nykyinen minuutin ja antaa meille ikkunan intonot vain SUORITTIMEN käyttö, mutta myös keskimääräinen kysyntä Suorittimia. Koska kuormakeskiarvo ylittää fyysisten suorittimien määrän, sitä enemmän suoritinta käytetään ja sitä enemmän sille on kysyntää. Ja kun se väistyy, sitä vähemmän kysyntää on. Tämän ymmärryksen avulla kuormituksen keskiarvoa voidaan käyttää suorittimen prosenttiosuudella saadakseen tarkemman kuvan suorittimen toiminnasta.,
toivon, että tämä palvelee paitsi käytännön interpretationof Linux on ladata keskiarvot mutta myös valaisee joitakin tumma mathematicalshadows takana. Lisätietoja, tutkimus exponentialdecay funktio ja sen sovellukset antaisivat enemmän valoa thesubject. Mutta käytännöllisemmille, jotka juonivat kuormaa averageveille. kontrolloitu määrä prosesseja (eli calc_load-algoritmin vaikutusten mallintaminen kontrolloidussa silmukassa) antaisi tuntumaa teaktuaaliseen suhteeseen ja siihen, miten hajoava suodatin pätee.