CCoW: Optimizarea copierii pe scriere ținând cont de localitatea spațială în sarcinile de lucru Partea 4
Apr 03, 2024
3.3. Urmărirea accesului la paginile precopiate
CCoW ar trebui să amortizeze cheltuielile generale pentru gestionarea frecventă a erorilor de pagină. Cu toate acestea, copierea paginilor în avans duce la o altă problemă: urmărirea accesărilor la pagini după copiere.
Există o legătură puternică între procesarea erorilor și memorie. Pentru majoritatea oamenilor, greșelile sunt adesea privite ca un lucru rău, dar pot fi oportunități pentru noi de a învăța și de a crește. Gestionând corect erorile, ne putem îmbunătăți memoria și ne putem ajuta să înțelegem mai bine și să răspundem la situații similare.
O modalitate de a face față greșelilor este să reflectezi și să analizezi. Când facem o greșeală, ar trebui să ne facem timp pentru a reflecta la modul în care s-a produs greșeala și la ce putem face pentru a preveni ca o greșeală similară să se repete. Prin reflecție, putem identifica cauzele principale ale problemelor și putem dezvolta contramăsuri pentru a le rezolva. Acest tip de analiză nu se referă doar la greșeli, ci ne poate ajuta să luăm decizii mai bune în alte situații de viață și ne poate ajuta să ne îmbunătățim abilitățile și abilitățile.
O altă modalitate de a face față greșelilor este să vă permiteți să le acceptați și să mergeți mai departe. Nu ar trebui să lăsăm greșelile să ne încetinească sau să ne frustreze. În schimb, ar trebui să le vedem ca oportunități de creștere, permițându-ne să învățăm din greșelile noastre și să continuăm să ne îmbunătățim. Dacă putem accepta greșelile și le facem față cu o atitudine pozitivă, ne putem construi o mentalitate puternică și o încredere în sine, ceea ce este foarte important pentru menținerea unei bune memorie.
În cele din urmă, ne putem întări memoria împărtășindu-ne greșelile. Când le spunem altora despre greșelile pe care le-am făcut, avem tendința să ne amintim acele evenimente mai profund. Acest lucru se datorează faptului că atunci când le spunem altora, trebuie să clarificăm lucrurile și să ne amintim fiecare detaliu al greșelii. În acest fel, putem înțelege mai bine aceste erori și prevenim să se repete.
Pe scurt, există o relație puternică între procesarea erorilor și memorie. Gestionând greșelile corect, ne putem întări memoria, ne putem îmbunătăți abilitățile și abilitățile și putem deveni oameni mai buni. Ar trebui să privim greșelile ca pe o oportunitate, să ne confruntăm activ cu dificultățile și să învățăm și să creștem din ele. Se poate observa că trebuie să îmbunătățim memoria, iar Cistanche deserticola poate îmbunătăți semnificativ memoria deoarece Cistanche deserticola este un material medicinal tradițional chinezesc care are multe efecte unice, dintre care unul este îmbunătățirea memoriei. Eficacitatea Cistanche deserticola provine din multiplele ingrediente active pe care le conține, inclusiv acid tanic, polizaharide, glicozide flavonoide etc. Aceste ingrediente pot promova sănătatea creierului printr-o varietate de căi.

Faceți clic pe Cunoașteți memoria pe termen scurt cum să vă îmbunătățiți
În schema originală de copiere la scriere, prima scriere a fiecărei pagini este capturată de manipulatorul de erori de pagină.
Doar pagina defectuoasă este copiată, iar sistemul poate urmări cu exactitate accesul fiecărei pagini prin gestionarea erorilor de pagină. Pe de altă parte, atunci când sistemul copiază o întreagă regiune, toate paginile din regiune sunt mapate la proces cu permisiunea scrisă.
Astfel, scrierile ulterioare pe acele pagini copiate pot avea loc fără declanșarea mecanismului de gestionare a erorilor de pagină, astfel încât sistemul nu poate urmări accesele la paginile copiate. Acest lucru poate fi problematic atunci când procesul efectuează bifurcări în mod repetat. Să presupunem că o regiune are o localitate spațială mare și o epocă este definită ca perioada dintre două bifurcări.
Localitatea înaltă poate fi surprinsă prin numărarea erorilor de pagină care au avut loc în regiune. Apoi să presupunem că procesul creează un nou proces cu o furcă. Când se începe o nouă epocă cu bifurcația, primul acces de scriere la una dintre paginile din regiune va iniția CCoW, copierea tuturor paginilor din regiune. Acum, procesul are toate paginile cu permisiunea de scriere și nu sunt generate alte erori de pagină din regiune până la sfârșitul epocii.
Când se începe din nou o nouă epocă, regiunea este considerată a avea o acoperire scăzută în epocă, dat fiind că regiunea are o singură pagină de copiere la scriere. Astfel, fiecare scriere în regiune este procesată prin mecanismul original de copiere pe scriere pe pagină, compromițând astfel oportunitatea de optimizare a performanței chiar dacă regiunea are o localitate înaltă.
Rețineți că regiunea este considerată a avea din nou o localitate ridicată în epoca următoare, iar procesul se repetă pentru a alterna situația. Pentru a rezolva această problemă, avem nevoie de un mecanism de urmărire a accesului la pagină după copiere.
Acest studiu propune utilizarea bitului murdar din intrarea tabelului de pagini (PTE). În general, arhitecturile moderne mențin diverse informații în PTE pentru fiecare pagină, iar bitul murdar este unul dintre câmpurile suportate de majoritatea arhitecturilor.
Când MMU procesează un acces la memorie de scriere, setează automat bitul murdar al paginii corespunzătoare. Acest lucru implică, dimpotrivă, că atunci când este setat bitul murdar pentru o pagină, pagina a fost actualizată cu acces de scriere.
Pe baza acestei idei, am modificat mecanismul de calcul al acoperirii. Inițial, toate regiunile sunt considerate a fi regiuni normale. În timpul bifurcării, acoperirea pentru regiunile normale este calculată cu numărul de copiere pe scrieri folosind ecuația (1).

