Mis on vahemälu?

click fraud protection

Mis tahes allikast andmete taotlemisel esineb alati viivitusi. Veebiserveritele pingimist mõõdetakse millisekundites, salvestusele juurdepääsuajal võib latentsusaeg olla mikrosekundites, samas kui RAM-i latentsusaega mõõdetakse protsessori kella tsüklites. Muidugi oleks seda tüüpi kiirused olnud mõeldamatud veel mõnikümmend aastat tagasi, kuid praegusel ajal pole need kunagi piisavalt kiired. Juurdepääsukiirus on tavaliselt jõudluses teatud tüüpi kitsaskoht. Üks viise selle lahendamiseks on vahemällu salvestamine.

Vahemällu salvestamine on protsess, mille käigus salvestatakse ressursi ajutine koopia nii, et sellele pääseks juurde kiiremini kui tavaliselt. Rakendusi on nii tarkvaras kui ka riistvaras tohutult palju. Vahemälud võivad toimida lugemis-, kirjutamis- või mõlemana.

Vahemälu lugemine

Lugemisvahemälus salvestatakse varem küsitud andmed kiiremaks juurdepääsuks vahemällu. Mõne stsenaariumi korral võidakse vahemälu isegi ennetavalt laadida andmeid, mis võimaldavad vahemälust edastada esimest päringut, mitte ainult järgnevaid päringuid.

Lugemisvahemälu, millega olete tõenäoliselt tuttav, on brauseri vahemälu. Siin salvestab brauser taotletud ressursside kohaliku koopia. See tähendab, et kui ja kui veebileht laaditakse uuesti või laaditakse sarnane leht, mis kasutab suures osas sama sisu, saab seda sisu edastada vahemälust, mitte veebiserverist. See mitte ainult ei tähenda, et veebileht saab kiiremini laadida, vaid vähendab ka veebi koormust serverisse ja vähendab kasutajal allalaaditavate andmete hulka, mis võib mõõtmisel olla oluline ühendused.

RAM ise toimib ka kõvakettal olevate andmete lugemisvahemäluna. Sel juhul laaditakse töötava programmi andmed ennetavalt RAM-i, et CPU saaks neile kiiremini juurde pääseda. RAM-i andmed salvestatakse seejärel vahemällu CPU vahemällu, kuigi see protsess on palju keerulisem, kuna protsessori vahemälu mõõdetakse megabaitides, mitte gigabaitides.

Vahemälu kirjutamine

Kirjutamisvahemälu on vahemälu, mis suudab absorbeerida aeglasemasse seadmesse kirjutatavaid andmeid. Selle tavaline näide on tänapäevaste SSD-de SLC-vahemälu. See vahemälu ei võimalda andmeid kiiremini lugeda, kirjutamine on aga palju kiirem kui TLC või QLC välkmälu, mis moodustab ülejäänud SSD. SLC vahemälu suudab neelata kiireid kirjutamistoiminguid ja seejärel laadida need andmed niipea kui võimalik TLC-välkmällu, mis pakub palju paremat salvestustihedust, kuid millele kirjutamine on ka palju aeglasem. Välkmälu kasutamine sellisel viisil optimeerib seda nii kiire kirjutamiskiiruse kui ka suure salvestustiheduse jaoks.

Hübriidvahemälud

Vahemälu haldamiseks on palju viise, mis võimaldavad neil töötada nii lugemis- kui ka kirjutamisvahemäluna. Kõik need meetodid käsitlevad kirjutamistoiminguid erinevalt ning neil on eelised ja puudused. Kolm võimalust on ümberkirjutamine, läbikirjutamine ja tagasikirjutamine. Ümberkirjutatav vahemälu jätab kirjutamisel vahemälu täielikult vahele, vahemälu kirjutab vahemällu, kuid loeb toimingu lõpetatuks alles siis, kui see on salvestusruumi kirjutatud. Tagasikirjutamise vahemälu kirjutab vahemällu ja loeb toimingu lõpetatuks, tuginedes vahemälule, et see vajadusel salvestusruumi üle kanda.

