logo

Mikä on Thrash?

Tietojenkäsittelytieteessä, thrash on virtuaalisen muistin (tai hakujärjestelmän) huono suorituskyky, kun samoja sivuja ladataan toistuvasti, koska päämuisti ei riitä pitämään ne muistissa. Konfiguraatiosta ja algoritmista riippuen järjestelmän todellinen suorituskyky voi heikentyä useiden suuruusluokkien verran.

Tietojenkäsittelytieteessä, selkäsauna tapahtuu, kun tietokoneen virtuaalisen muistin resursseja käytetään liikaa, mikä johtaa jatkuvaan hakutilaan ja sivuvirheisiin, mikä estää useimpien sovellustason käsittelyjen. Se saa tietokoneen suorituskyvyn heikkenemään tai romahtaa. Tilanne voi jatkua loputtomiin, kunnes käyttäjä sulkee joitain käynnissä olevia sovelluksia tai aktiiviset prosessit vapauttavat lisää virtuaalimuistiresursseja.

Jotta saisimme selvemmin tietoa puskurista, meidän on ensin tiedettävä sivuvirheistä ja vaihtamisesta.

    Sivuvirhe:Tiedämme, että jokainen ohjelma on jaettu joillekin sivuille. Sivuvirhe ilmenee, kun ohjelma yrittää käyttää tietoja tai koodia osoiteavaruudessaan, mutta se ei ole tällä hetkellä järjestelmän RAM-muistissa.Vaihto:Aina kun sivuvirhe tapahtuu, käyttöjärjestelmä yrittää noutaa sivun toissijaisesta muistista ja yrittää vaihtaa sen jollakin RAM-muistissa olevasta sivusta. Tätä prosessia kutsutaan vaihtamiseksi.

Selkäsauna kun sivuvika ja vaihto tapahtuu hyvin usein ja nopeammin, jolloin käyttöjärjestelmän on käytettävä enemmän aikaa näiden sivujen vaihtamiseen. Tätä käyttöjärjestelmän tilaa kutsutaan thrashingiksi. Puskamisen vuoksi suorittimen käyttöaste laskee tai on merkityksetöntä.

Mikä on Thrash

Perusajatuksena on, että jos prosessille varataan liian vähän kehyksiä, sivuvirheitä tulee liian paljon ja liian usein. Tämän seurauksena CPU ei tekisi arvokasta työtä ja prosessorin käyttöaste laskisi rajusti.

Pitkän aikavälin ajastin pyrkisi sitten parantamaan suorittimen käyttöä lataamalla lisää prosesseja muistiin, mikä lisää moniohjelmoinnin astetta. Valitettavasti tämä johtaisi CPU-käytön laskuun edelleen, mikä laukaisi korkeampien sivuvirheiden ketjureaktion, jota seuraa moniohjelmoinnin asteen lisääntyminen, jota kutsutaan thrashingiksi.

Algoritmit puskauksen aikana

Aina kun puskailu alkaa, käyttöjärjestelmä yrittää käyttää joko yleistä sivunvaihtoalgoritmia tai paikallista sivunvaihtoalgoritmia.

1. Yleinen sivun vaihto

Koska yleinen sivujen korvaaminen voi tuoda minkä tahansa sivun, se yrittää tuoda lisää sivuja aina, kun puskua havaitaan. Mutta mitä itse asiassa tapahtuu, on se, että mikään prosessi ei saa tarpeeksi kehyksiä, ja sen seurauksena puskutus lisääntyy yhä enemmän. Tästä syystä yleinen sivunkorvausalgoritmi ei sovellu, kun pussimista tapahtuu.

2. Paikallisen sivun vaihto

Toisin kuin yleinen sivunvaihtoalgoritmi, paikallinen sivun vaihto valitsee sivut, jotka kuuluvat vain kyseiseen prosessiin. Joten on mahdollisuus vähentää lyömistä. Mutta on todistettu, että paikallisten sivujen korvaamisessa on monia haittoja. Siksi paikallinen sivun korvaaminen on vain vaihtoehto maailmanlaajuiselle sivun vaihtamiselle puskimisskenaariossa.

Ryöstelyn syyt

Ohjelmat tai työkuormat voivat aiheuttaa häiriöitä ja aiheuttaa vakavia suorituskykyongelmia, kuten:

  • Jos suorittimen käyttöaste on liian alhainen, lisäämme moniohjelmoinnin astetta ottamalla käyttöön uusi järjestelmä. Yleistä sivunkorvausalgoritmia käytetään. Suorittimen ajastin näkee laskevan prosessorin käytön ja lisää moniohjelmoinnin astetta.
  • Prosessorin käyttöaste esitetään moniohjelmointiasteen funktiona.
  • Moniohjelmoinnin asteen kasvaessa myös suorittimen käyttöaste kasvaa.
  • Jos moniohjelmoinnin astetta lisätään entisestään, alkaa lyöminen ja suorittimen käyttöaste laskee jyrkästi.
  • Joten tässä vaiheessa lisätäksemme prosessorin käyttöastetta ja lopettaaksemme pusertamisen, meidän on vähennettävä moniohjelmoinnin astetta.

Kuinka päästä eroon raiskauksesta

