Kuinka tyhjentää välimuisti Linuxissa

How Clear Cache Linux

Linux -tiedostojärjestelmän välimuistia (Page Cache) käytetään nopeuttamaan IO -toimintoja. Tietyissä olosuhteissa järjestelmänvalvoja tai kehittäjä saattaa haluta tyhjentää välimuistin manuaalisesti. Tässä artikkelissa selitämme, kuinka Linux -tiedostojärjestelmän välimuisti toimii. Sitten esittelemme kuinka välimuistin käyttöä seurataan ja miten välimuisti tyhjennetään. Teemme joitain yksinkertaisia ​​suorituskykykokeita varmistaaksemme, että välimuisti toimii odotetusti ja että välimuistin huuhtelu ja tyhjennys toimivat myös odotetusti.

Kuinka Linux -tiedostojärjestelmän välimuisti toimii

Ydin varaa tietyn määrän järjestelmämuistia tiedostojärjestelmän levykäyttöjen välimuistiin tallentamiseksi yleisen suorituskyvyn nopeuttamiseksi. Linuxin välimuistia kutsutaan nimellä Välimuistisivu . Sivun välimuistin koko voidaan määrittää anteliailla oletusasetuksilla, jotka mahdollistavat suurten levylohkojen välimuistin. Välimuistin enimmäiskoko ja käytännöt siitä, milloin tiedot poistetaan välimuistista, ovat säädettävissä ytimen parametrien avulla. Linux-välimuistimenetelmää kutsutaan takaisinkirjoitusvälimuistiksi. Tämä tarkoittaa, että jos tiedot kirjoitetaan levylle, ne kirjoitetaan muistiin välimuistiin ja merkitään likaisiksi välimuistiin, kunnes ne synkronoidaan levylle. Ydin ylläpitää sisäisiä tietorakenteita optimoidakseen, mitkä tiedot poistetaan välimuistista, kun välimuistiin tarvitaan enemmän tilaa.



Linux -lukujärjestelmäkutsujen aikana ydin tarkistaa, onko pyydetyt tiedot tallennettu välimuistin tietolohkoihin, mikä olisi onnistunut välimuistin osuma ja tiedot palautetaan välimuistista tekemättä mitään IO: ta levyjärjestelmälle. Välimuistin puuttuessa tiedot haetaan IO -järjestelmästä ja välimuisti päivitetään välimuistikäytäntöjen perusteella, koska näitä tietoja pyydetään todennäköisesti uudelleen.



Kun tietyt muistin käyttörajat saavutetaan, taustatehtävät alkavat kirjoittaa likaista dataa levylle varmistaakseen, että se tyhjentää muistin välimuistin. Näillä voi olla vaikutusta muistia ja CPU: ta kuluttavien sovellusten suorituskykyyn, ja ne edellyttävät järjestelmänvalvojien ja / tai kehittäjien viritystä.



Free -komennon avulla voit tarkastella välimuistin käyttöä

Voimme käyttää komentorivin ilmaista komentoa analysoidaksesi järjestelmän muistia ja välimuistiin varatun muistin määrän. Katso alla oleva komento:

#vapaa -m

Mitä näemme vapaa yllä oleva komento on, että tässä järjestelmässä on 7,5 Gt RAM -muistia. Tästä vain 209 Mt on käytössä ja 6,5 ​​Mt on ilmaista. Puskurivälimuistissa käytetään 667 Mt. Yritetään nyt lisätä tätä määrää suorittamalla komento 1 Gt: n tiedoston luomiseksi ja lukemalla tiedosto. Alla oleva komento luo noin 100 Mt satunnaista tietoa ja liittää sitten 10 kopiota tiedostosta yhteen iso_tiedosto .



# dd if =/dev/random of =/root/data_file count = 1400000
# i: lle 'perässä 1 10'; toista $ i; kissa data_file >> large_file; tehty

Nyt luemme tämän 1 Gig -tiedoston ja tarkista sitten ilmainen komento uudelleen:

# kissa iso_tiedosto> /dev /null
# ilmainen -m

Puskurivälimuistin käyttö on noussut 667: stä 1735 megatavuun, mikä on noin 1 gigatavua enemmän puskurivälimuistin käytössä.

Proc Sys VM Drop Caches -komento

Linux -ydin tarjoaa käyttöliittymän välimuistin pudottamiseen. Kokeilemme näitä komentoja ja näemme vaikutuksen ilmaiseen asetukseen.

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

Näemme yllä, että suurin osa puskurivälimuistin varauksista vapautettiin tällä komennolla.

Kokeellinen vahvistus siitä, että pudotusvälimuistit toimivat

Voimmeko suorittaa suorituskyvyn validoinnin käyttämällä välimuistia tiedoston lukemiseen? Luetaan tiedosto ja kirjoitetaan se takaisin kohteeseen /dev /null, jotta voidaan testata, kuinka kauan kestää tiedoston lukeminen levyltä. Ajastamme sen aika komento. Teemme tämän komennon heti tyhjentämisen jälkeen yllä olevilla komennoilla.

Tiedoston lukeminen kesti 8,4 sekuntia. Luetaan se nyt uudelleen, kun tiedoston pitäisi olla tiedostojärjestelmän välimuistissa, ja katsotaan, kuinka kauan se kestää nyt.

Puomi! Sen lukeminen kesti vain 0,2 sekuntia verrattuna 8,4 sekuntiin, kun tiedostoa ei tallennettu välimuistiin. Vahvistaaksemme toistamme tämän uudelleen tyhjentämällä ensin välimuistin ja lukemalla sitten tiedoston kaksi kertaa.

Se toimi täydellisesti odotetusti. 8,5 sekuntia välimuistiin lukematta ja 0,2 sekuntia välimuistiin tallennetusta lukemasta.

Johtopäätös

Sivun välimuisti otetaan automaattisesti käyttöön Linux -järjestelmissä, ja se nopeuttaa läpinäkyvyyttä nopeammin tallentamalla äskettäin käytetyt tiedot välimuistiin. Jos haluat tyhjentää välimuistin manuaalisesti, voit tehdä sen helposti lähettämällä kaikukomennon /proc -tiedostojärjestelmään ja osoittamalla ytimelle välimuistin poistamisen ja välimuistiin käytetyn muistin vapauttamisen. Ohjeet komennon suorittamiseen on esitetty edellä tässä artikkelissa ja myös välimuistin käyttämisen kokeellinen validointi ennen ja jälkeen huuhtelun.