Pri vyžiadaní údajov z akéhokoľvek zdroja vždy dôjde k určitému oneskoreniu. Ping na webové servery sa meria v milisekundách, čas prístupu k úložisku môže mať latencie v mikrosekundách, zatiaľ čo latencia RAM sa meria v taktovacích cykloch CPU. Samozrejme, že tieto druhy rýchlostí by boli ešte pred niekoľkými desaťročiami nemysliteľné, ale v súčasnosti nie sú nikdy dosť rýchle. Rýchlosť prístupu je pravidelne určitou formou prekážok vo výkone. Jedným zo spôsobov, ako to vyriešiť, je ukladanie do vyrovnávacej pamäte.
Ukladanie do vyrovnávacej pamäte je proces ukladania dočasnej kópie zdroja takým spôsobom, že k nemu možno pristupovať rýchlejšie, ako by to mohlo byť normálne. Existuje široká škála implementácií v oblasti softvéru aj hardvéru. Vyrovnávacie pamäte môžu fungovať ako vyrovnávacie pamäte na čítanie, zapisovanie alebo oboje.
Čítanie vyrovnávacích pamätí
Vo vyrovnávacej pamäti na čítanie sa údaje, ktoré boli predtým vyžiadané, ukladajú do vyrovnávacej pamäte pre rýchlejší prístup. V niektorých scenároch môže byť vyrovnávacia pamäť dokonca preventívne naplnená údajmi, ktoré umožňujú obslúžiť prvú požiadavku z vyrovnávacej pamäte, a nie iba následné požiadavky.
Vyrovnávacia pamäť na čítanie, ktorú s najväčšou pravdepodobnosťou poznáte, je vyrovnávacia pamäť prehliadača. Tu prehliadač ukladá lokálnu kópiu požadovaných zdrojov. To znamená, že ak a keď sa webová stránka znova načíta alebo sa načíta podobná stránka, ktorá používa veľkú časť rovnakého obsahu, tento obsah možno poskytnúť z vyrovnávacej pamäte, a nie z webového servera. Nielenže to znamená, že sa webová stránka môže načítať rýchlejšie, ale tiež to znižuje zaťaženie webu a znižuje množstvo dát, ktoré používateľ potrebuje stiahnuť, čo môže byť dôležité pri meraní spojenia.
Samotná RAM funguje aj ako vyrovnávacia pamäť na čítanie údajov na pevnom disku. V tomto prípade sa údaje pre spustený program preventívne načítajú do pamäte RAM, aby k nim procesor mohol pristupovať rýchlejšie. Údaje z pamäte RAM sa potom ďalej ukladajú do vyrovnávacej pamäte CPU, hoci proces je oveľa zložitejší, pretože vyrovnávacia pamäť CPU sa meria v megabajtoch, nie v gigabajtoch.
Zapisujte vyrovnávacie pamäte
Zápisová vyrovnávacia pamäť je vyrovnávacia pamäť, ktorá dokáže absorbovať údaje zapisované do pomalšieho zariadenia. Bežným príkladom by bola vyrovnávacia pamäť SLC v moderných SSD. Táto vyrovnávacia pamäť neumožňuje rýchlejšie čítanie údajov, zápis je však oveľa rýchlejší ako zápis na TLC alebo QLC flash, ktorý tvorí zvyšok SSD. Vyrovnávacia pamäť SLC dokáže absorbovať vysokorýchlostné operácie zápisu a potom tieto údaje hneď, ako to bude možné, odovzdá na flash disk TLC, ktorý ponúka oveľa lepšiu hustotu úložiska, no zápis je tiež oveľa pomalší. Použitie flash pamäte týmto spôsobom ju optimalizuje pre vysoké rýchlosti zápisu a vysokú hustotu úložiska.
Hybridné vyrovnávacie pamäte
Existuje mnoho spôsobov, ako zaobchádzať s vyrovnávacími pamäťami, ktoré im umožňujú fungovať ako vyrovnávacia pamäť na čítanie aj zápis. Každá z týchto metód spracováva operácie zápisu inak a má výhody a nevýhody. Tri možnosti sú prepisovanie, prepisovanie a spätný odpis. Zápisová vyrovnávacia pamäť pri zápise úplne preskočí vyrovnávaciu pamäť, vyrovnávacia pamäť na zápis zapíše do vyrovnávacej pamäte, ale operáciu považuje za dokončenú až vtedy, keď je zapísaná do úložiska. Vyrovnávacia pamäť na spätný zápis zapíše do vyrovnávacej pamäte a potom považuje operáciu za dokončenú, pričom sa spolieha na to, že vyrovnávacia pamäť ju v prípade potreby prenesie do úložiska.
Zápis okolo môže byť užitočný, ak očakávate veľký objem zápisov, pretože minimalizuje migráciu medzipamäte. Znamená to však, že operácia, ktorá potom načíta akékoľvek z týchto zapísaných údajov, bude čeliť aspoň jednému zmeškaniu vyrovnávacej pamäte prvýkrát. Zápis do vyrovnávacej pamäte okamžite ukladá operácie zápisu do vyrovnávacej pamäte, čo znamená, že výsledok môže byť doručený z vyrovnávacej pamäte pri prvom vyžiadaní. Aby sa však operácia zápisu považovala za dokončenú, musí tiež zapísať údaje na disk, čo zvyšuje latenciu. Cache so spätným zápisom má rovnakú výhodu ako zapisovanie, čo umožňuje okamžité doručenie zapísaných údajov z vyrovnávacej pamäte. Nevyžaduje však operácie zápisu na zápis na disk, aby bol považovaný za dokončený. To znižuje latenciu zápisu, ale prichádza s rizikom straty údajov, ak je vyrovnávacia pamäť nestabilná a nedokončí zápis údajov späť do úložiska pred stratou napájania.
Ako odstrániť údaje z vyrovnávacej pamäte?
Jedným z limitujúcich faktorov každej vyrovnávacej pamäte je kapacita. Veľká keška sa hľadá dlho, čím sa ruší značná časť výhody používania vyrovnávacej pamäte. Pamäťové technológie používané na ukladanie do vyrovnávacej pamäte majú tiež tendenciu byť drahšie ako pamäť, z ktorej sa ukladajú do vyrovnávacej pamäte. Ak by to tak nebolo, je pravdepodobné, že táto pamäťová vrstva by zmenila pamäťové technológie na zlepšenie výkonu. Oba tieto faktory znamenajú, že vyrovnávacie pamäte majú tendenciu byť relatívne malé, najmä v porovnaní s pamäťovým médiom, z ktorého sa ukladajú do vyrovnávacej pamäte. RAM má menšiu kapacitu ako úložisko a vyrovnávacia pamäť CPU má menšiu kapacitu ako RAM. Vyrovnávacia pamäť SLC má menšiu kapacitu ako pamäť TLC.
To všetko znamená, že je často potrebné cyklovať údaje z vyrovnávacej pamäte, aby sa uvoľnilo miesto pre nové údaje, ktoré je potrebné uložiť do vyrovnávacej pamäte. K tomu existuje celý rad rôznych prístupov. „Najmenej často používané“ uprednostňuje vymazanie záznamov z vyrovnávacej pamäte, ktoré majú najnižší počet prístupov. To môže byť užitočné na predpovedanie, ktoré položky budú mať najmenší vplyv na budúce vynechania vyrovnávacej pamäte by tiež považovali nedávno pridané položky za položky s nízkym počtom prístupov, čo môže viesť k ukladaniu do vyrovnávacej pamäte mútiť.
„Najmenej nedávno použité“ uprednostňuje vymazanie záznamov z vyrovnávacej pamäte, ktoré sa nejaký čas nepoužívali. To predpokladá, že sa v súčasnosti nepoužívajú, ale nezohľadňuje to, či sa predtým veľmi používali. „Najnovšie použité“ uprednostňuje vymazanie naposledy použitých záznamov z vyrovnávacej pamäte za predpokladu, že už boli použité a nebude potrebné ich znova použiť. Najlepším prístupom je vo všeobecnosti kombinácia všetkých troch na základe štatistík používania.
Zastarané informácie a bezpečnostné riziká
Hlavným rizikom cache je, že informácie, ktoré obsahujú, môžu zastarať. Záznam z vyrovnávacej pamäte sa považuje za neaktuálny, keď boli pôvodné údaje aktualizované, pričom záznam z vyrovnávacej pamäte je neaktuálny. Je dôležité pravidelne overovať, či sa poskytovaná živá kópia stále zhoduje s kópiou uloženou vo vyrovnávacej pamäti.
Konkrétne na webových stránkach je tiež mimoriadne dôležité identifikovať, ktoré údaje môžu a nemôžu byť uložené do vyrovnávacej pamäte. Napríklad je úplne v poriadku, ak sa do vyrovnávacej pamäte uloží veľký nemenný súbor JavaScript. Používateľ tak nebude musieť zakaždým sťahovať a dokonca môže byť prínosom pre ostatných používateľov, ktorí obsluhujú rovnakú vyrovnávaciu pamäť. Nemôžete však ukladať do vyrovnávacej pamäte údaje špecifické pre reláciu. Predstavte si, čo by sa stalo, keby ste prešli do aplikácie na odosielanie správ a zároveň ste sa prihlásili ako vy, len aby ste zistili, že vám bola doručená verzia správ iného používateľa vo vyrovnávacej pamäti. Našťastie webové servery môžu určiť, ktoré zdroje môžu a nemôžu byť uložené do vyrovnávacej pamäte, a tieto problémy sú všeobecne dobre známe, takže existuje len málo takýchto problémov.
Záver
Vyrovnávacia pamäť je časť pamäte, ktorá môže ukladať niektoré nedávno použité údaje spôsobom ukladania, ku ktorému je rýchlejší prístup, ako by to bolo pri opätovnom dokončení normálneho procesu prístupu k údajom. Vyrovnávacia pamäť má zvyčajne obmedzenú kapacitu, čo znamená, že po jej zaplnení je potrebné odstrániť položky. Vyrovnávacie pamäte sú vo všeobecnosti pre používateľa transparentné, čo znamená, že latencia je jediným indikátorom toho, že výsledok bol doručený prostredníctvom vyrovnávacej pamäte.