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.
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ä.
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:
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> =m,>
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ä.
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.