Articles

hogyan lehet törölni a gyorsítótárat Linuxon

a linux fájlrendszer gyorsítótárát (oldal gyorsítótár) használják az IO műveletek gyorsabbá tételére. Bizonyos körülmények között előfordulhat, hogy egy rendszergazda vagy Fejlesztő manuálisan törölni szeretné a gyorsítótárat. Ebben a cikkben elmagyarázzuk, hogyan működik a Linux fájlrendszer gyorsítótára. Ezután bemutatjuk, hogyan lehet nyomon követni a gyorsítótár használatát, valamint a gyorsítótár törlését. Néhány egyszerű teljesítménykísérletet fogunk végezni annak ellenőrzésére, hogy a gyorsítótár a várt módon működik-e, valamint hogy a gyorsítótár öblítése és törlése a várt módon is működik-e.

hogyan működik a Linux fájlrendszer gyorsítótára

a kernel bizonyos mennyiségű rendszermemóriát tart fenn a fájlrendszer lemezének 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 oldal gyorsítótárnak nevezik. Az oldal gyorsítótárának mérete konfigurálható Nagyvonalú alapértékekkel, amelyek lehetővé teszik a nagy mennyiségű lemezblokk gyorsítótárazását. A gyorsítótár maximális mérete, valamint a gyorsítótárból származó adatok kilakoltatásának házirendjei a kernel paramétereivel állíthatók be. A linux gyorsítótár-megközelítést visszaírási gyorsítótárnak nevezik. Ez azt jelenti, hogy ha az adatokat lemezre írjuk, akkor a gyorsítótárba a memóriába írjuk, majd a gyorsítótárban piszkosnak jelöljük, amíg szinkronizálódik a lemezzel. A kernel belső adatstruktúrákat tart fenn annak érdekében, hogy optimalizálja, mely adatokat kell kilakoltatni a gyorsítótárból, ha több helyre van szükség a gyorsítótárban.

a Linux rendszerhívások olvasása során a kernel ellenőrzi, hogy a kért adatok tárolódnak-e a gyorsítótárban lévő adatblokkokban, ez sikeres gyorsítótár-találat lenne, és az adatok a gyorsítótárból kerülnek vissza anélkül, hogy IO-t tennének a lemezrendszerbe. A gyorsítótár hiány esetén az adatok lekérésre kerülnek az IO rendszerből, a gyorsítótár pedig a gyorsítótár-házirendek alapján frissül, mivel ezeket az adatokat valószínűleg újra kérik.

amikor bizonyos küszöbértékeket a memória használat elérésekor háttérfeladatok elkezd írni piszkos adatokat a lemezre, hogy megbizonyosodjon arról, hogy törli a memória gyorsítótárát. Ezek hatással lehetnek a memória-és CPU-igényes alkalmazások teljesítményére, valamint a rendszergazdák és a fejlesztők hangolását igényelhetik.

az ingyenes parancs használatával megtekintheti a gyorsítótár használatát

a parancssorból származó szabad parancsot a rendszermemória és a gyorsítótárhoz rendelt memória mennyiségének elemzéséhez használhatjuk. Lásd az alábbi parancsot:

# free-m

amit a fenti ingyenes parancsból látunk, az, hogy 7,5 GB RAM van ezen a rendszeren. Ebből csak 209 MB-ot használnak, 6,5 MB pedig ingyenes. 667 MB-ot használnak a puffer gyorsítótárban. Most próbáljuk meg növelni ezt a számot egy parancs futtatásával, hogy létrehozzunk egy 1 gigabájtos fájlt, majd olvassuk el a fájlt. Az alábbi parancs körülbelül 100 MB véletlenszerű adatot generál, majd a fájl 10 példányát egy large_file fájlba csatolja.

# DD if=/dev/random of=/root/data_file count=1400000
# for I in `seq 1 1 10`; do echo $i; cat data_file >> large_file; done

most győződjön meg róla, hogy elolvassa ezt az 1 gigafájlt, majd ellenőrizze újra az ingyenes parancsot:

# cat large_file > /dev/null
# free-m

láthatjuk, hogy a puffer gyorsítótár használata 667-ről nőtt 1735 megabájtra a puffer gyorsítótár használatának nagyjából 1 gigabájtos növekedése.

Proc sys VM Drop cache parancs

a linux kernel felületet biztosít a gyorsítótár eldobásához próbáljuk ki ezeket a parancsokat, hogy lássuk a szabad beállításra gyakorolt hatást.

# echo 1 > /proc/sys/VM/drop_caches
# free-m

ezzel a paranccsal felszabadult a puffer-gyorsítótár-kiosztás.

kísérleti ellenőrzés arról, hogy a Drop gyorsítótárak működnek

meg tudjuk-e csinálni a gyorsítótár teljesítményének érvényesítését a fájl olvasásához? Olvassuk el a fájlt, majd írjuk vissza a /dev/null-ba annak tesztelése érdekében, hogy mennyi ideig tart a fájl lemezről történő olvasása. Az idő parancsával fogjuk időzíteni. Ezt a parancsot közvetlenül a gyorsítótár törlése után végezzük a fenti parancsokkal.

8,4 másodpercbe telt a fájl olvasása. Olvassuk el újra most, hogy a fájlnak a fájlrendszer gyorsítótárában kell lennie, majd nézzük meg, mennyi ideig tart most.

Boom! Csak kellett .2 másodperc képest 8,4 másodperc olvasni, ha a fájl nem volt gyorsítótárban. Ennek ellenőrzéséhez ismételjük meg újra, először töröljük a gyorsítótárat, majd 2-szer olvassuk el a fájlt.

tökéletesen működött a várt módon. 8.5 másodperc a nem tárolt olvasáshoz .2 másodperc a gyorsítótárazott olvasáshoz.

következtetés

az oldal gyorsítótára automatikusan engedélyezve van Linux rendszereken, és átláthatóan gyorsabbá teszi az IO-t a legutóbb használt adatok gyorsítótárban történő tárolásával. Ha manuálisan szeretné törölni a gyorsítótárat, amelyet könnyen meg lehet tenni, ha echo parancsot küld a / proc fájlrendszerbe, jelezve a kernelnek, hogy dobja el a gyorsítótárat, és szabadítsa fel a gyorsítótárhoz használt memóriát. A parancs futtatására vonatkozó utasításokat ebben a cikkben mutatjuk be, valamint az öblítés előtti és utáni gyorsítótár-viselkedés kísérleti validálását is bemutattuk.