CCW: kopijavimo rašant optimizavimas atsižvelgiant į erdvinę vietovę darbo krūviuose 2 dalis

Apr 02, 2024

Mažas puslapio dydis gali būti problemiškas, nes sistemos tampa pajėgios apdoroti didžiulį fizinės atminties kiekį. Naudojant hierarchinę puslapio lentelę, kiekvienam virtualiam adresui išversti reikia kelių atminties prieigos, po vieną kiekvienam puslapio lentelės lygiui, o tai yra nepriimtina.

Žmonėms senstant atmintis palaipsniui silpnėja. Tačiau fizinė atmintis nėra vienas iš veiksnių, kurie tiesiogiai veikia mūsų atmintį. Atmintis yra susijusi su smegenų neuronų ryšių stiprumu, smegenų sveikata ir atminties panaudojimo dažnumu.

Mūsų smegenyse neuronai yra sujungti sinapsėmis. Šios sinapsės skatina mus kaupti ir gauti informaciją. Tačiau senstant šie sinapsiniai ryšiai mažėja, todėl mūsų atmintis pablogėja. Taip yra ne todėl, kad susilpnėjusi mūsų fizinė atmintis, o dėl to, kad mūsų smegenyse vyksta tam tikri pokyčiai, kurie turi įtakos mūsų gebėjimams.

Tačiau smegenų naudojimas gali padėti išsaugoti gerus prisiminimus. Smegenims reikia mankštos, kaip ir kūnui, norint išlikti sveikiems, reikia laisvalaikio ir mankštos. Gerų mąstymo įpročių ugdymas pagerins jūsų smegenų sveikatą ir efektyvumą. Pavyzdžiui, mokantis naujų dalykų, naudojant atminties techniką, žaidžiant loginius galvosūkius ir pan., visa tai gali pagerinti jūsų smegenų kokybę ir efektyvumą.

Todėl fizinė atmintis yra tiesiog smegenų talpa. Mūsų atmintis yra glaudžiai susijusi su mūsų smegenų galimų pasiekimų ribomis. Nuolat mankštindami savo smegenis galime padaryti savo atmintį patvaresnę ir išlaikyti ją aukšto lygio. Norėdami pagerinti atmintį, turėtume sutelkti dėmesį į smegenų mankštą, išlaikydami teigiamą požiūrį ir gerus sveikatos įpročius. Matyti, kad turime gerinti atmintį, o Cistanche deserticola gali žymiai pagerinti atmintį, nes Cistanche deserticola turi antioksidacinį, priešuždegiminį ir senėjimą stabdantį poveikį, kuris gali padėti sumažinti oksidaciją ir uždegimines reakcijas smegenyse ir taip apsaugoti nervų sistemos sveikata. Be to, Cistanche deserticola taip pat gali skatinti nervų ląstelių augimą ir taisymą, taip pagerindama neuroninių tinklų ryšį ir funkciją. Šis poveikis gali padėti pagerinti atmintį, mokymąsi ir mąstymo greitį, taip pat gali užkirsti kelią pažinimo sutrikimų ir neurodegeneracinių ligų vystymuisi.

increase brain power

Spustelėkite žinokite būdus, kaip pagerinti smegenų veiklą

Siekiant sumažinti dideles virtualiojo ir fizinio adresų vertimo išlaidas, daugelis šiuolaikinių architektūrų turi talpyklą adresų vertimui. TheMMU saugo kelis naujausius vertimo rezultatus aparatinės įrangos logikoje, vadinamoje vertimo pašaliniu buferiu, dar vadinamu TLB.

Paprastai šiuolaikinės architektūros TLB gali turėti nuo 500 iki 2000 įrašų [6,7]. Įrašai yra indeksuojami pagal aparatinę įrangą, kad procesoriaus branduolys galėtų labai greitai surasti vertimą. Naudojant atminties nuorodų vietą, daug adresų vertimų galima atlikti neperėjus per puslapių lentelę (vadinama TLB hitu).

Kadangi daug atminties reikalaujančių programų atminties plotas sparčiai auga, proceso virtualių ir fizinių puslapių atvaizdų skaičius taip pat didėja. Tačiau dėl aparatinės įrangos apribojimų TLB įrašų skaičius negali neatsilikti nuo spartaus programų atminties skaičiaus augimo. Taigi, TLB praleidimų dažnis didėja, todėl sutrinka daug atminties reikalaujančių programų veikimas [8–11].

Siekiant įveikti šį apribojimą, kai kurios architektūros palaiko papildomus puslapių dydžius, didesnius nei 4 KB baziniai puslapiai. Pavyzdžiui, šiuolaikinės „Intel“ architektūros palaiko 2 MB ir 1 GB puslapių dydžius [7]. Esant tokiam didžiuliam puslapio dydžiui, vienas adreso vertimas gali apimti platesnį adresų diapazoną, efektyviai padidindamas aprėptį, kurią TLB gali suteikti tiek pat įrašų.

