Izvođenje

Kako očistiti predmemoriju na Linuxu

Kako očistiti predmemoriju na Linuxu
Za brže IO operacije koristi se linux predmemorija datotečnog sustava (Page Cache).  Pod određenim okolnostima administrator ili programer možda će htjeti ručno očistiti predmemoriju.  U ovom ćemo članku objasniti kako funkcionira predmemorija Linux datotečnog sustava.  Tada ćemo pokazati kako nadzirati upotrebu predmemorije i kako očistiti predmemoriju.  Izvršit ćemo nekoliko jednostavnih eksperimenata s performansama kako bismo provjerili radi li predmemorija prema očekivanjima te da li postupak ispiranja i pročišćavanja predmemorije također radi prema očekivanjima.

Kako funkcionira predmemorija datotečnog sustava Linux

Jezgra rezervira određenu količinu sistemske memorije za predmemoriranje pristupa disku datotečnog sustava radi brže ukupne izvedbe.  Predmemorija u Linuxu naziva se Predmemorija stranice. Veličina predmemorije stranica može se konfigurirati s velikodušnim zadanim postavkama koje omogućavaju predmemoriranje velike količine blokova diska.  Maksimalna veličina predmemorije i politike kada treba istjerati podatke iz predmemorije mogu se prilagoditi parametrima jezgre.  Pristup linux predmemoriji naziva se predmemorija povratnog pisanja.  To znači da ako se podaci zapisuju na disk, upisuju se u memoriju u predmemoriju i označavaju prljavim u predmemoriji dok se ne sinkroniziraju s diskom.  Kernel održava unutarnje strukture podataka kako bi optimizirao koje podatke izbaciti iz predmemorije kada je potrebno više prostora u predmemoriji.

Tijekom sistemskih poziva za čitanje Linuxa, kernel će provjeriti jesu li traženi podaci pohranjeni u blokovima podataka u predmemoriji, što bi bio uspješan pogodak predmemorije i podaci će se vratiti iz predmemorije bez ikakvog IO-a na diskovni sustav.  U slučaju promašaja predmemorije, podaci će se dohvaćati iz IO sustava i predmemorija se ažurirati na temelju pravila predmemoriranja jer će se isti ti podaci vjerojatno ponovno zatražiti.

Kada se dosegnu određeni pragovi korištenja memorije, zadaci će započeti upisivanje prljavih podataka na disk kako bi se osiguralo da briše predmemoriju memorije.  Oni mogu utjecati na performanse memorijskih i CPU intenzivnih aplikacija i zahtijevaju podešavanje od strane administratora i / ili programera.

Korištenje besplatne naredbe za prikaz upotrebe predmemorije

Slobodnu naredbu iz naredbenog retka možemo koristiti za analizu sistemske memorije i količine memorije dodijeljene za predmemoriranje.  Pogledajte naredbu u nastavku:

# besplatno -m

Ono što vidimo iz besplatno naredba iznad je da postoji 7.5 GB RAM-a na ovom sustavu.  Od toga se koristi samo 209 MB, a 6.5 MB je besplatno.  667 MB koristi se u predmemoriji međuspremnika.  Pokušajmo sada povećati taj broj pokretanjem naredbe za generiranje datoteke od 1 Gigabajta i čitanjem datoteke.  Naredba u nastavku generirat će približno 100 MB slučajnih podataka, a zatim dodati 10 kopija datoteke u jednu velika_datoteka.

# dd ako = / dev / random od = / root / data_file count = 1400000
# za i u 'seq 1 10'; odzvanjati $ i; mačka_datoteka_datoteka >> velika_datoteka; gotovo

Sada ćemo obavezno pročitati ovu 1 Gig datoteku, a zatim ponovno provjeriti besplatnu naredbu:

# mačka velika_datoteka> / dev / null
# besplatno -m

Vidimo da je upotreba predmemorije međuspremnika porasla sa 667 na 1735 megabajta, što je otprilike 1 gigabajt povećanja u upotrebi predmemorije međuspremnika.

Naredba za ispuštanje predmemorije Proc Sys VM

Linux kernel nudi sučelje za ispuštanje predmemorije. Isprobajmo ove naredbe i vidimo utjecaj na besplatnu postavku.

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

Gore možemo vidjeti da je većina dodjele predmemorije međuspremnika oslobođena ovom naredbom.

Eksperimentalna provjera funkcionira li ispuštanje predmemorija

Možemo li izvršiti provjeru performansi korištenjem predmemorije za čitanje datoteke? Pročitajmo datoteku i zapišite je natrag u / dev / null kako bismo testirali koliko je vremena potrebno za čitanje datoteke s diska.  Uskladit ćemo s vrijeme naredba.  Ovu naredbu radimo odmah nakon brisanja predmemorije gornjim naredbama.

Trebalo je 8.4 sekunde za čitanje datoteke.  Pročitajmo je opet sada da bi se datoteka trebala nalaziti u predmemoriji datotečnog sustava i vidjet ćemo koliko joj treba vremena.

Bum!  Trebalo je samo .2 sekunde u usporedbi s 8.4 sekunde za čitanje kad datoteka nije bila u predmemoriji.  Da bismo provjerili, ponovimo to ponovno tako da prvo očistimo predmemoriju, a zatim čitamo datoteku 2 puta.

Djelovalo je savršeno kako se očekivalo.  8.5 sekundi za nespremljeno čitanje i .2 sekunde za predmemorirano čitanje.

Zaključak

Predmemorija stranica automatski se omogućuje na Linux sustavima i transparentno će ubrzati IO spremanjem nedavno korištenih podataka u predmemoriju.  Ako želite ručno obrisati predmemoriju, što se može lako učiniti slanjem naredbe echo datotečnom sustavu / proc ukazujući jezgru da spusti predmemoriju i oslobodi memoriju koja se koristi za predmemoriju.  Upute za izvođenje naredbe prikazane su gore u ovom članku, a prikazane su i eksperimentalne provjere ponašanja predmemorije prije i nakon ispiranja.

Kako koristiti Xdotool za poticanje klikova i pritiska miša u Linuxu
Xdotool je besplatni alat za naredbene retke otvorenog koda za simulaciju klikova mišem i pritiska tipki. Ovaj će članak pokrivati ​​kratki vodič o ko...
Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...