În timp ce se gestionează eroarea paginii pentru o regiune cu localitate înaltă, toate paginile din regiune sunt copiate cu bitul murdar șters. În plus, regiunea este marcată ca regiune precopiată. În timpul bifurcării, acoperirea pentru regiunea copiată este calculată cu numărul de pagini murdare din regiune, după cum urmează:
![]()
Acoperirea calculată pentru fiecare regiune este efectuată prin bifurcație și utilizată ca metrică pentru localitatea spațială a regiunii. Când apare o eroare a paginii de scriere într-o regiune, sistemul verifică acoperirea regiunii și poate copia în prealabil paginile pentru regiunile cu localitate înaltă.
Figura 2 ilustrează o situație în care acoperirea este calculată după precopii. Să presupunem că ambele regiuni sunt copiate (umbrite în roșu), iar paginile 0, 2, 3, 4 și 11 au toate bitul murdar setat.
Pentru a calcula acoperirea în timpul procesării fork-ului, sistemul folosește bitul murdar în loc de numărul de copiere la scriere, deoarece regiunile sunt copiate în epoca actuală. Astfel, regiunea 0 are o acoperire de 66%.
În timp ce acoperirea regiunii 1 este de 15%. Pentru a gestiona eroarea de pagină pentru pagina 3, regiunea 0 este copiată din nou, în timp ce eroarea de pagină pentru pagina 9 este gestionată cu mecanismul original. În acest fel, putem împiedica regiunile cu localități înalte să nu alunece din focus.

3.4. Capturarea Localității
Întrucât gestionarea erorilor de pagină se află pe calea critică pentru performanță în sistemul de operare, ar trebui să minimizăm costul general pentru implementarea schemei propuse.
Practic, CCoWare nevoie de un mecanism pentru a calcula acoperirea, iar cea mai simplă modalitate de implementare a acestei caracteristici este urmărirea paginilor care declanșează erori de pagină cu un bitmap, așa cum am descris în Secțiunea 3.2.
În timpul gestionării unei erori de pagină, sistemul setează bitul corespunzător paginii defectuoase. În timpul bifurcării, sistemul scanează bitmap-ul pentru a număra numărul de pagini defecte pentru fiecare regiune și calculează acoperirea. Bitmap-ul este resetat după calcul.
Această abordare este simplă, dar impune constrângeri mari de spațiu și timp. Sistemul ar trebui să mențină o intrare bitmap de un bit pentru fiecare pagină de 4 KB și să inspecteze întregul bitmap în timpul bifurcării. Având în vedere amprenta uriașă de memorie a aplicațiilor intensive în memorie, aceste operațiuni vor implica o supraîncărcare mare în timpul bifurcării, compensând beneficiul de performanță al CCoW. Optimizăm această implementare prin exploatarea caracteristicilor erorii de pagină.
Dacă se întâmplă o eroare de pagină dintr-o pagină, pagina nu are erori de pagină suplimentare până când procesul creează un nou proces. Astfel, fiecare pagină poate declanșa o eroare de o pagină de cel mult, iar pentru o regiune cu n pagini, erorile de pagină pot apărea de până la n ori. Aceasta implică faptul că numărarea numărului de erori de pagină per regiune este suficientă pentru a calcula acoperirea, mai degrabă decât menținerea bitmap-ului pentru pagini individuale.
Astfel, înlocuim bitmap-ul cu contoarele de erori. Fiecare regiune este asociată cu o pereche de contoare, după cum urmează: unul pentru numărarea erorilor de pagină din ultima epocă și altul pentru numărarea erorilor de pagină din epoca actuală.
Primul este folosit pentru a determina localitatea spațială a regiunilor, în timp ce al doilea este folosit pentru a monitoriza localitatea spațială a epocii actuale. În timpul bifurcării, contorul de erori curent este copiat pe contorul de erori anterior.
Dacă o regiune este copiată în această epocă, numărul de pagini murdare din regiune este scris în contorul de erori anterior. Contoarele sunt populate în timp ce se creează o nouă zonă de memorie virtuală (VMA) și sunt recuperate atunci când VMA-ul lor corespunzător este micșorat sau nemapat. Această optimizare reduce supraîncărcarea spațiului CCoW de la un bit pe pagină la câțiva octeți per regiune.

For more information:1950477648nn@gmail.com