Ümberkirjutamine võib olla kasulik, kui ootate suurt hulka kirjutusi, kuna see vähendab vahemälu tühjenemist. See aga tähendab, et toimingul, mis loeb mis tahes kirjalikke andmeid, tekib esimesel korral vähemalt üks vahemälu puudujääk. Läbikirjutamise vahemälud salvestavad kirjutustoimingud kohe vahemällu, mis tähendab, et tulemust saab vahemälust edastada, kui seda esimest korda küsitakse. Kuid selleks, et kirjutusoperatsioon loetaks lõpetatuks, peab see ka andmed kettale kirjutama, mis suurendab latentsust. Tagasikirjutaval vahemällul on sama eelis kui läbikirjutamisel, võimaldades kirjalikke andmeid vahemälust kohe kätte toimetada. See ei nõua kettale kirjutamiseks kirjutamistoiminguid, et lugeda seda lõpetatuks. See vähendab kirjutamise latentsust, kuid sellega kaasneb andmete kadumise oht, kui vahemälu on muutlik ja andmete salvestamine salvestusruumi ei lõpetata enne toite kadumist.

Kuidas andmeid vahemälust eemaldada?

Üks vahemälu piiravaid tegureid on mahutavus. Suure vahemälu otsimine võtab kaua aega, tühistades suure osa vahemälu kasutamise eelistest. Vahemällu salvestamiseks kasutatavad mälutehnoloogiad kipuvad olema ka kallimad kui mälu, millest nad vahemällu salvestavad. Kui see nii ei oleks, oleks tõenäoline, et see mälutasand oleks jõudluse parandamiseks mälutehnoloogiaid vahetanud. Mõlemad tegurid tähendavad, et vahemälud kipuvad olema suhteliselt väikesed, eriti kui võrrelda salvestusmeediumiga, millelt nad vahemällu salvestavad. RAM-il on väiksem maht kui salvestusruumil ja protsessori vahemälu mahutavus on väiksem kui RAM-il. SLC vahemälu mahutavus on väiksem kui TLC mälul.

Kõik see tähendab, et sageli on vaja andmed vahemälust välja lülitada, et vabastada ruumi uutele andmetele, mis tuleb vahemällu salvestada. Selleks on mitmeid erinevaid lähenemisviise. "Kõige vähem kasutatav" eelistab välja tõsta vahemälu kirjeid, millel on madalaim juurdepääs. See võib olla kasulik selleks, et ennustada, millised kirjed mõjutavad tulevasi vahemälu kaotusi kõige vähem, kuid loeks ka väga hiljuti lisatud kirjed vähese juurdepääsuga, mis võib kaasa tuua vahemälu kloppima.

„Kõige vähem kasutatud” eelistab tühjendada vahemälu kirjeid, mida pole mõnda aega kasutatud. See eeldab, et neid praegu ei kasutata, kuid ei võeta arvesse seda, kas neid kasutati mõnda aega tagasi palju. „Viimati kasutatud” eelistab välja tõsta viimati kasutatud vahemälukirjed, eeldades, et neid on kasutatud ja neid ei pea uuesti kasutama. Parim lähenemisviis on üldiselt kõigi kolme kombinatsioon, mille aluseks on kasutusstatistika.

Aegunud info- ja turvariskid

Vahemälude peamine oht seisneb selles, et neis sisalduv teave võib aeguda. Vahemälu kirje loetakse aegunuks, kui algandmeid on värskendatud ja vahemälu kirje on aegunud. Oluline on regulaarselt kontrollida, kas edastatav reaalajas koopia vastab endiselt vahemällu salvestatud koopiale.

Spetsiaalselt veebisaitidel on samuti äärmiselt oluline kindlaks teha, milliseid andmeid saab vahemällu salvestada ja milliseid mitte. Näiteks on täiesti hea, kui vahemällu salvestatakse suur muutumatu JavaScript-fail. See säästab kasutajat selle iga kord allalaadimisest ja võib isegi olla kasulik teistele sama vahemälu teenindatavatele kasutajatele. Seansipõhiseid andmeid ei saa siiski vahemällu salvestada. Kujutage ette, mis juhtuks, kui sirviksite sõnumsiderakendust, olles ise sisse logitud, ja avastaksite, et teile edastatakse teise kasutaja sõnumite vahemällu salvestatud versioon. Õnneks saavad veebiserverid määrata, milliseid ressursse saab vahemällu salvestada ja milliseid mitte ning need probleemid on üldiselt hästi teada, nii et selliseid probleeme on vähe.

Järeldus

Vahemälu on osa mälust, mis suudab salvestada hiljuti kasutatud andmeid salvestusmeetodil, millele on juurdepääs kiirem kui tavalise andmetele juurdepääsu protsessi uuesti lõpuleviimisel. Vahemälu on tavaliselt piiratud mahuga, mis tähendab, et kui see on täis, peab see kanded välja tõstma. Vahemälud on kasutajale üldiselt läbipaistvad, mis tähendab, et latentsusaeg on ainus märk sellest, et tulemus edastati vahemälu kaudu.