CCoW: Optimiziranje Copy-on-Write s obzirom na prostorni lokalitet u radnim opterećenjima, 2. dio

Apr 02, 2024

Mala veličina stranice može biti problematična jer sustavi postaju sposobni rukovati ogromnom količinom fizičke memorije. S hijerarhijskom organizacijom tablice stranica, svaki prijevod virtualne adrese zahtijeva više pristupa memoriji, jedan za svaku razinu tablice stranica, što je neprihvatljivo.

Kako ljudi stare, pamćenje postupno opada. Međutim, fizičko pamćenje nije jedan od čimbenika koji izravno utječe na naše pamćenje. Pamćenje je povezano sa snagom veza između neurona u mozgu, sa zdravljem mozga i s time koliko se često pamćenje koristi.

U našem mozgu neuroni su povezani sinapsama. Te nas sinapse potiču na pohranjivanje i dohvaćanje informacija. Međutim, kako starimo, te se sinaptičke veze smanjuju, što uzrokuje pogoršanje našeg pamćenja. To nije zato što je naše fizičko pamćenje smanjeno, već zato što naš mozak prolazi kroz određene promjene koje utječu na naše sposobnosti.

Međutim, korištenje našeg mozga može nam pomoći da održimo dobra sjećanja. Mozak treba vježbu, baš kao i tijelo, treba mu slobodno vrijeme i tjelovježba kako bi ostao zdrav. Razvijanje dobrih navika razmišljanja pomoći će zdravlju i učinkovitosti vašeg mozga. Na primjer, učenje novih stvari, korištenje tehnika pamćenja, igranje logičkih zagonetki itd. mogu poboljšati kvalitetu i učinkovitost vašeg mozga.

Stoga je fizička memorija jednostavno kapacitet pohrane koji je dostupan mozgu. Naše je pamćenje usko povezano s granicama onoga što naš mozak može postići. Konstantnim vježbanjem mozga možemo učiniti svoje pamćenje trajnijim i održavati ga na visokoj razini. Kako bismo poboljšali pamćenje, trebali bismo se usredotočiti na vježbanje mozga, a istovremeno zadržati pozitivan stav i dobre zdravstvene navike. Vidi se da moramo poboljšati pamćenje, a Cistanche deserticola može značajno poboljšati pamćenje, jer Cistanche deserticola ima antioksidativno, protuupalno i anti-age djelovanje, što može pomoći u smanjenju oksidacije i upalnih reakcija u mozgu, čime štiti zdravlje živčanog sustava. Osim toga, Cistanche deserticola također može pospješiti rast i popravak živčanih stanica, čime se poboljšava povezanost i funkcija neuronskih mreža. Ovi učinci mogu poboljšati pamćenje, učenje i brzinu razmišljanja, a također mogu spriječiti razvoj kognitivne disfunkcije i neurodegenerativnih bolesti.

increase brain power

Kliknite na načine za poboljšanje rada mozga

Kako bi se ublažio veliki teret prevođenja virtualne u fizičku adresu, mnoge moderne arhitekture uključuju predmemoriju za prevođenje adrese. TheMMU čuva nekoliko nedavnih rezultata prijevoda u hardverskoj logici koja se naziva translationlook-aside međuspremnik, također poznat kao TLB.

Obično TLB-ovi modernih arhitektura mogu sadržavati oko 500 do 2000 unosa [6,7]. Unosi su indeksirani hardverom tako da procesorska jezgra može vrlo brzo potražiti prijevod. Iskorištavanjem lokalnosti memorijskih referenci, mnogi prijevodi adresa mogu se izvesti bez hodanja kroz tablicu stranica (naziva se TLB pogodak).

Kako memorijski otisak za memorijsko intenzivne aplikacije brzo raste, broj virtualnih u fizičke preslikavanja stranica za proces također se povećava. Međutim, zbog hardverskih ograničenja, broj TLB unosa ne može pratiti brzi rast aplikacijskih memorijskih otisaka. Stoga se stope promašaja TLB-a povećavaju, uzrokujući uska grla u izvedbi aplikacija koje zahtijevaju memoriju [8-11].

Kako bi se nadvladalo ovo ograničenje, neke arhitekture podržavaju dodatne veličine stranica veće od veličine osnovnih stranica od 4 KB. Na primjer, moderne Intelove arhitekture podržavaju veličine stranica od 2 MB i 1 GB [7]. Uz tako veliku veličinu stranice, jedan prijevod adrese može pokriti širi raspon adresa, učinkovito povećavajući pokrivenost koju TLB može pružiti s istim brojem unosa.

