Kako počistiti predpomnilnik RAM-a, medpomnilnik in zamenjati prostor v Linuxu


Kot vsak drug operacijski sistem je tudi GNU/Linux učinkovito upravljal s pomnilnikom in še več kot to. Če pa vam katerikoli proces požre pomnilnik in ga želite počistiti, Linux ponuja način za izpiranje ali čiščenje RAM-a.

Vsak sistem Linux ima tri možnosti za čiščenje predpomnilnika, ne da bi pri tem motil postopke ali storitve.

1. Počisti samo PageCache.

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

2. Počistite zobozdravnike in inode.

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

3. Počistite predpomnilnik strani, zobne datoteke in inode.

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

Pojasnilo zgornjega ukaza.

sync bo odstranil medpomnilnik datotečnega sistema. Ukaz, ločen z \";" , se izvaja zaporedno. Lupina počaka, da se vsak ukaz konča, preden izvede naslednji ukaz v zaporedju. Kot je omenjeno v dokumentaciji jedra, bo zapisovanje v drop_cache očistilo predpomnilnik, ne da bi ubil katero koli aplikacijo/service, ukazni odmev piše v datoteko.

Če morate počistiti predpomnilnik diska, je prvi ukaz najvarnejši v podjetju in proizvodnji, saj bo \"... echo 1> ...." počistil samo PageCache. Ni priporočljivo uporabljati tretjega možnost nad \"... echo 3>" v produkciji, dokler ne veste, kaj počnete, saj bo počistila PageCache, zobozdravnike in inode.

Ko uporabljate različne nastavitve in želite preveriti, ali se ta dejansko izvaja posebej na I/O-obsežni meri, potem boste morda morali počistiti predpomnilnik medpomnilnika. Predpomnilnik lahko spustite, kot je razloženo zgoraj, ne da bi znova zagnali sistem, tj. Ni potreben izpad.

Linux je zasnovan tako, da pred ogledom diska preuči predpomnilnik diska. Če vir najde v predpomnilniku, zahteva ne pride na disk. Če očistimo predpomnilnik, bo predpomnilnik diska manj uporaben, saj bo OS iskal vir na disku.

Poleg tega bo sistem za nekaj sekund upočasnil, medtem ko se predpomnilnik očisti in vsi viri, ki jih zahteva OS, ponovno naložijo v predpomnilnik diska.

Zdaj bomo ustvarili skript lupine za samodejno čiščenje predpomnilnika RAM-a vsak dan ob 2. uri zjutraj prek naloge načrtovalnika cron. Ustvarite skript lupine clearcache.sh in dodajte naslednje vrstice.

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

Nastavite dovoljenje za izvajanje v datoteki clearcache.sh.

# chmod 755 clearcache.sh

Zdaj lahko skript pokličete, kadar koli želite počistiti predpomnilnik RAM-a.

Zdaj nastavite cron za čiščenje predpomnilnika RAM vsak dan ob 2. uri zjutraj. Odprite crontab za urejanje.

# crontab -e

Dodajte spodnjo vrstico, shranite in zapustite, da jo zaženete vsak dan ob 2. uri zjutraj.

0  2  *  *  *  /path/to/clearcache.sh

Za več podrobnosti o tem, kako določiti opravilo, si oglejte naš članek o 11 opravilih za razporejanje kronov.

Ne! ni. Pomislite na situacijo, ko ste načrtovali skript za čiščenje predpomnilnika RAM-a vsak dan ob 2. uri zjutraj. Vsak dan ob 2. uri se skript zažene in izbriše predpomnilnik RAM-a. Nekega dne iz kakršnega koli razloga je morda več, kot je bilo pričakovano, da so uporabniki na vašem spletnem mestu v spletu in iščejo vir na vašem strežniku.

Hkrati se načrtovani skript zažene in počisti vse v predpomnilniku. Zdaj vsi uporabniki pridobivajo podatke z diska. Posledica bo zrušitev strežnika in poškodovanje baze podatkov. Torej počistite ram-predpomnilnik samo, kadar je to potrebno in če poznate korake, sicer ste skrbnik sistema Cargo Cult.

Če želite počistiti prostor za zamenjavo, boste morda želeli zagnati spodnji ukaz.

# swapoff -a && swapon -a

Poleg tega lahko zgornji ukaz dodate zgoraj v skript cron, potem ko razumete vse s tem povezane rizike.

Zdaj bomo združili oba zgornja ukaza v en sam ukaz, da bomo naredili ustrezen skript za čiščenje predpomnilnika RAM in zamenjave prostora.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

OR

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Po preizkusu obeh zgornjih ukazov bomo pred in po zagonu skripta zagnali ukaz\"free -h" in preverili predpomnilnik.

Za zdaj je to vse. Če vam je bil članek všeč, nam v komentarjih ne pozabite sporočiti svojih dragocenih povratnih informacij, kaj mislite, da je dobro očistiti predpomnilnik in medpomnilnik RAM-a v proizvodnji in podjetju?