Kuinka tyhjentää RAM-muistin välimuisti, puskuri ja vaihtaa Linuxissa


Kuten kaikki muutkin käyttöjärjestelmät, GNU/Linux on toteuttanut muistinhallinnan tehokkaasti ja jopa enemmän. Jos jokin prosessi kuitenkin syö muistiasi ja haluat tyhjentää sen, Linux tarjoaa tavan huuhdella tai tyhjentää RAM-välimuisti.

Tässä artikkelissa tutkimme, miten voit tyhjentää RAM-muistin välimuistin, puskurin ja swap-tilan Linux-järjestelmässä yleisen suorituskyvyn parantamiseksi.

RAM-muistin välimuistin, puskurin ja vaihtotilan ymmärtäminen

Tutkitaan RAM-muistin välimuistia, puskuria ja vaihtotilaa Linux-järjestelmässä.

RAM-muistin välimuisti

RAM-muistin välimuisti on mekanismi, jota ydin käyttää säilyttääkseen säännöllisesti käytettävät tiedot. Vaikka tämä lisää järjestelmän reagointikykyä, ylikuormitettu välimuisti voi johtaa vanhentuneiden tietojen säilyttämiseen, mikä vaikuttaa suorituskykyyn.

Puskuri

Kuten välimuisti, puskuri säilyttää tietoja tilapäisesti, mutta sen tarkoitus on erilainen. Puskurit tallentavat komponenttien, kuten CPU:n ja kiintolevyn, välillä siirrettävän tiedon, mikä helpottaa sujuvaa viestintää. Ylimääräinen puskuroitu data voi kuitenkin haitata järjestelmän nopeutta.

Vaihda tilaa

Swap-tila on kiintolevyllä varattu alue, joka toimii virtuaalimuistina, kun fyysinen RAM-muisti on lopussa. Vaikka se estää järjestelmän kaatumisen vähäisen muistin vuoksi, se voi hidastaa järjestelmää, jos sitä käytetään liikaa.

Välimuistin, puskurin ja vaihtotilan tyhjentäminen Linuxissa

Tietyissä tilanteissa saatat joutua tyhjentämään välimuistin, puskurin tai vaihtotilan alla kuvatulla tavalla.

Kuinka tyhjentää RAM-muistin välimuisti Linuxissa?

Jokaisella Linux-järjestelmällä on kolme vaihtoehtoa välimuistin tyhjentämiseksi keskeyttämättä prosesseja tai palveluita.

Sivuvälimuistin tyhjentäminen

1. Jos haluat tyhjentää vain PageCachen, voit käyttää seuraavaa komentoa, joka tyhjentää erityisesti PageCachen, mikä auttaa vapauttamaan muistiresursseja.

sudo sync; echo 1 > /proc/sys/vm/drop_caches

Hampaiden ja inodien poistaminen

2. Jos haluat tyhjentää vain dentries ja inodet, voit käyttää seuraavaa komentoa, joka synkronoi tiedostojärjestelmän ja tyhjentää sekä dentryt että inodet, järjestelmän suorituskyvyn parantaminen vapauttamalla välimuistissa olevat hakemisto- ja inodetiedot.

sudo sync; echo 2 > /proc/sys/vm/drop_caches

Tyhjennä PageCache, Dentries ja Inodes

3. Tyhjennä sivuvälimuisti, dentries ja inode käyttämällä seuraavaa komentoa, joka synkronoi tiedostojärjestelmä ja tyhjennä sivuvälimuisti, dentries ja inodit, mikä auttaa vapauttamaan muistia ja parantamaan järjestelmän suorituskykyä.

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

Tässä on selitys yllä olevan komennon jokaisesta osasta:

  • sudo-komentoa käytetään suorittamaan komento pääkäyttäjänä.
  • synkronointi tyhjentää tiedostojärjestelmäpuskurin.
  • "; ” puolipistettä käytetään useiden komentojen erottamiseen yhdellä rivillä.
  • echo 3 > /proc/sys/vm/drop_caches-komentoa käytetään pudottamaan sivun välimuisti, tilapäinen tallennusalue äskettäin avatuille tiedostoille.

Huomaa: drop_caches-tiedosto määrittää, minkä tyyppiset välimuistissa olevat tiedot tulee tyhjentää, ja arvot ovat seuraavat:

  • 1 – Tyhjentää vain sivun välimuistin.
  • 2 – Poistaa dentryt ja inodit.
  • 3 – Tyhjentää sivun välimuistin, dentryt ja inodit.

