Kuinka Linux-tiedostojärjestelmän välimuisti toimii
Ydin varaa tietyn määrän järjestelmämuistia tiedostojärjestelmän levyjen välimuistiin tallentamiseksi yleisen suorituskyvyn nopeuttamiseksi. Linux-välimuistia kutsutaan Sivun välimuisti. Sivun välimuistin koko on määritettävissä suurien oletusasetusten avulla, jotka mahdollistavat välimuistin suurille määrille levylohkoja. Välimuistin enimmäiskoko ja käytännöt siitä, milloin tiedot poistetaan välimuistista, ovat säädettävissä ytimen parametreilla. Linux-välimuistin lähestymistapaa kutsutaan takaisin kirjoitusvälimuistiksi. Tämä tarkoittaa, että jos tiedot kirjoitetaan levylle, ne kirjoitetaan muistiin välimuistiin ja merkitään välimuistiin likaisiksi, kunnes ne synkronoidaan levylle. Ydin ylläpitää sisäisiä tietorakenteita optimoidakseen välimuistista poistettavat tiedot, kun välimuistissa tarvitaan enemmän tilaa.
Linuxin luettujen jä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ä samoja tietoja todennäköisesti pyydetään uudelleen.
Kun tietyt muistin käyttörajat saavutetaan, taustatehtävät alkavat kirjoittaa likaisia tietoja levylle varmistaakseen, että se tyhjentää muistivälimuistin. Näillä voi olla vaikutusta muistin ja suorittimia vaativien sovellusten suorituskykyyn, ja järjestelmänvalvojat ja / tai kehittäjät tarvitsevat virityksen.
Ilmaisen komennon avulla voit tarkastella välimuistin käyttöä
Voimme käyttää komentoriviltä ilmaista komentoa analysoida järjestelmän muistia ja välimuistiin varattua muistia. Katso komento alla:
# vapaa -m
Mitä näemme vapaa Yllä oleva komento on, että on 7.5 Gt RAM-muistia tässä järjestelmässä. Tästä vain 209 Mt käytetään ja 6.5 Mt on ilmainen. Puskurin välimuistissa käytetään 667 Mt. Yritetään nyt lisätä tätä lukua suorittamalla komento 1 gigatavun tiedoston luomiseksi ja lukemalla tiedosto. Alla oleva komento tuottaa noin 100 Mt satunnaisia tietoja ja lisää sitten 10 kopiota tiedostosta yhteen iso_tiedosto.
# dd jos = / dev / satunnainen = / root / data_file count = 1400000# for i sarjassa 1 10; tee kaiku $ i; kissa data_tiedosto >> iso_tiedosto; tehty
Lue nyt tämä 1 keikkatiedosto ja tarkista sitten ilmainen komento uudelleen:
# kissa iso_tiedosto> / dev / null# vapaa -m
Voimme nähdä, että puskurivälimuistin käyttö on noussut 667: sta 1735 megatavuun, mikä on noin 1 gigatavun lisäys puskurivälimuistin käytössä.
Proc Sys VM Drop Cache -komento
Linux-ydin tarjoaa käyttöliittymän välimuistin pudottamiseksi, kokeillaan näitä komentoja ja katsotaan vaikutus vapaaseen asetukseen.
# echo 1> / proc / sys / vm / drop_cache# vapaa -m
Yllä voimme nähdä, että suurin osa puskurivälimuistin varaamisesta vapautettiin tällä komennolla.
Kokeellinen vahvistus siitä, että pudotusvälimuistit toimivat
Voimmeko suorittaa suorituskyvyn tarkistuksen käyttämällä välimuistia tiedoston lukemiseen? Luetaan tiedosto ja kirjoitetaan se takaisin hakemistoon / dev / null testatakseen kuinka kauan tiedoston lukeminen levyltä kestää. Aikamme sen aika komento. Suoritamme tämän komennon heti tyhjennettyämme välimuistin yllä olevilla komennoilla.
Kesti 8.4 sekuntia tiedoston lukemiseen. Luetaan se nyt uudelleen, kun tiedoston pitäisi olla tiedostojärjestelmän välimuistissa, ja katsotaan kuinka kauan se kestää nyt.
Puomi! Se kesti vain .2 sekuntia verrattuna 8.4 sekuntia sen lukemiseen, kun tiedostoa ei tallennettu välimuistiin. Vahvistetaan toistetaan tämä uudelleen tyhjentämällä ensin välimuisti ja lukemalla tiedosto sitten 2 kertaa.
Se toimi täydellisesti odotusten mukaisesti. 8.5 sekuntia välimuistissa olevalle lukemiselle ja .2 sekuntia välimuistissa olevaan lukemiseen.
Johtopäätös
Sivun välimuisti otetaan automaattisesti käyttöön Linux-järjestelmissä, ja se nopeuttaa läpinäkyvästi IO: ta tallentamalla äskettäin käytetyt tiedot välimuistiin. Jos haluat tyhjentää välimuistin manuaalisesti, mikä voidaan tehdä helposti lähettämällä kaiukomento / proc-tiedostojärjestelmään osoittamalla ytimelle välimuistin pudottamiseksi ja välimuistiin käytetyn muistin vapauttamiseksi. Komennon suorittamisen ohjeet näkyivät tässä artikkelissa yllä ja myös välimuistikäytön kokeellinen vahvistus ennen huuhtelua ja sen jälkeen.