Hogyan működik a Linux fájlrendszer gyorsítótár
A rendszermag bizonyos mennyiségű rendszermemóriát fenntart a fájlrendszer lemezeléréseinek gyorsítótárazásához annak érdekében, hogy az általános teljesítmény gyorsabb legyen. A linux gyorsítótárát a Oldal gyorsítótár. Az oldal gyorsítótárának mérete konfigurálható nagyvonalú alapértelmezésekkel, amelyek lehetővé teszik nagy mennyiségű lemezblokk gyorsítótárba helyezését. A gyorsítótár maximális mérete és a házirend, hogy mikor kell adatokat kiüríteni a gyorsítótárból, a kernel paramétereivel állíthatók be. A linux cache megközelítést visszahívó cache-nek nevezzük. Ez azt jelenti, hogy ha az adatokat lemezre írják, akkor a memóriába írják a gyorsítótárba, és piszkosként jelölik a gyorsítótárban, amíg szinkronizálva vannak a lemezzel. A kern belső adatstruktúrákat tart fenn annak optimalizálása érdekében, hogy mely adatokat kell kiüríteni a gyorsítótárból, ha több helyre van szükség a gyorsítótárban.
A Linux olvasási rendszerhívások során a kern ellenőrzi, hogy a kért adatok a cache adattömbjeiben vannak-e tárolva, ez sikeres gyorsítótár-találat lenne, és az adatok a cache-ből kerülnek vissza, anélkül, hogy bármilyen IO-t végrehajtanának a lemezrendszerben. Gyorsítótár-kihagyás esetén az adatok lekérésre kerülnek az IO rendszerből, és a gyorsítótár frissítésre kerül a gyorsítótár-házirendek alapján, mivel valószínűleg ugyanazokat az adatokat kéri újra.
A memóriahasználat bizonyos küszöbértékeinek elérésekor a háttérfeladatok elkezdenek piszkos adatokat írni a lemezre annak biztosítása érdekében, hogy törli a memória gyorsítótárát. Ezek hatással lehetnek a memória és a processzorigényes alkalmazások teljesítményére, és megkövetelik a rendszergazdák és / vagy a fejlesztők általi hangolást.
Az Ingyenes parancs használata a gyorsítótár használatának megtekintéséhez
A parancssor szabad parancsát felhasználhatjuk a rendszermemória és a gyorsítótárhoz rendelt memória mennyiségének elemzésére. Lásd az alábbi parancsot:
# szabad -m
Amit látunk a ingyenes A fenti parancs szerint 7 van.5 GB RAM ezen a rendszeren. Ebből csak 209 MB használatos és 6.5 MB szabad. 667 MB a puffer gyorsítótárban. Most próbáljuk meg növelni ezt a számot egy parancs futtatásával 1 gigabájtos fájl előállításához és a fájl beolvasásával. Az alábbi parancs hozzávetőlegesen 100 MB véletlenszerű adatot generál, majd a fájl 10 példányát egybe fűzi nagy_fájl.
# dd, ha = / dev / véletlenszerű = / root / data_file count = 1400000# i-re az '10-es szekvenciában'; do echo $ i; macska adatfájl >> nagy_fájl; Kész
Most feltétlenül olvassa el ezt az 1 Gig fájlt, majd ellenőrizze újra az ingyenes parancsot:
# macska nagy_fájl> / dev / null# szabad -m
Láthatjuk, hogy a puffer gyorsítótár használata 667-ről 1735 megabájtra nőtt, ami nagyjából 1 gigabájtos növekedést jelent a puffer gyorsítótár használatában.
Proc Sys VM Drop Cache parancs
A linux kern kezelőfelületet biztosít a gyorsítótár eldobására. Próbáljuk ki ezeket a parancsokat, és nézzük meg, milyen hatással vannak a szabad beállításra.
# echo 1> / proc / sys / vm / drop_cache# szabad -m
Fentebb láthatjuk, hogy a puffer gyorsítótár kiosztásának nagy részét ezzel a paranccsal szabadították fel.
Kísérleti ellenőrzés a drop cache működéséről
Végezhetünk-e teljesítményellenőrzést a gyorsítótár használatával a fájl olvasásához? Olvassuk el a fájlt, és írjuk vissza a / dev / null mappába, hogy teszteljük, mennyi időbe telik a fájl olvasása lemezről. Idõzítjük a idő parancs. A gyorsítótár törlését követően a fenti parancsokkal azonnal elvégezzük ezt a parancsot.
8 kellett hozzá.4 másodpercig elolvassa a fájlt. Most olvassuk el újra, hogy a fájlnak a fájlrendszer gyorsítótárában kell lennie, és nézzük meg, mennyi időbe telik most.
Bumm! Csak az kellett .2 másodperc a 8-hoz képest.4 másodpercig olvassa el, amikor a fájlt nem tárolták gyorsítótárba. Ennek ellenőrzéséhez ismételjük meg újra úgy, hogy először töröljük a gyorsítótárat, majd elolvassuk a fájlt kétszer.
A várakozásoknak megfelelően tökéletesen működött. 8.5 másodperc a nem gyorsítótárazott olvasáshoz és .2 másodperc a gyorsítótárazott olvasáshoz.
Következtetés
Az oldalgyorsítótár automatikusan engedélyezve van a Linux rendszereken, és átláthatóan gyorsítja az IO-t azáltal, hogy a közelmúltban használt adatokat tárolja a gyorsítótárban. Ha manuálisan szeretné törölni a gyorsítótárat, könnyen elvégezhető, ha echo parancsot küld a / proc fájlrendszernek, jelezve a kernelnek, hogy dobja el a gyorsítótárat és felszabadítsa a gyorsítótárhoz használt memóriát. A parancs futtatására vonatkozó utasításokat fentebb bemutattuk ebben a cikkben, és bemutattuk a gyorsítótár viselkedésének kísérleti ellenőrzését is az öblítés előtt és után.