CCoW: Optimiziranje Copy-on-Write s obzirom na prostornu lokaciju u radnim opterećenjima, 1. dio
Apr 02, 2024
sažetak:
Copy-on-write (CoW) je osnovna tehnika upravljanja memorijom koja omogućava efikasno dijeljenje stranica između procesa. Konkretno, u kombinaciji CoW sa fork systemcall-om, aplikacije, čak i sa ogromnim memorijskim otiskom, mogu napraviti snimak trenutnih podataka u memoriji pri niskim troškovima.
Memorijski podaci se odnose na podatke pohranjene u memoriji računara. Iako se razlikuje od ljudskog pamćenja, postoji određena veza između njih.
Prvo, podaci o memoriji mogu potaknuti razvoj ljudskog pamćenja. Na primjer, možemo koristiti funkcije snimanja, pohrane i pronalaženja računara da nam pomognu da naučimo, zapamtimo i razumijemo znanje. Savremena tehnologija nam pruža efikasnije načine pamćenja i učenja, što nam osigurava bolje savladavanje znanja i vještina.
Drugo, memorijski podaci također mogu pomoći ljudima da bolje upravljaju svojim uspomenama. Uredno organiziranjem i klasifikacijom podataka možemo brže pronaći i prisjetiti informacije koje su nam potrebne, što je vrlo važno za naš život, rad i učenje.
Ono što je najvažnije, podaci u memoriji sprečavaju gubitak ljudske memorije. Ljudsko pamćenje postepeno slabi tokom vremena, što se naziva procesom "zaboravljanjem". Međutim, pohranjivanjem podataka na hard disk računara, možemo osigurati da informacije i uspomene koje su nam potrebne mogu biti zadržane i preuzete u bilo kojem trenutku.
Stoga se za odnos između memorijskih podataka i ljudskog pamćenja može reći da je pozitivan. Iako se ne treba previše oslanjati na tehnologiju, razumna upotreba memorijskih podataka može poboljšati našu radnu efikasnost i rezultate učenja, pomoći nam da bolje upravljamo pamćenjem i spriječimo zaboravljanje. Vidi se da moramo poboljšati pamćenje, a cistanche deserticola može značajno poboljšati pamćenje jer je cistanche deserticola tradicionalni kineski ljekoviti materijal koji ima mnogo jedinstvenih učinaka, od kojih je jedno poboljšanje pamćenja. Djelotvornost Cistanche deserticola dolazi od višestrukih aktivnih sastojaka koje sadrži, uključujući taninsku kiselinu, polisaharide, flavonoidne glikozide, itd. Ovi sastojci mogu promovirati zdravlje mozga na različite načine.

Kliknite na saznajte 10 načina za poboljšanje memorije
Međutim, pošto se CoW odvija po stranici u rukovaocu greškama stranice, svaki put kada se desi greška stranice, operativni sistem bi trebao da se uključi. Ovo dovodi do značajne degradacije performansi za radna opterećenja koja intenzivno pišu.
Ovaj rad predlaže kopiranje-pisanje zasnovano na pokrivenosti (CCoW), optimiziranu shemu CoW koja uzima u obzir lokaciju u pristupima memoriji kako bi se ublažio problem CoW. CCoW mjeri prostornu lokaciju u procesnim adresnim prostorima konceptom pokrivenosti.
Dok obrađuje CoW, CCoW kopira više stranica unaprijed za memorijske regije visoke lokacije, čime se minimizira uključenost OS-a za radna opterećenja koja intenzivno pišu. Objašnjavamo izazove za mjerenje lokaliteta i pružamo optimizaciju za implementaciju koncepta.
Evaluacija sa prototipom pokazuje da ovaj pristup može poboljšati ukupne performanse aplikacija do 10% uz malu količinu memorije.
Ključne riječi: copy-on-write; virtuelni memorijski sistem; viljuška; Redis; greška stranice.
1. Uvod
Primarna uloga operativnog sistema (OS) je upravljanje dragocjenim sistemskim resursima, a kopiranje na upisivanje (CoW) je jedna od najosnovnijih tehnika upravljanja memorijom koje je usvojila većina savremenih operativnih sistema.
Kada dva ili više procesa moraju imati iste podatke, CoW shema dozvoljava procesima da dijele iste stranice umjesto da odmah dupliciraju stranice. Dijeljene stranice se dupliraju na zahtjev, samo kada jedan od procesa piše na dijeljene stranice.
Sistemi virtuelne memorije mogu efikasno da obezbede deljenje podataka između procesa, a različite karakteristike virtuelne memorije, kao što je dupliciranje adresnog prostora tokom procesa račvanja, uklanjanje duplikata istih stranica i nulto deljenje stranica, implementiraju se na osnovu kopiranja na upis [1–3]. Zahvaljujući ovim karakteristikama, aplikacije mogu napraviti kopiju same sebe sa malim prostorom i koristiti klon na odgovarajući način.
Na primjer, Redis, jedan od popularnih sistema skladištenja vrijednosti ključa u memoriji [4], koristi kopiranje na pisanje u sprezi sa fork sistemom za pozivanje trajnih podataka u memoriji u skladište. Dok opslužuje ulazne zahtjeve, glavni proces Redis periodično pokreće podređeni proces s viljuškom. Podređeni proces počinje sa snimkom memorije identičnim glavnom procesu za spremanje podataka u memoriji u memoriju.

