Performanţă

Cum să ștergeți memoria cache pe Linux

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, un administrator sau un dezvoltator ar putea dori să șteargă manual memoria cache.  În acest articol vom explica cum funcționează memoria cache a sistemului de fișiere Linux.  Apoi vom arăta cum să monitorizăm utilizarea cache-ului și cum să ștergem cache-ul.  Vom face câteva experimente simple de performanță pentru a verifica dacă cache-ul funcționează așa cum era de așteptat și că procedura de curățare și ștergere a cache-ului funcționează și așa cum era.

Cum funcționează memoria cache a sistemului de fișiere Linux

Nucleul rezervă o anumită cantitate de memorie de sistem pentru stocarea în cache a accesului la discul sistemului de fișiere, pentru a face performanța generală mai rapidă.  Cache-ul din Linux se numește Memoria cache a paginii. Dimensiunea memoriei cache a paginii este configurabilă cu valorile implicite generoase activate pentru a ascunde cantități mari de blocuri de disc.  Dimensiunea maximă a cache-ului și politicile privind momentul evacuării datelor din cache sunt ajustabile cu parametrii kernel-ului.  Abordarea cache Linux se numește cache de scriere.  Aceasta înseamnă că dacă datele sunt scrise pe disc, acestea sunt scrise în memorie în cache și marcate ca murdare în cache până când sunt sincronizate pe disc.  Nucleul menține structuri de date interne pentru a optimiza ce date să fie evacuate din cache atunci când este nevoie de mai mult spațiu în cache.

În timpul apelurilor de sistem citite de Linux, nucleul va verifica dacă datele solicitate sunt stocate în blocuri de date din cache, ceea ce ar fi o reușită a memoriei cache, iar datele vor fi returnate din cache fără a efectua IO pe sistemul de disc.  Pentru o pierdere în cache, datele vor fi preluate din sistemul IO și cache-ul va fi actualizat pe baza politicilor de cache, deoarece este probabil ca aceleași date să fie solicitate din nou.

Când anumite praguri de utilizare a memoriei sunt atinse, 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 în memorie și CPU și necesită reglare de către administratori și / sau dezvoltatori.

Utilizarea comenzii gratuite pentru a vizualiza utilizarea cache-ului

Putem folosi comanda gratuită din linia de comandă pentru a analiza memoria sistemului și cantitatea de memorie alocată memorării în cache.  A se vedea comanda de mai jos:

# liber -m

Ce vedem din gratuit comanda de mai sus este că există 7.5 GB RAM pe acest sistem.  Dintre aceștia se folosesc doar 209 MB și 6.5 MB este gratuit.  667 MB sunt utilizați în memoria cache a bufferului.  Acum, să încercăm să creștem acel 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 împreună 10 copii ale fișierului într-o singură fișier_ mare.

# dd if = / dev / random of = / root / data_file count = 1400000
# pentru i în „seq 1 10”; face ecou $ i; cat_fisier_data >> fisier_mare; Terminat

Acum ne vom asigura că citim acest fișier 1 Gig și apoi vom verifica din nou comanda gratuită:

# pisică_fișier mare> / dev / null
# liber -m

Putem vedea că utilizarea memoriei cache a buffer-ului a crescut de la 667 la 1735 megabyți, o creștere de aproximativ 1 gigabyte în utilizarea cache-ului buffer.

Comanda Proc Sys VM Drop Caches

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

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

Putem vedea mai sus că majoritatea alocării bufferului cache a fost eliberată cu această comandă.

Verificare experimentală a funcționării cache-urilor

Putem face o validare a performanței 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 programa cu timp comanda.  Executăm această comandă imediat după ștergerea memoriei cache cu comenzile de mai sus.

A durat 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-l citi când fișierul nu a fost stocat în cache.  Pentru verificare, repetăm ​​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 citirea 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ță, trimițând o comandă echo către sistemul de fișiere / proc indicând nucleului să renunțe la memoria cache și să elibereze memoria utilizată pentru memoria cache.  Instrucțiunile pentru executarea comenzii au fost prezentate mai sus în acest articol și au fost prezentate și validarea experimentală a comportamentului cache înainte și după spălare.

Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...