Articles

cum să ștergeți memoria Cache pe Linux

memoria cache a sistemului de fișiere linux (Page Cache) este utilizată pentru a face operațiunile IO mai rapide. În anumite circumstanțe, este posibil ca un administrator sau un dezvoltator să dorească să șteargă manual memoria cache. În acest articol vom explica cum funcționează memoria cache a sistemului de fișiere Linux. Apoi vom demonstra cum să monitorizăm utilizarea cache-ului și cum să ștergem memoria cache. Vom face câteva experimente simple de performanță pentru a verifica dacă memoria cache funcționează așa cum era de așteptat și că procedura cache flush și clear funcționează, de asemenea, așa cum era de așteptat.

cum funcționează cache-ul sistemului de fișiere Linux

kernel-ul își rezervă o anumită cantitate de memorie de sistem pentru cache-ul sistemului de fișiere accesează discul pentru a face performanța generală mai rapidă. Memoria cache din linux se numește memoria cache a paginii. Dimensiunea cache-ului paginii este configurabilă cu valori implicite generoase activate pentru a memora în cache cantități mari de blocuri de disc. Dimensiunea maximă a cache-ului și politicile de evacuare a datelor din cache sunt reglabile cu parametrii kernel-ului. Abordarea cache-ului linux se numește cache de scriere înapoi. Aceasta înseamnă că, dacă datele sunt scrise pe disc, acestea sunt scrise în memorie în memoria cache și marcate ca murdare în memoria cache până când sunt sincronizate cu discul. Kernel-ul menține structuri de date interne pentru a optimiza ce date să evacueze din cache atunci când este nevoie de mai mult spațiu în cache.

în timpul apelurilor de sistem Linux read, kernel-ul va verifica dacă datele solicitate sunt stocate în blocuri de date în cache, care ar fi un succes cache lovit și datele vor fi returnate din cache fără a face orice IO la sistemul de disc. Pentru un cache dor de date vor fi preluate din sistemul IO și cache-ul actualizat pe baza politicilor de cache ca aceleași date este probabil să fie solicitate din nou.

când se ating anumite praguri de utilizare a memoriei, sarcinile de fundal vor începe să scrie date murdare pe disc pentru a se asigura că șterge memoria cache. Acestea pot avea un impact asupra performanței aplicațiilor intensive de memorie și CPU și necesită reglare de către administratori și dezvoltatori.

folosind comanda liberă pentru a vizualiza utilizarea Cache-ului

putem folosi comanda liberă din linia de comandă pentru a analiza memoria sistemului și cantitatea de memorie alocată cache-ului. Vedeți comanda de mai jos:

# free-m

ceea ce vedem din comanda gratuită de mai sus este că există 7,5 GB RAM pe acest sistem. Din aceasta se utilizează doar 209 MB și 6,5 MB este gratuit. 667 MB este utilizat în memoria cache tampon. Acum, să încercăm să creștem acest număr executând o comandă pentru a genera un fișier de 1 Gigabyte și citind fișierul. Comanda de mai jos va genera aproximativ 100 MB de date aleatorii și apoi va adăuga 10 copii ale fișierului împreună într-un fișier large_file.

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

acum ne vom asigura că vom citi acest fișier 1 gig și apoi vom verifica din nou comanda gratuită:

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

putem vedea utilizarea cache tampon a crescut de la 667 la 1735 megaocteți o creștere de aproximativ 1 gigabyte în utilizarea memoriei cache tampon.

Proc sys vm Drop cache Command

kernel-ul linux oferă o interfață pentru a renunța la cache să încercăm aceste comenzi și să vedem impactul asupra setării gratuite.

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

putem vedea mai sus că majoritatea alocarea cache-ului tampon a fost eliberată cu această comandă.

verificarea experimentală că Drop cache funcționează

putem face o validare de performanță a utilizării cache-ului pentru a citi fișierul? Să citim fișierul și să-l scriem înapoi la /dev/null pentru a testa cât durează citirea fișierului de pe disc. O vom cronometra cu comanda timpului. Facem această comandă imediat după ștergerea memoriei cache cu comenzile de mai sus.

a fost nevoie de 8,4 secunde pentru a citi fișierul. Să-l citim din nou acum că fișierul ar trebui să fie în memoria cache a sistemului de fișiere și să vedem cât durează acum.

Boom! A durat doar .2 secunde, comparativ cu 8,4 secunde pentru a citi atunci când fișierul nu a fost memorat în cache. Pentru a verifica să repetăm acest lucru din nou, ștergând mai întâi memoria cache și apoi citind fișierul de 2 ori.

a funcționat perfect așa cum era de așteptat. 8.5 secunde pentru citire non-cache și .2 secunde pentru citirea în cache.

concluzie

memoria cache a paginii este activată automat pe sistemele Linux și va face IO mai rapid prin stocarea datelor utilizate recent în memoria cache. Dacă doriți să ștergeți manual memoria cache care se poate face cu ușurință prin trimiterea unei comenzi echo către sistemul de fișiere /proc indicând kernelului să renunțe la memoria cache și să elibereze memoria utilizată pentru memoria cache. Instrucțiunile pentru rularea comenzii au fost prezentate mai sus în acest articol și au fost afișate și validarea experimentală a comportamentului cache înainte și după spălare.