Izvedba

Kako počistiti predpomnilnik v Linuxu

Kako počistiti predpomnilnik v Linuxu
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 počistiti predpomnilnik.  Izvedli bomo nekaj preprostih preizkusov zmogljivosti, da preverimo, ali predpomnilnik deluje po pričakovanjih in ali postopek predpomnilnika deluje tudi po pričakovanjih.

Kako deluje predpomnilnik datotečnega sistema Linux

Jedro si rezervira določeno količino sistemskega pomnilnika za predpomnjenje dostopov do diska datotečnega sistema, da bi bilo splošno delovanje hitrejše.  Predpomnilnik v Linuxu se imenuje Predpomnilnik strani. Velikost predpomnilnika strani je mogoče nastaviti z velikodušnimi privzetimi nastavitvami, ki omogočajo predpomnjenje velikih količin blokov diskov.  Največja velikost predpomnilnika in pravilniki o času izselitve podatkov iz predpomnilnika so nastavljivi s parametri jedra.  Pristop predpomnilnika linux se imenuje predpomnilnik povratnega pisanja.  To pomeni, da če se podatki zapišejo na disk, se zapišejo v pomnilnik v predpomnilnik in v predpomnilniku označijo kot umazane, dokler se ne sinhronizirajo na disk.  Jedro vzdržuje notranje podatkovne strukture, da optimizira, katere podatke izseliti iz predpomnilnika, ko je v predpomnilniku potrebno več prostora.

Med sistemskimi klici za branje Linuxa bo jedro preverilo, ali so zahtevani podatki shranjeni v blokih podatkov v predpomnilniku, kar bi bil uspešen zadetek predpomnilnika in podatki se vrnejo iz predpomnilnika, ne da bi IO opravil na diskovni sistem.  Za pogrešanje predpomnilnika bodo podatki pridobljeni iz sistema IO in predpomnilnik posodobljen na podlagi pravilnikov predpomnjenja, saj bodo ti isti podatki verjetno spet zahtevani.

Ko bodo doseženi določeni pragovi porabe pomnilnika, bodo opravila v ozadju začela zapisovati umazane podatke na disk, da bodo zagotovo počistili predpomnilnik.  Ti lahko vplivajo na delovanje pomnilniških in CPU intenzivnih aplikacij in zahtevajo nastavitev s strani skrbnikov in / ali razvijalcev.

Uporaba brezplačnega ukaza za ogled uporabe predpomnilnika

Brezplačni ukaz iz ukazne vrstice lahko uporabimo za analizo sistemskega pomnilnika in količine pomnilnika, dodeljenega za predpomnjenje.  Glej spodnji ukaz:

# brezplačno -m

Kar vidimo iz prost zgornji ukaz je, da obstaja 7.5 GB RAM-a na tem sistemu.  Od tega je uporabljenih le 209 MB in 6.5 MB je brezplačno.  667 MB se uporablja v predpomnilniku vmesnega pomnilnika.  Zdaj poskusimo to število povečati tako, da zaženemo ukaz za ustvarjanje datoteke velikosti 1 Gigabajt in jo preberemo.  Spodnji ukaz bo ustvaril približno 100 MB naključnih podatkov in nato v eno kopijo dodal 10 kopij datoteke velika_datoteka.

# dd, če = / dev / random od = / root / data_file count = 1400000
# za i v 'naslednjih 10'; naredi echo $ i; mačka data_file >> velika_datoteka; Končano

Zdaj bomo zagotovo prebrali to datoteko 1 Gig in nato še enkrat preverili brezplačni ukaz:

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

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

Ukaz Proc Sys VM Drop Caches

Jedro linux ponuja vmesnik za spuščanje predpomnilnika. Preizkusimo te ukaze in si oglejmo vpliv na brezplačno nastavitev.

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

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

Eksperimentalno preverjanje, ali Drop Caches deluje

Ali lahko izvedemo preverjanje učinkovitosti uporabe predpomnilnika za branje datoteke? Preberimo datoteko in jo zapišimo nazaj v / dev / null, da preizkusimo, kako dolgo je treba datoteko prebrati z diska.  Časirali bomo z čas ukaz.  Ta ukaz naredimo takoj po čiščenju predpomnilnika z zgornjimi ukazi.

Trajalo je 8.4 sekunde za branje datoteke.  Znova jo preberite, da mora biti datoteka v predpomnilniku datotečnega sistema, in poglejmo, kako dolgo traja.

Bum!  Trajalo je samo .2 sekundi v primerjavi z 8.4 sekunde, da jo preberete, ko datoteka ni bila predpomnjena.  Če želite preveriti, ponovimo še enkrat tako, da najprej počistimo predpomnilnik in nato datoteko preberemo dvakrat.

Delovalo je popolnoma po pričakovanjih.  8.5 sekund za predpomnjeno branje in .2 sekundi za predpomnjeno branje.

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, ki ga je mogoče enostavno narediti tako, da v datotečni sistem / proc pošljete ukaz echo, ki jedru sporoči, naj spusti predpomnilnik in sprosti pomnilnik, uporabljen za predpomnilnik.  Navodila za zagon ukaza so bila prikazana zgoraj v tem članku, prikazana pa je bila tudi eksperimentalna potrditev vedenja predpomnilnika pred in po izpiranju.

Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...
Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...