Sådan ryddes cache på Linux

How Clear Cache Linux



Linux -filsystemets cache (Page Cache) bruges til at gøre IO -operationer hurtigere. Under visse omstændigheder vil en administrator eller udvikler måske rydde cachen manuelt. I denne artikel vil vi forklare, hvordan Linux File System -cachen fungerer. Derefter vil vi demonstrere, hvordan du overvåger cacheforbruget, og hvordan du rydder cachen. Vi vil lave nogle enkle ydeevneeksperimenter for at kontrollere, at cachen fungerer som forventet, og at cacheskylning og klar procedure også fungerer som forventet.

Hvordan Linux File System Cache fungerer

Kernen forbeholder sig en vis mængde systemhukommelse til caching af filsystemets diskadgang for at gøre den samlede ydelse hurtigere. Cachen i linux kaldes Cacheside . Størrelsen på sidecachen kan konfigureres med generøse standardindstillinger, der kan cache store mængder diskblokke. Den maksimale størrelse på cachen og politikkerne for, hvornår data skal slettes fra cachen, kan justeres med kerneparametre. Linux-cachemetoden kaldes en skrive-tilbage-cache. Det betyder, at hvis data skrives til disken, skrives de til hukommelsen i cachen og markeres som beskidte i cachen, indtil de er synkroniseret til disken. Kernen opretholder interne datastrukturer for at optimere, hvilke data der skal smides ud fra cachen, når der er brug for mere plads i cachen.







Under Linux læser systemopkald, vil kernen kontrollere, om de ønskede data er gemt i blokke af data i cachen, det ville være et vellykket cache -hit, og dataene returneres fra cachen uden at foretage nogen IO til disksystemet. For en cache -miss vil dataene blive hentet fra IO -systemet, og cachen opdateres baseret på cachepolitikkerne, da de samme data sandsynligvis vil blive anmodet om igen.



Når visse tærskler for hukommelsesforbrug er nået, begynder baggrundsopgaver at skrive beskidte data til disken for at sikre, at det sletter hukommelsescachen. Disse kan have indflydelse på hukommelses- og CPU -intensive applikations ydeevne og kræve tuning af administratorer og eller udviklere.



Brug gratis kommando til at se cache -brug

Vi kan bruge den gratis kommando fra kommandolinjen for at analysere systemhukommelsen og mængden af ​​hukommelse, der er allokeret til caching. Se kommandoen herunder:





#gratis -m

Hvad vi ser fra gratis kommandoen ovenfor er, at der er 7,5 GB RAM på dette system. Heraf bruges kun 209 MB, og 6,5 MB er gratis. 667 MB bruges i buffercachen. Lad os nu prøve at øge dette tal ved at køre en kommando for at generere en fil på 1 Gigabyte og læse filen. Kommandoen herunder genererer cirka 100 MB tilfældige data og tilføjer derefter 10 kopier af filen til en stor_fil .



# dd if =/dev/random of =/root/data_file count = 1400000
# for i i 'seq 1 10'; ekko $ i; kat data_fil >> stor_fil; Færdig

Nu vil vi sørge for at læse denne 1 Gig -fil og derefter kontrollere den gratis kommando igen:

# kat stor_fil> /dev /null
# fri -m

Vi kan se, at buffer -cacheforbruget er steget fra 667 til 1735 Megabyte, en stigning på cirka 1 Gigabyte i brugen af ​​buffer -cachen.

Proc Sys VM Drop Caches -kommando

Linux -kernen giver en grænseflade til at slippe cachen, lad os prøve disse kommandoer og se virkningen på den gratis indstilling.

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

Vi kan se ovenfor, at størstedelen af ​​buffer -cachetildelingen blev frigjort med denne kommando.

Eksperimentel verifikation af, at Drop Caches virker

Kan vi foretage en ydelsesvalidering af at bruge cachen til at læse filen? Lad os læse filen og skrive den tilbage til /dev /null for at teste, hvor lang tid det tager at læse filen fra disken. Vi vil time det med tid kommando. Vi udfører denne kommando umiddelbart efter at have ryddet cachen med kommandoerne ovenfor.

Det tog 8,4 sekunder at læse filen. Lad os læse det igen nu, hvor filen skal være i filsystemets cache og se, hvor lang tid det tager nu.

Boom! Det tog kun .2 sekunder i forhold til 8,4 sekunder at læse den, når filen ikke blev cachelagret. For at verificere lad os gentage dette igen ved først at rydde cachen og derefter læse filen 2 gange.

Det fungerede perfekt som forventet. 8,5 sekunder for den ikke-cachelagrede læsning og .2 sekunder for den cachelagrede læsning.

Konklusion

Sidecachen aktiveres automatisk på Linux -systemer og vil gennemsigtigt gøre IO hurtigere ved at gemme nyligt brugte data i cachen. Hvis du vil rydde cachen manuelt, kan det let gøres ved at sende en ekkokommando til /proc filsystemet, der angiver for kernen at slippe cachen og frigøre den hukommelse, der bruges til cachen. Instruktionerne for at køre kommandoen blev vist ovenfor i denne artikel, og den eksperimentelle validering af cacheadfærden før og efter skylning blev også vist.