Kuten ytimen dokumentaatiossa mainittiin, kirjoittaminen tiedostoon drop_caches puhdistaa välimuistin tuhoamatta yhtään sovellusta/palvelua. Komento echo kirjoittaa tiedostoon.

Jos sinun on tyhjennettävä levyn välimuisti, ensimmäinen komento on turvallisin yritys- ja tuotantokäytössä muodossa “...echo 1 > …. ” tyhjentää vain PageCachen.

Ei ole suositeltavaa käyttää kolmatta vaihtoehtoa “...echo 3 > ” yläpuolella tuotannossa ennen kuin tiedät mitä olet tekemässä, sillä se tyhjentää sivuvälimuistin, >dentries ja inode.

Kuinka tyhjentää vaihtotila Linuxissa?

Voit tyhjentää sivutustilan käyttämällä swapoff-komentoa -a-vaihtoehdon kanssa, mikä poistaa kaikki swap-osiot käytöstä.

sudo swapoff -a

Käännä se sitten takaisin suorittamalla seuraava komento, joka aktivoi kaikki swap-osiot.

sudo swapon -a

Onko suositeltavaa vapauttaa puskuri, välimuisti ja vaihtaa Linuxissa?

Yleensä ei ole hyvä idea vapauttaa manuaalisesti puskuria ja välimuistia Linuxissa, joita Linux-ydin saattaa käyttää, ja se on suunniteltu hallitsemaan näitä resursseja tehokkaasti. ja niiden manuaalinen tyhjentäminen voi häiritä järjestelmän suorituskykyä.

Joissakin harvoissa tilanteissa sinun on kuitenkin tyhjennettävä puskuri ja välimuisti, esimerkiksi jos muistissa on kova paine etkä pysty vapauttamaan muistia muilla tavoilla. Näissä tapauksissa sinun tulee toimia varoen ja olla tietoinen mahdollisista tehokkuuden vaikutuksista.

Vastaavasti swap-tilan tyhjentäminen Linuxissa ei yleensä ole rutiini tai suositeltava käytäntö normaaleissa olosuhteissa.

Muistin optimoinnin automatisointi

Voit automatisoida prosessin ja tyhjentää muistin säännöllisesti asettamalla cron-työn suorittamaan komennot määritetyin väliajoin.

Avaa crontab-määritys.

crontab -e

Lisää seuraavat rivit tyhjentääksesi välimuistin, puskurin ja vaihtotilan päivittäin keskiyöllä:

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

Lisätietoja työn ajoittamisesta cronilla on artikkelissamme "11 Cron Scheduling Jobs".

Onko suositeltavaa tyhjentää RAM-välimuisti Linux-tuotantopalvelimessa?

Ei se ole. Harkitse tilannetta, jossa olet ajoittanut skriptin tyhjentämään RAM-välimuistin joka päivä klo 2.00. Komentosarja suoritetaan joka päivä klo 2 yöllä ja tyhjennetään RAM-välimuisti. Eräänä päivänä verkkosivustollasi on kuitenkin verkossa odottamattoman suuri määrä käyttäjiä, mikä asettaa palvelinresursseillesi huomattavan kysynnän.

Samanaikaisesti ajoitettu komentosarja suoritetaan ja tyhjentää kaiken välimuistissa. Nyt kaikki käyttäjät hakevat tietoja levyltä, mikä saattaa johtaa palvelimen kaatumiseen ja tietokannan vioittumiseen. Siksi on tärkeää tyhjentää RAM-välimuisti vain tarvittaessa, pitäen mielessä toimintasi. Muussa tapauksessa olet vaarassa ryhtyä Cargo Cult -järjestelmänvalvojaksi.

Johtopäätös

Tehokas muistinhallinta on ratkaisevan tärkeää sujuvan Linux-järjestelmän kannalta. RAM-muistin välimuistin, puskurin ja sivutustilan tyhjentäminen säännöllisesti voi parantaa järjestelmän suorituskykyä merkittävästi. Ymmärtämällä nämä mekanismit ja käyttämällä annettuja komentoja voit pitää Linux-järjestelmäsi käynnissä parhaimmillasi.

Tässä kaikki tältä erää. Jos pidit artikkelista, muista jakaa arvokas palaute kommenteissa. Kerro meille mielipiteesi siitä, mikä on mielestäsi hyvä tapa tyhjentää RAM-välimuisti ja puskuri tuotanto- ja yritysympäristöissä.