Thrashingilla on joitain kielteisiä vaikutuksia kiintolevyn kuntoon ja järjestelmän suorituskykyyn. Siksi on tarpeen ryhtyä joihinkin toimiin sen välttämiseksi. Voit ratkaista puskimisongelman seuraavilla tavoilla, kuten:

    Säädä sivutustiedoston kokoa:Jos järjestelmän swap-tiedostoa ei ole määritetty oikein, sinulle voi tapahtua myös levyn tunkeutumista.Lisää RAM-muistin määrää:Koska muistin riittämättömyys voi aiheuttaa levyn tunkeutumista, yksi ratkaisu on lisätä kannettavaan tietokoneeseen RAM-muistia. Suuremman muistin ansiosta tietokoneesi pystyy käsittelemään tehtäviä helposti, eikä sinun tarvitse työskennellä liikaa. Yleensä se on paras pitkän aikavälin ratkaisu.Vähennä tietokoneessa käynnissä olevien sovellusten määrää:Jos taustalla on liian monta sovellusta käynnissä, järjestelmäresurssi kuluttaa paljon. Ja jäljelle jäävä järjestelmäresurssi on hidas, mikä voi johtaa puskemiseen. Joten sulkemisen aikana jotkin sovellukset vapauttavat resursseja, jotta voit välttää jossain määrin puskemista.Korvaa ohjelmat:Korvaa paljon muistia käyttävät ohjelmat vastaavilla, jotka käyttävät vähemmän muistia.

Tekniikat puskumisen estämiseksi

Paikallisen sivun korvaaminen on parempi kuin yleisen sivun korvaaminen, mutta paikallisen sivun korvaamisessa on monia haittoja, joten siitä ei joskus ole hyötyä. Siksi alla on joitain muita tekniikoita, joita käytetään puskujen käsittelyyn:

1. Paikkakuntamalli

Paikkakunta on joukko sivuja, joita käytetään aktiivisesti yhdessä. Paikkamallissa sanotaan, että prosessin suoritettaessa se siirtyy paikkakunnalta toiselle. Siten ohjelma koostuu yleensä useista eri paikkakunnista, jotka voivat olla päällekkäisiä.

Esimerkiksi kun funktiota kutsutaan, se määrittelee uuden paikkakunnan, jossa muistiin viitataan funktiokutsukäskyihin, paikallisiin ja globaaleihin muuttujiin jne. Samoin funktiosta poistuttaessa prosessi poistuu tältä paikkakunnalta.

2. Työsarjamalli

Tämä malli perustuu edellä mainittuun paikkakuntamallin konseptiin.

Perusperiaate sanoo, että jos allokoimme prosessille tarpeeksi kehyksiä sen nykyisen paikkakunnan mukauttamiseksi, se epäonnistuu vain aina, kun se siirtyy jollekin uudelle paikkakunnalle. Mutta jos varatut kehykset ovat pienempiä kuin nykyisen paikkakunnan koko, prosessi on sidottu thrashiin.

Tämän mallin mukaan parametrin A perusteella työjoukko määritellään viimeisimpien A-sivuviitteiden sivujen joukkona. Näin ollen kaikki aktiivisesti käytetyt sivut päätyisivät aina osaksi työskentelyä.

c# sisältää merkkijonon

Työsarjan tarkkuus riippuu parametrin A arvosta. Jos A on liian suuri, työjoukot voivat mennä päällekkäin. Toisaalta pienemmillä A:n arvoilla paikkakuntaa ei ehkä kateta kokonaan.

Jos D on kehysten ja WSS:n kokonaiskysyntäion työsarjan koko prosessille i,

D = ⅀ WSSi

Jos nyt 'm' on muistissa käytettävissä olevien kehysten lukumäärä, on kaksi vaihtoehtoa:

  • D>m, eli kokonaiskysyntä ylittää kehysten määrän, silloin tapahtuu puskemista, koska jotkut prosessit eivät saa tarpeeksi kehyksiä.
  • D<=m, then there would be no thrashing.< li>

Jos ylimääräisiä kehyksiä on tarpeeksi, muistiin voidaan ladata lisää prosesseja. Toisaalta, jos työjoukkokokojen summaus ylittää kehysten saatavuuden, osa prosesseista on keskeytettävä (muisti vaihdettava pois).

Tämä tekniikka estää pusertamisen ja varmistaa parhaan mahdollisen moniohjelmoinnin. Siten se optimoi suorittimen käytön.

3. Sivuvirhetaajuus

Suorempi tapa käsitellä puskailua on se, joka käyttää sivuvikataajuuden käsitettä.

Mikä on Thrash

Pujottamiseen liittyvä ongelma on korkea sivun virhetaajuus, ja näin ollen tässä ajatuksena on hallita sivun vikatiheyttä.

Jos sivuvirhetaajuus on liian korkea, se tarkoittaa, että prosessille on varattu liian vähän kehyksiä. Päinvastoin, alhainen sivuvirhesuhde osoittaa, että prosessissa on liian monta kehystä.

Ylä- ja alarajat voidaan määrittää halutulle sivun vikatiheydelle kaavion mukaisesti.

Jos sivun virhetaajuus putoaa alarajan alapuolelle, kehykset voidaan poistaa prosessista. Vastaavasti, jos sivuvirheiden määrä ylittää ylärajan, prosessille voidaan varata enemmän kehyksiä.

Toisin sanoen järjestelmän graafinen tila tulee pitää rajoitettuna annetussa kaaviossa muodostettuun suorakaiteen muotoiseen alueeseen.

Jos sivuvirheiden määrä on korkea ilman vapaita kehyksiä, osa prosesseista voidaan keskeyttää ja niille varatut prosessit voidaan allokoida uudelleen muille prosesseille. Keskeytetyt prosessit voidaan käynnistää uudelleen myöhemmin.