Kako počistiti predpomnilnik v Linuxu

How Clear Cache Linux



Predpomnilnik datotečnega sistema linux (Page Cache) se uporablja za hitrejše delovanje IO. V določenih okoliščinah bo skrbnik ali razvijalec morda želel ročno počistiti predpomnilnik. V tem članku bomo razložili, kako deluje predpomnilnik datotečnega sistema Linux. Nato bomo pokazali, kako spremljati uporabo predpomnilnika in kako ga počistiti. Naredili bomo nekaj preprostih poskusov delovanja, da preverimo, ali predpomnilnik deluje po pričakovanjih in da postopek izpiranja in brisanja predpomnilnika deluje po pričakovanjih.

Kako deluje predpomnilnik datotečnega sistema Linux

Jedro rezervira določeno količino sistemskega pomnilnika za predpomnjenje dostopov do diska datotečnega sistema, da bi pospešilo splošno delovanje. Predpomnilnik v Linuxu se imenuje Predpomnilnik . Velikost predpomnilnika strani je nastavljiva z velikodušnimi privzetimi nastavitvami, ki omogočajo predpomnjenje velikih količin blokov diska. Največja velikost predpomnilnika in pravilnik o tem, kdaj izseliti podatke iz predpomnilnika, so nastavljivi s parametri jedra. Pristop predpomnilnika linux se imenuje predpomnilnik za povratni zapis. To pomeni, da če so podatki zapisani na disk, so zapisani v pomnilnik v predpomnilnik in v predpomnilniku označeni kot umazani, dokler niso sinhronizirani z diskom. Jedro vzdržuje notranje strukture podatkov za optimizacijo podatkov, ki jih je treba izseliti iz predpomnilnika, ko je v predpomnilniku potreben več prostora.







Med branjem sistemskih klicev v sistemu Linux bo jedro preverilo, ali so zahtevani podatki shranjeni v blokih podatkov v predpomnilniku, kar bi bilo uspešno v predpomnilniku, podatki pa bodo vrnjeni iz predpomnilnika, ne da bi v IO vstopili v diskovni sistem. Za zamudo predpomnilnika bodo podatki pridobljeni iz sistema IO, predpomnilnik pa posodobljen na podlagi pravilnikov predpomnjenja, saj bodo ti isti podatki verjetno znova zahtevani.



Ko bodo doseženi določeni pragi porabe pomnilnika, bodo naloge v ozadju začele zapisovati umazane podatke na disk, da se tako počisti predpomnilnik pomnilnika. Ti lahko vplivajo na zmogljivost pomnilniških in procesorsko intenzivnih aplikacij in zahtevajo prilagajanje s strani skrbnikov in ali razvijalcev.



Za ogled predpomnilnika uporabite brezplačen ukaz

Za analizo sistemskega pomnilnika in količine pomnilnika, dodeljenega predpomnjenju, lahko uporabimo brezplačni ukaz iz ukazne vrstice. Glej spodnji ukaz:





#prost -m

Kar vidimo iz prost zgornji ukaz je, da je v tem sistemu 7,5 GB RAM -a. Od tega je uporabljenih le 209 MB, brezplačnih pa 6,5 ​​MB. 667 MB se uporablja v predpomnilniku. Poskusimo zdaj to število povečati z izvajanjem ukaza za ustvarjanje datoteke 1 gigabajt in branjem datoteke. Spodnji ukaz bo ustvaril približno 100 MB naključnih podatkov in nato dodal 10 kopij datoteke skupaj v eno velika_datoteka .



# dd if =/dev/random of =/root/data_file count = 1400000
# za i v `seq 1 10`; do echo $ i; mačka data_file >> large_file; Končano

Zdaj bomo prebrali to datoteko 1 Gig in nato znova preverili brezplačni ukaz:

# mačka velika_datoteka> /dev /null
# brezplačno -m

Vidimo lahko, da se je poraba predpomnilnika povečala s 667 na 1735 megabajtov, kar je približno 1 gigabajt povečalo uporabo vmesnega predpomnilnika.

Ukaz Proc Sys VM Drop Caches

Jedro linux ponuja vmesnik za spuščanje predpomnilnika, preizkusimo te ukaze in poglejmo vpliv na brezplačno nastavitev.

# echo 1>/proc/sys/vm/drop_caches
# brezplačno -m

Zgoraj lahko vidimo, da je bila večina ukazov predpomnilnika sproščena s tem ukazom.

Eksperimentalno preverjanje, ali Drop Caches deluje

Ali lahko izvedemo preverjanje učinkovitosti uporabe predpomnilnika za branje datoteke? Preberemo datoteko in jo zapišemo nazaj v /dev /null, da preverimo, kako dolgo traja branje datoteke z diska. Mi bomo čas z čas ukaz. Ta ukaz izvedemo takoj po brisanju predpomnilnika z zgornjimi ukazi.

Za branje datoteke je trajalo 8,4 sekunde. Preberimo jo zdaj, ko bi morala biti datoteka v predpomnilniku datotečnega sistema, in poglejmo, kako dolgo traja.

Boom! Ko je datoteka ni bila shranjena v predpomnilnik, je trajalo le 0,2 sekunde v primerjavi z 8,4 sekunde. Za preverjanje ponovimo še enkrat tako, da najprej počistimo predpomnilnik in nato 2 -krat preberemo datoteko.

Delalo je popolnoma po pričakovanjih. 8,5 sekunde za branje brez predpomnjenja in 2,2 sekunde za branje v predpomnilniku.

Zaključek

Predpomnilnik strani je samodejno omogočen v sistemih Linux in bo pregledno pospešil IO s shranjevanjem nedavno uporabljenih podatkov v predpomnilnik. Če želite ročno počistiti predpomnilnik, kar lahko preprosto storite tako, da v datotečni sistem /proc pošljete ukaz echo, ki jedru nakaže, naj spusti predpomnilnik in sprosti pomnilnik, ki se uporablja za predpomnilnik. Navodila za izvajanje ukaza so bila prikazana zgoraj v tem članku, prikazana pa je bila tudi eksperimentalna validacija vedenja predpomnilnika pred in po izpiranju.