Pavyzdžiui, sistema su 1024 TLB įrašais ir 4 KB pagrindinio puslapio dydžiu gali užtikrinti 4 MB TLB aprėptį, o toks pat įrašų skaičius su 1 GB didžiuliais puslapiais suteikia 1 TB aprėptį. „Linux“ naudoja didžiulį puslapį skaidrių didžiulių puslapių pavidalu. (THP). Kaip rodo pavadinimas, „Linux“, kai tik įmanoma, netiesiogiai suteikia vartotojo procesams didžiulius puslapius.

Jei THP neįjungtas, Linux skiria atmintį procesams 4 KB pagrindinio puslapio bloke. Jei įjungtas THP, „Linux“ bando skirti didžiulį puslapį (2 MB dydžio), o ne pagrindinį puslapį, kad būtų galima sudaryti grubaus puslapio atvaizdavimą. Šis didelis detalumas leidžia efektyviai dalytis puslapiais tarp tėvų ir vaikų per šakę. Jei didžiulis puslapių paskirstymas šiuo metu neįmanomas, „Linux“ grįžta prie pagrindinio puslapio paskirstymo. „Linux“ periodiškai nuskaito proceso adresų erdves, kad surastų pagrindinius puslapius ir sujungtų juos į didžiulius puslapius.

improve your memory

Buvo atlikta tyrimų, kuriais buvo bandoma reklamuoti didžiulius puslapius, kad būtų padidintas jų našumas, tuo pačiu dar labiau maskuojant jų trūkumus. Ingensas [12,13] siūlo asinchroniškai paruošti didžiulius puslapius nuo kritinio kelio.

Hawkeye [14] pristato smulkią didžiulę puslapio reklamavimo schemą, pagrįstą prieigos prie atminties modeliais, kad maksimaliai padidintų našumą su minimaliu didžiulių puslapių reklamų skaičiumi. Zhu ir kt. [15] apibendrinti didžiulių puslapių naudojimo procesus ir optimizuoti didžiulių puslapių gyvavimo ciklą. Part ir kt. [16] leidžia įtrūkti didžiuliuose puslapiuose, suteikdamas lankstumo tvarkant atmintį naudojant didžiulius puslapius.

Tačiau didžiulis puslapis yra dviejų ašmenų kardas. Dėl padidėjusio valdymo vieneto dydžio puslapių paskirstymas kenčia nuo vidinio susiskaidymo. Jei paskirtas adresų diapazonas yra mažesnis už didžiulį puslapio dydį, likusi puslapio dalis negali būti panaudota ir bus švaistoma. Šis vadinamasis atminties išsipūtimas gali žymiai sumažinti atminties naudojimą sistemose, kuriose yra didžiuliai puslapiai [12–17].

Padidėjęs puslapio dydis taip pat gali neigiamai paveikti programos našumą. Šiuolaikinės OS plačiai naudoja kopijavimo ir rašymo schemą, kad būtų galima efektyviai dalytis atmintimi tarp procesų. Tačiau CoW apdorojamas tik pagrindinio puslapio detalumu.

Taigi, norint tvarkyti „CoW“ dideliame puslapyje, didžiulis puslapis padalijamas į pagrindinius puslapius ir nukopijuojamas tik sugedęs puslapis. Didžiulių puslapių sulaužymas užtrunka daug laiko, todėl dažnai tvarkomi ilgų puslapių gedimai. Šia prasme kai kurios programos, net ir daug atminties reikalaujančios, nerekomenduoja naudoti didžiulių puslapių stabiliam veikimui ir atminties panaudojimui [4,18].

Apskritai proceso adresų erdvėje yra adresų erdvės diapazonai, kur visi diapazono puslapiai turi vienodus leidimus ir charakteristikas. Valdymo tikslais šiuolaikinės OS paprastai naudoja „virtualios atminties srities (VMA)“ sąvoką, kad atspindėtų tokius adresų erdvės diapazonus. Puslapius proceso adresų erdvėje galime klasifikuoti pagal jų kilmę.

improving brain function

Kai kuriuos puslapius galima įkelti iš antrinėje saugykloje esančio atsarginio failo, vadinamo „failais paremtais puslapiais“. Tuo tarpu kai kurie puslapiai yra dinamiškai užpildyti be jokių atgalinių duomenų. Puslapiai, skirti krūvai ir krūvai, šiuo atveju yra vadinamieji „anoniminiai puslapiai“.

2.2. Šakė ir kopijavimas rašant

Fork yra vienas iš POSIX standartinių sistemos iškvietimų, skirtų sukurti naują procesą. Kai procesas iškviečia šakutės sistemos iškvietimą, sukuriamas naujas procesas kaip iškvietimo proceso antrinis procesas.

Po gaubtu OS sukuria antrinį procesą, dubliuodama visą skambinimo proceso adresų erdvę. Tai reiškia, kad antrinis procesas turėtų prasidėti tais pačiais duomenimis kaip ir pirminis procesas.

