Articles

kuinka tyhjentää välimuisti Linuxissa

linux file system cache (Page Cache) käytetään tekemään IO-operaatioista nopeampia. Tietyissä olosuhteissa ylläpitäjä tai kehittäjä saattaa haluta tyhjentää välimuistin manuaalisesti. Tässä artikkelissa kerromme, miten Linux tiedostojärjestelmän välimuisti toimii. Sitten osoitamme, miten seurata välimuistin käyttöä ja miten tyhjentää välimuisti. Teemme joitakin yksinkertaisia suorituskykyä kokeita tarkistaa välimuisti toimii odotetusti ja että välimuisti huuhtelu ja selkeä menettely toimii myös odotetusti.

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

ydin varaa tietyn määrän järjestelmämuistia tiedostojärjestelmän levyn käyttöoikeuksien välimuistiin, jotta yleinen suorituskyky olisi nopeampi. Linuxissa välimuistia kutsutaan sivun välimuistiksi. Sivun välimuistin koko on konfiguroitavissa runsailla oletuksilla, jotka mahdollistavat suurten levylohkojen välimuistin. Välimuistin maksimikoko ja käytännöt siitä, milloin tiedot häädetään välimuistista, ovat säädettävissä ytimen parametreilla. Linux cache lähestymistapaa kutsutaan write-back cache. Tämä tarkoittaa sitä, että jos tieto kirjoitetaan levylle, se kirjoitetaan muistiin välimuistiin ja merkitään likaiseksi välimuistiin, kunnes se synkronoidaan levylle. Ydin ylläpitää sisäisiä tietorakenteita optimoidakseen, mitkä tiedot häädetään välimuistista, kun välimuistiin tarvitaan enemmän tilaa.

Linuxin lukujärjestelmäkutsujen aikana ydin tarkistaa, tallentuuko pyydetty tieto välimuistiin datalohkoihin, jolloin välimuisti onnistuisi ja tiedot palautetaan välimuistista tekemättä IO: ta levyjärjestelmään. Välimuistin puutteessa tiedot noudetaan IO-järjestelmästä ja välimuisti päivitetään välimuistikäytäntöjen perusteella, koska samaa tietoa todennäköisesti pyydetään uudelleen.

kun tietyt muistinkäytön kynnykset on saavutettu, taustatehtävät alkavat kirjoittaa levylle likaista tietoa varmistaakseen, että se tyhjentää muistivälimuistin. Nämä voivat vaikuttaa muisti-ja SUORITININTENSIIVISTEN sovellusten suorituskykyyn ja vaativat ylläpitäjiltä ja kehittäjiltä viritystä.

käyttämällä ilmaista komentoa välimuistin käytön tarkasteluun

Voimme käyttää komentoriviltä tulevaa vapaata komentoa analysoidaksemme järjestelmän muistia ja välimuistiin varatun muistin määrää. Katso komento alta:

# free-m

mitä näemme yllä olevasta vapaasta komennosta on, että tässä järjestelmässä on 7,5 Gt RAM-muistia. Tästä vain 209 MB on käytössä ja 6.5 MB on ilmainen. Puskurivälimuistissa käytetään 667 MB: tä. Nyt yritetään lisätä tätä määrää suorittamalla komento, jolla luodaan 1 gigatavun tiedosto ja luetaan tiedosto. Alla oleva komento luo noin 100MB satunnaista dataa ja liittää sitten 10 kopiota tiedostosta yhteen large_file-tiedostoon.

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

:

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

voimme nähdä, että puskurin välimuistin käyttö on noussut 667-1735 megatavua noin 1 gigatavun lisäys puskurivälimuistin käytössä.

Proc Sys VM Drop välimuistit-komento

linux-ydin tarjoaa käyttöliittymän välimuistin pudottamiseen kokeillaan näitä komentoja ja katsotaan vaikutus vapaa-asetukseen.

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

puskurin välimuistin jakaminen vapautui tällä komennolla.

kokeellinen varmennus siitä, että Pudotuskätköt toimivat

Voimmeko tehdä suorituskyvyn vahvistuksen käyttämällä välimuistia tiedoston lukemiseen? Luetaan tiedosto ja kirjoitetaan se takaisin /dev/null-tiedostoon, jotta voidaan testata, kuinka kauan tiedoston lukeminen levyltä kestää. Ajoitamme sen aikakomennolla. Teemme tämän komennon heti välimuistin tyhjentämisen jälkeen yllä olevilla komennoilla.

tiedoston lukemiseen kului 8,4 sekuntia. Luetaan se uudelleen nyt, että tiedoston pitäisi olla tiedostojärjestelmän välimuisti ja nähdä, kuinka kauan se kestää nyt.

Boom! Se kesti vain .2 sekuntia verrattuna 8,4 sekuntiin sen lukemiseen, kun tiedostoa ei ole välimuistissa. Tarkistaaksesi toistamme tämän uudelleen tyhjentämällä ensin välimuistin ja lukemalla sitten tiedoston 2 kertaa.

se toimi täydellisesti odotetusti. 8.5 sekuntia ei-välimuistissa lukea ja .2 sekuntia välimuistin lukemalle.

johtopäätös

sivun välimuisti on automaattisesti käytössä Linux-järjestelmissä ja se nopeuttaa IO: ta läpinäkyvästi tallentamalla äskettäin käytettyjä tietoja välimuistiin. Jos haluat tyhjentää välimuistin manuaalisesti, se voidaan tehdä helposti lähettämällä echo-komento / proc-tiedostojärjestelmään, joka osoittaa ytimeen välimuistin pudottamiseksi ja välimuistissa käytetyn muistin vapauttamiseksi. Komennon suoritusohjeet on esitetty yllä tässä artikkelissa ja välimuistin käyttäytymisen kokeellinen validointi ennen huuhtelua ja sen jälkeen on myös esitetty.