Teljesítmény

A gyorsítótár törlése Linuxon

A gyorsítótár törlése Linuxon
A linux fájlrendszer gyorsítótárát (Page Cache) használják az IO műveletek gyorsabbá tételére.  Bizonyos körülmények között egy rendszergazda vagy fejlesztő szeretné törölni a gyorsítótárat manuálisan.  Ebben a cikkben elmagyarázzuk a Linux fájlrendszer gyorsítótárának működését.  Ezután bemutatjuk a gyorsítótár használatának figyelemmel kísérését és a gyorsítótár törlését.  Néhány egyszerű teljesítménykísérletet fogunk végrehajtani annak ellenőrzésére, hogy a gyorsítótár a várakozásoknak megfelelően működik-e, és hogy a gyorsítótár kiürítési és törlési eljárása is a várt módon működik-e.

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.

HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...