Šlajfovanje (informatika)

Šlajfovanje u informatici, se javlja kada je računarska virtuelna memorija u konstantnom stanju strana, neprestano razmenjuje podatke u memoriji za podatke na disku, do isključenja većine aplikacionih niva procesa. [1] Ovo prouzrukuje performans računara da se degradira ili sruši. Situacija može teći do beskonačnosti sve dok uput nije adresiran. Termin je takođe korišćen za mnoge slične probleme, posebno kretanje između ostalih nivoa memorijske hijerarhije, gde progres procesovanja teče sporo jer se mnogo vremena troši na sticanje resursa. 

Pregled

uredi

Ako proces nema dovoljno stranica, šlajfovanje je aktivnost visokog straničenja , a stopa grešaka strana je visoka. To dovodi do niskog iskorišćenja procesora. U modernim računarima, šlajfovanje može dovesti do straničnog sistema (ako ne postoji dovoljno fizičke memorije ili vreme pristupa diska  je previše dugo), ili u sistemu komunikacija (posebno u sukobima oko internog pristupa autobusa), itd. U zavisnosti od konfiguracije i algoritama u njemu, protok i kašnjenje jednog sistema može degradirati od više redova veličine. Šlajfovanje je stanje u kojoj "produktivan" rad procesora-radi sve manje i 'zamenjuje' više. Procesor je zauzet razmenom stranica, toliko da ne može da odgovori na programe korisnika isto onoliko koliko je potrebno. Šlajfovanje nastaje kada ima previše stranica u memoriji, a svaka strana se odnosi na drugu stranu. Prava memorija skraćuje u kapacitetu da bi imale sve stranice u njemu, tako da koristi "virtuelnu memoriju '. Kada svaka strana u izvršenju zahteva da stranicu koja trenutno nije u realnoj memoriji (RAM) ono stavlja neke stranice na virtuelnu memoriju i podešava potrebnu stranicu na RAM-u. Ako je procesor je previše zauzet u izradi ovog zadatka, šlajfovanje se dešava.

Uzroci

uredi

U memoriji virtualnih sistema, šlajfovanje može biti uzrokovano programima ili opterećenjima koji predstavljaju dovoljnu lokalnost reference: ako set programa ili opterećenje ne može biti efikasno u roku  fizičke memorije, zatim konstantno premeštanje podataka, odnosno, može doći do šlajfovanje. Termin je prvi put upotrebljen u toku dana traka operativnog sistema da opiše zvuk trake napravljen kada su podaci bili brzo pisani i čitani. Primer za ovu vrstu situacije došlo je na IBM Sistem / 370 serija glavnih mejnfrejm računara, u kome posebno uputstvo ne može sadržati uputstvo o izvršavanju (koje prelazi granicu strana) koji ukazuje na pokret uputstva (koje samo takođe prelazi granicu stranica ), ciljanje kretanje podataka iz izvora koji prelazi granicu stranice, u cilju podataka koji takođe prelaze granicu stranice. Ukupan broj strana dakle koje se koriste nad ovim konkretnim uputstvima je osam, a svih osam stranica moraju biti prisutni u memoriji u isto vreme. Ako operativni sistem izdvaja manje od osam stranica stvarne memorije, kada se pokuša zameniti neki deo uputstva ili podataka u podsetniku, instrukcija će ponovo biti greška strane, a to će šlajfovati na svaki pokušaj kada  se ponovo pokrene uputstvo grešaka.

Rešenja

uredi

Da bi se rešilo šlajfovanje zbog prekomernih stranica, korisnik može uraditi bilo šta od sledećeg:

  • Povećati količinu RAM-a na računaru.
  • Smanjiti broj programa koji rade na računaru.
  • Zameniti programe koji koriste mnogo memori za iste koji koriste manje memorije.
  • Dodela radnih prioriteta programima, odnosno nizak, normalan, visok.
  • Povećati lokalnost referenci zamenom petlji:
     // опозива то у C, низови користе arrays use Ред-главни поредак
     int m[256][256]; 
     for (column=0; column<256; column++) { 
       for (row=0; row<256; row++) { 
         m[row][column] = foo(); 
       } 
     }
    
sa
  int m[256][256]; 
  for (row=0; row<256; row++) {
    for (column=0; column<256; column++) {
      // узастопне колоне живе у суседним меморијским локацијама
      m[row][column] = foo(); 
    } 
  }

Druga korišćenja

uredi

Sa fragmentacijom, šlajfovanje je najpoznatije kontekstu memorije i skladištenja, ali analogno fenomenu javljanja za druge resurse

Termin se takođe koristi za promašaje između ostalih nivoa memorijske hijerarhije, a ne samo pozivanje (memorije na disku): kada se malom skup ubržeg prostora za skladištenje, namenjn da ubrza pristup većem skupu sporijeg skladišnog prostora, pristupa na način koji poništava bilo kakve koristi od bržeg skladištenja. Primer za to je keš šlajfovanje, gde je glavnoj memorijoj pristupljno preko  obrazca koji dovodi do višestrukih glavnih memorijskih lokacija koji se takmiče za iste keš linije, što je rezultiralo prekomernim keš promašajima. Ovo je veoma problematično za kešove koji imaju nisku asocijativnost.

Sasvim slično je TLB šlajfovanje, gde je jedinica za upravljanje memorije (MMU), koja se koristi za prevođenje virtualne adrese za fizičke adrese, radi na setu od više stranica nego što može da stane u kešu, bafer asocijativnog prevođenja (TLB). TLB šlajfovanje se može javiti čak i ako uputstva keša ili podaci keš šlajfovanje se neće dogoditi, jer oni su sačuvani u različitim veličinama. Instrukcije i podaci su sačuvani u malim blokovima (keš linije), a ne u celim stranama, ali potraga adrese se vrši na nivou stranice. Tako, čak i ako se broj i podaci cata koji rade uklapaju u keš, ako su radni setovi podeljeni po mnogim stranicama, radni set virtuelne adrese  ne može da stane u TLB, uzrokujući TLB šlajfovanje.

Česta kolekcija smeća, zbog neuspeha da dodeli memoriju za objekat, zbog nedostatka slobodne memorije ili nedovoljne susedne slobodne memorije (zbog fragmentacije memorije) se naziva heap šlajfovanje.[2] Sličan fenomen se javlja za procese: kada procesni radni skup ne može da se zakaže - tako da nisu svi u interakciji procesa  zakazani za pokretanje istovremeno - oni doživljavaju proces šlajfovanja, zbog toga što je u više navrata zakazan i nezakazan, napreduju sporo.[3]

Vidi još

uredi

Reference

uredi
  1. ^ Denning, Peter J. (1968).
  2. ^ Hall, Arnold & Bergner 2014, str. 170.
  3. ^ Ousterhout, J. K. (1982).

Literatura

uredi