Kuidas tühjendada vahemälu Linuxis

How Clear Cache Linux

IO toimingute kiirendamiseks kasutatakse Linuxi failisüsteemi vahemälu (Page Cache). Teatud tingimustel võib administraator või arendaja soovida vahemälu käsitsi tühjendada. Selles artiklis selgitame, kuidas Linuxi failisüsteemi vahemälu töötab. Seejärel demonstreerime, kuidas vahemälu kasutamist jälgida ja kuidas vahemälu tühjendada. Teeme mõned lihtsad jõudluskatsed, et kontrollida, kas vahemälu töötab ootuspäraselt ning kas vahemälu loputamine ja selge protseduur töötab samuti ootuspäraselt.

Kuidas Linuxi failisüsteemi vahemälu töötab

Kernel jätab teatud süsteemi mälu failisüsteemi kettajuurdepääsude vahemällu salvestamiseks, et kiirendada üldist jõudlust. Linuxi vahemälu nimetatakse Vahemälu leht . Lehe vahemälu suurust saab konfigureerida heldete vaikeväärtustega, mis on lubatud suure koguse kettaplokkide vahemällu salvestamiseks. Vahemälu maksimaalne suurus ja reeglid, millal andmed vahemälust välja tõsta, on reguleeritavad kerneli parameetritega. Linuxi vahemälu lähenemist nimetatakse tagasi kirjutamise vahemäluks. See tähendab, et kui andmed kirjutatakse kettale, kirjutatakse need vahemällu mällu ja märgitakse vahemällu määrdunuks, kuni need kettaga sünkroonitakse. Kernel säilitab sisemisi andmestruktuure, et optimeerida, millised andmed vahemälust välja tõsta, kui vahemälus on vaja rohkem ruumi.



Linuxi lugemissüsteemi kõnede ajal kontrollib kernel, kas nõutud andmed on vahemälusse salvestatud andmeplokkides, kas see oleks edukas vahemälu tabamus ja andmed tagastatakse vahemälust ilma kettale IO -d tegemata. Vahemälu vahelejätmise korral tuuakse andmed IO -süsteemist ja vahemälu värskendatakse vahemällu salvestamise reeglite alusel, kuna tõenäoliselt küsitakse samu andmeid uuesti.



Kui teatud mälukasutuse künnised on saavutatud, hakkavad taustaülesanded kettale määrdunud andmeid kirjutama, et tagada mälu vahemälu tühjendamine. Need võivad mõjutada mälu- ja protsessorimahukate rakenduste jõudlust ning vajavad administraatorite ja / või arendajate häälestamist.



Käsu Tasuta kasutamine vahemälu kasutamise vaatamiseks

Süsteemimälu ja vahemällu eraldatud mälumahu analüüsimiseks saame kasutada käsurealt saadavat tasuta käsku. Vaadake allolevat käsku:

#tasuta -m

Mida me näeme tasuta ülaltoodud käsk on, et selles süsteemis on 7,5 GB muutmälu. Sellest kasutatakse ainult 209 MB ja tasuta 6,5 ​​MB. Puhvri vahemälus kasutatakse 667 MB. Proovime nüüd seda arvu suurendada, käivitades käsu 1 -gigabaidise faili loomiseks ja faili lugemiseks. Allolev käsk genereerib umbes 100 MB juhuslikke andmeid ja lisab seejärel 10 faili koopiat üheks suur_fail .



# dd if =/dev/random of =/root/data_file count = 1400000
# i jaoks järjestuses 1 10; tee kaja $ i; kassi andmefail >> suur_fail; tehtud

Nüüd loeme kindlasti selle 1 Gigi faili ja kontrollime uuesti tasuta käsku:

# kass suur_fail> /dev /null
# tasuta -m

Näeme, et puhvri vahemälu kasutamine on tõusnud 667 -lt 1735 megabaidile, mis on umbes 1 gigabaidine puhvri vahemälu kasutus.

Proc Sys VM Drop Caches käsk

Linuxi tuum pakub liidese vahemälu tühjendamiseks, proovime neid käske ja näeme mõju vabale sättele.

# echo 1>/proc/sys/vm/drop_caches
# tasuta -m

Eespool näeme, et selle käsuga vabastati suurem osa puhvri vahemälu eraldamisest.

Eksperimentaalne kontroll, kas vahemälud töötavad

Kas saame faili jõudluse kontrollimiseks kasutada vahemälu? Loeme faili ja kirjutame selle tagasi kausta /dev /null, et testida, kui kaua kulub faili kettalt lugemiseks. Me ajastame selle koos aega käsk. Teeme selle käsu kohe pärast vahemälu tühjendamist ülaltoodud käskudega.

Faili lugemiseks kulus 8,4 sekundit. Loeme seda nüüd uuesti, kui fail peaks olema failisüsteemi vahemälus, ja vaatame, kui kaua see praegu võtab.

Buum! Kui faili ei salvestatud vahemällu, kulus selle lugemiseks vaid 0,2 sekundit, võrreldes 8,4 sekundiga. Kontrollimiseks korrake seda uuesti, tühjendades kõigepealt vahemälu ja lugedes seejärel faili kaks korda.

See töötas ootuspäraselt suurepäraselt. 8,5 sekundit vahemällu salvestamata lugemisel ja 0,2 sekundit vahemällu salvestatud lugemisel.

Järeldus

Lehe vahemälu lubatakse Linuxi süsteemides automaatselt ja see muudab läbipaistvalt IO kiiremaks, salvestades vahemällu hiljuti kasutatud andmed. Kui soovite vahemälu käsitsi tühjendada, saate seda teha hõlpsalt, saates /pro failisüsteemile kajakäsk, mis näitab kernelile, et vahemälu tühistatakse ja vahemälu jaoks kasutatav mälu vabastatakse. Käsu käivitamise juhiseid näidati ülalpool käesolevas artiklis ning näidati ka vahemälu käitumise eksperimentaalset valideerimist enne ja pärast loputamist.