Mi az a gyorsítótár?

Amikor bármilyen forrásból adatokat kér, mindig van némi késés. A webszerverekre küldött pinget ezredmásodpercben mérik, a tárhely-hozzáférési idő mikroszekundumokban is késhet, míg a RAM késleltetését a CPU órajelciklusaiban mérik. Természetesen néhány évtizeddel ezelőtt még elképzelhetetlenek lettek volna az effajta sebességek, de manapság soha nem elég gyorsak. A hozzáférési sebesség rendszeresen a teljesítmény szűk keresztmetszete. Ennek egyik módja a gyorsítótárazás.

A gyorsítótárazás egy olyan folyamat, amelynek során egy erőforrás ideiglenes másolatát tárolják oly módon, hogy az a szokásosnál gyorsabban elérhető legyen. A megvalósítások óriási skálája létezik mind szoftveresen, mind hardveresen. A gyorsítótárak olvasási gyorsítótárként, írási gyorsítótárként vagy mindkettőként működhetnek.

Gyorsítótárak olvasása

Az olvasási gyorsítótárban a korábban kért adatok a gyorsítótárban tárolódnak a gyorsabb hozzáférés érdekében. Egyes forgatókönyvekben a gyorsítótárat előre meg lehet tölteni olyan adatokkal, amelyek lehetővé teszik az első kérés kiszolgálását a gyorsítótárból, nem pedig a további kéréseket.

Az olvasási gyorsítótár, amelyet valószínűleg ismer, a böngésző gyorsítótár. Itt a böngésző a kért erőforrások helyi másolatát tárolja. Ez azt jelenti, hogy ha és amikor a weboldal újratöltésre kerül, vagy egy hasonló oldalt töltenek be, amely nagyrészt ugyanazt a tartalmat használja, akkor az adott tartalom a gyorsítótárból, nem pedig a webszerverből jeleníthető meg. Ez nem csak azt jelenti, hogy a weboldal gyorsabban be tud tölteni, hanem csökkenti a web terhelését is szerver, és csökkenti a felhasználónak letöltendő adatmennyiséget, ami fontos lehet a mérőórákon kapcsolatokat.

A RAM maga is olvasási gyorsítótárként működik a merevlemezen lévő adatok számára. Ebben az esetben a futó program adatait előre be kell tölteni a RAM-ba, hogy a CPU gyorsabban hozzáférhessen. A RAM-ból származó adatok ezután a CPU gyorsítótárába kerülnek, bár ennek folyamata sokkal összetettebb, mivel a CPU gyorsítótárát megabájtokban mérik, nem gigabájtokban.

Gyorsítótárak írása

Az írási gyorsítótár olyan gyorsítótár, amely képes elnyelni a lassabb eszközre írt adatokat. Gyakori példa erre a modern SSD-k SLC gyorsítótára. Ez a gyorsítótár nem teszi lehetővé az adatok gyorsabb olvasását, azonban sokkal gyorsabb az írás, mint az SSD többi részét alkotó TLC vagy QLC flashre. Az SLC gyorsítótár képes elnyelni a nagysebességű írási műveleteket, majd a lehető leghamarabb feltölti ezeket az adatokat a TLC flashre, amely sokkal jobb tárolási sűrűséget kínál, de sokkal lassabb az írása is. A flash memória ilyen módon történő használata optimalizálja a gyors írási sebességre és a nagy tárolási sűrűségre egyaránt.

Hibrid gyorsítótárak

A gyorsítótárak kezelésének számos módja van, amelyek lehetővé teszik, hogy olvasási és írási gyorsítótárként is működjenek. Ezen módszerek mindegyike eltérően kezeli az írási műveleteket, és vannak előnyei és hátrányai is. A három lehetőség a körülírás, az átírás és a visszaírás. A körülírható gyorsítótár írás közben teljesen kihagyja a gyorsítótárat, az átírási gyorsítótár a gyorsítótárba ír, de csak akkor tekinti befejezettnek a műveletet, amikor a tárolóba írták. A visszaírási gyorsítótár a gyorsítótárba ír, majd befejezettnek tekinti a műveletet, és szükség esetén a gyorsítótárra támaszkodva továbbítja azt a tárolóba.

A körülírás hasznos lehet, ha nagy mennyiségű írásra számít, mivel minimálisra csökkenti a gyorsítótár lemorzsolódását. Ez azonban azt jelenti, hogy egy művelet, amely ezután beolvassa az írott adatokat, az első alkalommal legalább egy gyorsítótár kihagyással szembesül. Az átírási gyorsítótárak azonnal gyorsítótárazza az írási műveleteket, ami azt jelenti, hogy az eredmény az első kéréskor kiszolgálható a gyorsítótárból. A befejezettnek tekintendő, az írási műveletnek az adatokat is lemezre kell írnia, ami növeli a késleltetést. A visszaírható gyorsítótárnak ugyanaz az előnye, mint az átírásnak, lehetővé téve az írott adatok azonnali kiszolgálását a gyorsítótárból. A lemezre íráshoz nincs szükség írási műveletekre, hogy teljesnek tekintsék. Ez csökkenti az írási késleltetést, de az adatvesztés kockázatával jár, ha a gyorsítótár ingatag, és nem fejezi be az adatok visszaírását a tárolóba az áramellátás elvesztése előtt.