Na primjer, sustav s 1024 TLB unosa i osnovnom veličinom stranice od 4 KB može pružiti TLB pokrivenost od 4 MB, dok isti broj unosa s ogromnim stranicama od 1 GB pruža pokrivenost od 1 TB. Linux koristi ogromnu stranicu u obliku transparentnih ogromnih stranica (THPs). Kao što naziv sugerira, Linux implicitno pruža korisničkim procesima ogromne stranice kad god je to moguće.

Ako THP nije omogućen, Linux dodjeljuje memoriju procesima u jedinici osnovne stranice od 4 KB. Ako je THP omogućen, Linux pokušava dodijeliti ogromnu stranicu (veličine 2 MB) umjesto osnovne stranice, dopuštajući grubo mapiranje stranice. Ova velika granularnost omogućuje učinkovito dijeljenje stranica između nadređenih i podređenih procesa putem forka. U slučaju da velika dodjela stranica nije izvediva u ovom trenutku, Linux se vraća na osnovnu dodjelu stranica. Linux povremeno skenira adresne prostore procesa kako bi pronašao osnovne stranice i konsolidirao ih u ogromne stranice.

improve your memory

Bilo je studija koje su pokušavale promovirati goleme stranice za izvedbu dok su njihovi nedostaci dodatno maskirani. Ingens [12,13] predlaže pripremanje ogromnih stranica asinkrono izvan kritičnog puta.

Hawkeye [14] predstavlja finu shemu promocije velikih stranica koja se temelji na obrascima pristupa memoriji kako bi se maksimizirala izvedba s minimalnim brojem promocija velikih stranica. Zhu i sur. [15] generaliziraju procese korištenja ogromnih stranica i optimiziraju životni ciklus ogromnih stranica. Dio i sur. [16] dopuštaju rupe na ogromnim stranicama, pružajući fleksibilnost u upravljanju memorijom s ogromnim stranicama.

Ogromna stranica je, međutim, mač s dvije oštrice. Zbog povećane veličine upravljačke jedinice, dodjela stranica pati od interne fragmentacije. Ako je dodijeljeni raspon adresa manji od ogromne veličine stranice, ostatak stranice ne može se iskoristiti i gubi se. Ovo takozvano nadimanje memorije može značajno smanjiti korištenje memorije na sustavima s ogromnim stranicama [12-17].

Povećana veličina stranice također može negativno utjecati na performanse programa. Moderni operativni sustavi opsežno usvajaju shemu kopiranja na pisanje za učinkovito dijeljenje memorije između procesa. CoW se, međutim, obrađuje samo na granularnosti osnovne stranice.

Dakle, za rukovanje CoW-om na velikoj stranici, ogromna stranica se dijeli na osnovne stranice, a kopira se samo neispravna stranica. Razbijanje velikih stranica oduzima dosta vremena, što rezultira isprekidanim rukovanjem greškama dugih stranica. U tom smislu, neke aplikacije, čak i one koje zahtijevaju veliku količinu memorije, ne preporučuju korištenje ogromnih stranica za stabilan rad i korištenje memorije [4,18].

Općenito, postoje rasponi adresnog prostora u adresnom prostoru procesa gdje sve stranice u rasponu imaju istu dozvolu i karakteristike. Za upravljanje, moderni OS obično usvajaju koncept 'virtualnog memorijskog područja (VMA)' za predstavljanje takvih raspona adresnog prostora. Stranice u adresnom prostoru procesa možemo klasificirati prema njihovom podrijetlu.

improving brain function

Neke se stranice mogu učitati iz pozadinske datoteke na sekundarnoj pohrani, što se naziva "stranice s pozadinskom datotekom". Dok se neke stranice dinamički popunjavaju bez ikakvih pozadinskih podataka. Stranice za stack i heap su u ovom slučaju takozvane 'anonimne stranice'.

2.2. Fork i Copy-on-Write

Fork je jedan od standardnih POSIX sistemskih poziva za stvaranje novog procesa. Kada proces pozove sistemski poziv fork, kreira se novi proces kao dijete pozivajućeg procesa.

Ispod haube, OS stvara podređeni proces dupliciranjem cijelog adresnog prostora pozivajućeg procesa. To implicira da proces dijete treba započeti s istim podacima kao i proces roditelj.