Kako je snimak izoliran od adresnog prostora glavnog procesa, ali njime upravlja kopiranje na upisivanje, glavni i podređeni procesi ne zahtijevaju nikakav komplikovan mehanizam za održavanje konzistentnosti između trenutnih podataka i snimka.
Dakle, možemo smatrati da je kopiranje-upisivanje ključno u sistemu virtuelne memorije. Međutim, trenutno kopiranje-upisivanje je problematično u aplikacijama koje intenzivno koriste memoriju sa radnim opterećenjima koja su intenzivnija u pisanju. Konkretno, dupliciranje podataka se obično događa u rukovatelju grešaka stranice u OS-u. Budući da se dupliciranje podataka obrađuje po stranici, s nekoliko upisivanja, proces može izazvati značajan broj grešaka stranice.
OS je uključen u grešku svake stranice, što rezultira čestim promjenama načina rada jezgra korisnika. S obzirom na ogroman memorijski otisak aplikacija koje intenzivno koriste memoriju, broj prekidača načina rada je velik.
Osim toga, tabela stranica se mijenja tokom dupliciranja, što dovodi do prevođenja bafera gledanja u stranu (TLB) za sve jezgre u sistemu. Sve ovo izaziva nezanemarive troškove i pogoršava performanse aplikacija.
Ovaj rad predlaže kopiranje na pisanje (CCoW), novu shemu optimizacije kopiranja na pisanje. Kada se stranici pristupi radi pisanja, vjerovatno će se uskoro pristupiti i njenim obližnjim stranicama radi pisanja zbog prostorne lokacije u pristupima memoriji. CCoW iskorištava prostornu lokaciju kako bi smanjio broj grešaka stranica za kopiranje na upisivanje. Konkretno, CCoW obrađuje copy-on-write u velikoj granularnosti (naziva se regija).
Kopiranjem više stranica u obrađivaču grešaka stranica, CCoW može smanjiti značajan broj grešaka stranica za kopiranje-upisivanje i prateće troškove. Međutim, stepen prostorne lokalnosti uveliko varira u zavisnosti od lokacije u adresnom prostoru procesa, a umnožavanje delova memorije niske lokacije podrazumeva samo troškove u smislu vremena i prostora.
Da bismo prevazišli ovaj nedostatak, predlažemo precizan mehanizam sa niskim troškovima za procjenu prostorne lokacije u adresnom prostoru procesa. CCoW broji broj kopiranja i upisa u svakoj regiji.
Prenošenjem informacija o lokalitetu preko račva, možemo procijeniti stepen prostornog lokaliteta, a CCoW efektivno izvodi prekopiju samo za regije s visokom lokacijom. Implementirali smo predloženu shemu CCoW u jezgru Linuxa.
Pošto su integrisane u virtuelni memorijski sistem operativnog sistema, aplikacije mogu imati koristi od CCoW bez modifikacija. Analizirali smo karakteristike performansi pomoću mikrobenchmark-a, a procena korišćenjem benchmark-a sa realnim radnim opterećenjem pokazuje da CCoW može poboljšati performanse aplikacije do 10% uz razumnu količinu memorije.

Ostatak ovog rada organiziran je na sljedeći način. U odjeljku 2, pregledavamo pozadinu i srodni rad papira, uključujući virtualnu memoriju i viljušku. Objašnjavamo detalje dizajna CCoW-a i njegovu implementaciju u Odjeljku 3. Odjeljak 4. predstavlja rezultate evaluacije CCoW-a. Konačno, zaključujemo ovaj rad u Odjeljku 5.
2. Pozadina i srodni rad
2.1. Pejdžing i virtuelna memorija
Gotovo svi moderni računari i operativni sistemi usvajaju straničnu i virtuelnu memoriju kao svoju primarnu šemu upravljanja memorijom [5]. Glavna memorija je podijeljena na stranice iste veličine, a OS dodjeljuju ili oslobađaju memoriju od korisničkih procesa u jedinici stranice.
OS-ovi također održavaju mapiranja adresnih prostora procesa na fizičku lokaciju na sistemu. Svaka logička stranica u adresnom prostoru procesa je mapirana na svoju fizičku lokaciju, a ovo mapiranje je pohranjeno u obliku tablice stranica.
Za rukovanje memorijskom referencom za proces, jedinica za upravljanje memorijom (MMU), hardverska komponenta u procesoru, prevodi traženu adresu u svoju fizičku adresu pozivajući se na tablicu stranica. Tablica stranica sadrži unose tablice stranica (PTE). Svaki PTE sadrži informacije o mapiranju i može imati dodatna polja za opisivanje statusa odgovarajuće stranice i mapiranja.
Veličina stranice, iako je specifična za arhitekturu, obično je 4 KB u većini arhitektura. Ovo implicira da svaka 4 KB u adresnom prostoru procesa treba imati jedan PTE. S obzirom na ogromnu veličinu adresnog prostora procesa, veličina tabele stranica, čak i za jedan proces, može biti ogromna.
Na primjer, tabela stranica za proces u 64-bitnoj arhitekturi sa 4 KB stranicama i 8-bajt PTE bi bila veličine 32 PB (264/212 × 8=255 bajtova). Međutim, adresni prostor je obično rijetko popunjen, a većina adresnog prostora nije potrebna.
Ovo osvetljava hijerarhijsku organizaciju tabele stranica. Cijela tabela stranica podijeljena je na dijelove tablice stranica koji stanu na stranicu. Dijelovi tablice stranica nisu dodijeljeni nedodijeljenim adresnim regijama.

Popunjeni dijelovi tablice stranica mogu se sumirati kao dijelovi tablice stranica višeg nivoa. Ovo indirektno uputstvo se ponavlja sve dok ne postoje samo delovi na jednoj stranici, čime se omogućava kompaktan oblik tabela stranica.
For more information:1950477648nn@gmail.com