Hogyan lehet adatokat eltávolítani a gyorsítótárból?

Bármely gyorsítótár egyik korlátozó tényezője a kapacitás. A nagy gyorsítótár keresése hosszú időt vesz igénybe, és ezzel a gyorsítótár használatának előnyei jó részét tagadja. A gyorsítótárazáshoz használt memóriatechnológiák általában drágábbak is, mint az a memória, amelyből gyorsítótárat tárolnak. Ha nem ez lenne a helyzet, akkor valószínűleg az adott memóriaszint memóriatechnológiát váltott volna a teljesítmény javítása érdekében. Mindkét tényező azt jelenti, hogy a gyorsítótárak általában viszonylag kicsik, különösen ahhoz a tárolóeszközhöz képest, amelyről a gyorsítótárat tárolják. A RAM kisebb kapacitással rendelkezik, mint a tárhely, a CPU gyorsítótár pedig kisebb, mint a RAM. Az SLC gyorsítótár kapacitása kisebb, mint a TLC memóriáé.

Mindez azt jelenti, hogy gyakran ki kell ciklikusan törölni az adatokat a gyorsítótárból, hogy helyet szabadítson fel új, gyorsítótárba helyezendő adatok számára. Ennek számos különféle megközelítése létezik. A „Leggyakrabban használt” a legkevesebb hozzáférési számmal rendelkező gyorsítótár-bejegyzéseket részesíti előnyben. Ez hasznos lehet annak előrejelzésében, hogy mely bejegyzések lesznek a legkisebb hatással a jövőbeni gyorsítótár-kihagyásokra, de a nemrég hozzáadott bejegyzéseket is kevés hozzáférésűnek számítaná, ami gyorsítótárhoz vezethet köpül.

A „Legutóbb használt” funkció előszeretettel üríti ki azokat a gyorsítótár-bejegyzéseket, amelyeket egy ideje nem használtak. Ez azt feltételezi, hogy jelenleg nincsenek használatban, de nem veszi figyelembe, hogy egy ideje erősen használták-e őket. A „legutóbb használt” inkább a legutóbb használt gyorsítótár-bejegyzéseket üríti ki, feltételezve, hogy azokat használták, és nem kell újra használni. A legjobb megközelítés általában mindhárom kombinációja, a használati statisztikák alapján.

Elavult információs és biztonsági kockázatok

A gyorsítótárak fő kockázata az, hogy a bennük lévő információk elavulttá válhatnak. A gyorsítótár-bejegyzés elavultnak minősül, ha az eredeti adatokat frissítették, így a gyorsítótár-bejegyzés elavult. Fontos, hogy rendszeresen ellenőrizze, hogy a kiszolgált élő példány továbbra is megegyezik-e a gyorsítótárazott példányával.

Kifejezetten a webhelyeken rendkívül fontos annak meghatározása is, hogy mely adatokat lehet gyorsítótárban tárolni és melyeket nem. Például teljesen rendben van egy nagy, változatlan JavaScript-fájl gyorsítótárazása. Ez megkíméli a felhasználót attól, hogy minden alkalommal letöltse, és még az ugyanazon gyorsítótár által kiszolgált többi felhasználó számára is előnyös lehet. A munkamenet-specifikus adatok azonban nem gyorsítótárazhatók. Képzelje el, mi történne, ha egy üzenetküldő alkalmazásba böngészne, miközben saját maga bejelentkezve van bejelentkezve, de azt tapasztalná, hogy egy másik felhasználó üzeneteinek gyorsítótárban tárolt változatát kapja meg. Szerencsére a webszerverek meg tudják határozni, hogy mely erőforrások tárolhatók és melyek nem, és ezek a problémák általában jól ismertek, így kevés az ehhez hasonló probléma.

Következtetés

A gyorsítótár a memória egy része, amely a közelmúltban használt adatokat képes tárolni egy olyan tárolási módszerben, amely gyorsabban elérhető, mint a normál adatelérési folyamat ismételt befejezése esetén. A gyorsítótár kapacitása általában korlátozott, ami azt jelenti, hogy amint megtelik, ki kell ürítenie a bejegyzéseket. A gyorsítótárak általában átláthatóak a felhasználó számára, ami azt jelenti, hogy a várakozási idő az egyetlen jele annak, hogy az eredményt a gyorsítótáron keresztül szolgáltatták ki.