Za učinkovito rukovanje dupliciranjem adresnog prostora, većina modernih OS-ova koristi tehniku ​​kopiranja na pisanje (CoW). Za dupliciranje adresnog prostora nadređenog, OS ne kopira svaku stranicu. Umjesto toga, tablica stranica procesa djeteta konstruira se kopiranjem tablice stranica procesa roditelja.

Ovo učinkovito čini zajedničko preslikavanje u adresni prostor roditelja. Tijekom izrade zajedničkog mapiranja, dozvola pisanja za svaku stranicu se ispušta brisanjem bita dozvole u odgovarajućem PTE-u.

Nakon kopiranja mapiranja, i roditelj i dijete mogu čitati dijeljene stranice kao svoje stranice. Kada jedan od procesa napravi pristup stranici za pisanje, MMU, zbog nedostatka dopuštenja za pisanje, pokreće pogrešku stranice. U rukovatelju greškama stranice, OS dodjeljuje novu stranicu, kopira izvornu stranicu i ažurira odgovarajuće mapiranje stranice procesa koji uzrokuje grešku uz pismeno dopuštenje.

U ovoj točki, roditelj i dijete mogu imati različite podatke na istoj virtualnoj adresi. Ovaj mehanizam kopiranja na pisanje se intenzivno koristi kao temeljni ključni mehanizam za realizaciju mnogih značajki virtualne memorije. Konkretno, čitanja neinicijaliziranih heapregiona obično se obrađuju zajedničkim mapiranjem na nultu stranicu, što je posebna stranica koja sadrži sve nule.

Spajanje iste stranice jezgre (KSM) je tehnika dedupliciranja istih stranica u sustavu. OS skenira stranice u sustavu kako bi identificirao stranice s identičnim podacima. Kada se takve stranice pronađu, OS vraća sve osim jedne stranice i ažurira odgovarajuće tablice stranica kako bi dijelio preostalu stranicu.

Tijekom obrade, dozvola za pisanje se odbacuje tako da se kasniji pristup za pisanje na stranicu identificira i kopira. S visokom učinkovitošću kopiranja na pisanje, stvaranje procesa postaje učinkovito, a neke aplikacije s velikim brojem podataka iskorištavaju ovu prednost za stvaranje kopije podataka .

Redis, jedna od popularnih usluga pohrane ključeva i vrijednosti u memoriji [4], jedan je takav slučaj [19]. Redisis dizajniran prvenstveno za čuvanje podataka u memoriji kako bi se osigurala visoka propusnost i mala latencija.

Međutim, neke aplikacije zahtijevaju postojanost pohranjenih podataka i ponovno nadopunjuju dizajn u memoriji s forkom. Redis primjenjuje ulazne zahtjeve samo na indeks u memoriji i podatkovne strukture i povremeno poziva fork sistemski poziv. Time se efektivno stvara podređeni proces s dupliciranim memorijskim sadržajem izvornog Redisprocessa, a pozivajući proces (tj. izvorni proces) nastavlja s obradom ulaznih zahtjeva.

Proces dijete skreće svoje izvršenje; koristeći trenutni sadržaj memorije kao snimku, serijalizira podatkovne strukture u memoriji u datoteke, čime osigurava postojanost snimke u memoriji. Nakon ispiranja snimke, podređeni proces se prekida.

Izvorni proces može napraviti drugu snimku na isti način, a nakon pada sustava, Redis se može oporaviti čitanjem posljednje snimke. Iako je fork neprocjenjiv sistemski poziv, kritizira se njegovo opterećenje.

supplements to boost memory

Baumann i sur. [20] analizirali su fork i otkrili da fork uzrokuje degradaciju performansi u modernim aplikacijama. Na primjer, kako moderne aplikacije postaju složenije, OS bi trebao uzeti u obzir približno 25 posebnih slučajeva kako bi započeo obradu fork systemcall-a kako bi bio u skladu s POSIX specifikacijom. Saželi su probleme poziva forksystem i predložili značajke koje bi poziv sustava fork trebao imati za moderno računalo.

Također pružaju alternativne načine zamjene vilice. Zhao i sur. [19] istaknuo je da je implementacija račvanja u trenutnim sustavima neučinkovita jer aplikacije s velikim memorijskim otiskom zahtijevaju dugo vremena za postavljanje tablice stranica. Kao rješenje, generalizirali su tehniku ​​kopiranja pri pisanju tako da se tablica stranica kopira na zapise kao i obične stranice.


For more information:1950477648nn@gmail.com

Mogli biste i voljeti