Norėdami efektyviai tvarkyti adresų erdvės dubliavimą, dauguma šiuolaikinių OS naudoja kopijavimo ir rašymo (CoW) techniką. Kad dubliuotų pirminio puslapio adresų erdvę, OS nekopijuoja kiekvieno puslapio. Vietoj to, antrinio proceso puslapių lentelė sudaroma nukopijuojant pirminio proceso puslapių lentelę.

Tai efektyviai sukuria bendrąjį susiejimą su pirminio adreso erdve. Atliekant bendrinamą atvaizdavimą, kiekvieno puslapio rašymo teisė atmetama išvalius leidimo bitą atitinkamame PTE.

Nukopijavę susiejimą, tėvai ir vaikas bendrinamus puslapius gali skaityti kaip savo puslapius. Kai vienas iš procesų suteikia rašymo prieigą prie puslapio, MMU dėl rašymo leidimo trūkumo suaktyvina puslapio gedimą. Puslapio klaidų tvarkyklėje OS paskiria naują puslapį, nukopijuoja pradinį puslapį ir, gavusi raštišką leidimą, atnaujina atitinkamą triktį sukeliančio proceso puslapio atvaizdavimą.

Šiuo metu tėvai ir vaikai gali turėti skirtingus duomenis tuo pačiu virtualiuoju adresu. Šis kopijavimo ir rašymo mechanizmas plačiai naudojamas kaip pagrindinis daugelio virtualios atminties funkcijų įgyvendinimo mechanizmas. Konkrečiai, nepainicijuotų krūvos regionų skaitymai paprastai tvarkomi naudojant bendrinamą nulio puslapio atvaizdavimą, kuris yra specialus puslapis, kuriame yra visi nuliai.

Branduolio to paties puslapio sujungimas (KSM) yra tų pačių puslapių dublikatų pašalinimo iš sistemos technika. OS nuskaito sistemos puslapius, kad nustatytų puslapius su identiškais duomenimis. Kai tokie puslapiai randami, OS atkuria visus, išskyrus vieną, puslapį ir atnaujina atitinkamas puslapių lenteles, kad bendrintų likusį puslapį.

Apdorojant rašymo leidimas panaikinamas, kad būtų identifikuojama ir nukopijuojama vėlesnė prieiga prie puslapio rašyti. Dėl didelio kopijavimo ir rašymo efektyvumo proceso kūrimas tampa efektyvus, o kai kurios daug duomenų reikalaujančios programos išnaudoja šį pranašumą, kad sukurtų duomenų kopiją. .

Vienas iš tokių atvejų yra Redis, viena iš populiarių atmintyje esančių raktų vertės saugojimo paslaugų [4] [19]. „Redisis“ skirtas pirmiausia laikyti duomenis atmintyje, kad būtų užtikrintas didelis pralaidumas ir mažas delsimas.

Tačiau kai kurios programos reikalauja išsaugotų duomenų patvarumo, o atmintyje esantį dizainą papildo šakute. Redis taiko gaunamas užklausas tik atminties indeksui ir duomenų struktūroms ir periodiškai iškviečia šakutės sistemos iškvietimą. Tai veiksmingai sukuria antrinį procesą su pasikartojančiu pradinio pakartotinio apdorojimo atminties turiniu, o iškvietimo procesas (ty pradinis procesas) toliau apdoroja gaunamas užklausas.

Vaiko procesas nukreipia jo vykdymą; naudodamas dabartinį atminties turinį kaip momentinį vaizdą, atmintyje esančias duomenų struktūras suskirsto į failus, taip užtikrindamas momentinės atmintinės nuotraukos išlikimą. Išplovus momentinę nuotrauką, antrinis procesas baigiasi.

Teorinis procesas gali padaryti kitą momentinę nuotrauką tokiu pat būdu, o sistemos gedimo atveju Redis gali būti atkurtas nuskaitant paskutinę momentinę nuotrauką. Nors šakutė yra neįkainojamas sistemos iškvietimas, jo pridėtinės išlaidos buvo kritikuojamos.

supplements to boost memory

Baumann ir kt. [20] išanalizavo šakę ir nustatė, kad šakutė sukelia našumo pablogėjimą šiuolaikinėse programose. Pavyzdžiui, šiuolaikinėms programoms tampant sudėtingesnėmis, OS turėtų atsižvelgti į maždaug 25 specialius atvejus, kad pradėtų apdoroti šakės sistemos iškvietimą, kad atitiktų POSIX specifikaciją. Jie apibendrino šakės sistemos skambučio problemas ir pasiūlė funkcijas, kurias turėtų turėti šakės sistemos iškvietimas šiuolaikiniam kompiuteriui.

Jie taip pat siūlo alternatyvius šakės pakeitimo būdus. Zhao ir kt. [19] nurodė, kad šakutės diegimas dabartinėse sistemose yra neefektyvus, nes taikomoms programoms, turinčioms didelį atminties plotą, puslapių lentelės nustatymas reikalauja daug laiko. Kaip sprendimą, jie apibendrino kopijavimo rašant techniką, kad puslapių lentelė būtų kopijuojama rašomuose ir įprastuose puslapiuose.


For more information:1950477648nn@gmail.com

Tau taip pat gali patikti