Articles

How To Clear Cache on Linux

linux file system cache (Page Cache) brukes til å gjøre IO-operasjoner raskere. Under visse omstendigheter vil en administrator eller utvikler kanskje tømme hurtigbufferen manuelt. I denne artikkelen vil vi forklare hvordan Linux – filsystembufferen fungerer. Da vil vi demonstrere hvordan du overvåker cachebruken og hvordan du fjerner cachen. Vi vil gjøre noen enkle ytelseseksperimenter for å kontrollere at hurtigbufferen fungerer som forventet, og at hurtigbufferen flush og clear-prosedyren også fungerer som forventet.

Hvordan Linux Filsystem Cache Fungerer

kjernen forbeholder seg en viss mengde systemminne for caching filsystemdisken aksesserer for å gjøre den generelle ytelsen raskere. Hurtigbufferen i linux kalles Sidebufferen. Størrelsen på sidebufferen kan konfigureres med sjenerøse standardinnstillinger som er aktivert for å cache store mengder diskblokker. Den maksimale størrelsen på cache og politikk for når du skal kaste ut data fra cache er justerbar med kjerneparametere. Linux cache tilnærming kalles en skrive-tilbake cache. Dette betyr at hvis data skrives til disk, skrives det til minnet i hurtigbufferen og merkes som skittent i hurtigbufferen til det synkroniseres til disk. Kjernen opprettholder interne datastrukturer for å optimalisere hvilke data som skal kastes ut fra hurtigbufferen når det er behov for mer plass i hurtigbufferen.under Linux lese systemanrop, vil kjernen sjekke om de forespurte dataene er lagret i blokker med data i hurtigbufferen, det ville være en vellykket cache hit og dataene vil bli returnert fra hurtigbufferen uten Å gjøre NOEN IO til disksystemet. For en cache savner dataene vil bli hentet FRA IO system og cache oppdatert basert på caching politikk som de samme dataene er sannsynlig å bli forespurt igjen.

når visse terskler for minnebruk er nådd, vil bakgrunnsoppgaver begynne å skrive skitne data til disken for å sikre at den tømmer minnebufferen. Disse kan ha en innvirkning på ytelsen til minne og CPU intensive programmer og krever tuning av administratorer og eller utviklere.

Bruke gratis kommando for å vise Cache Bruk

Vi kan bruke gratis kommandoen fra kommandolinjen for å analysere systemminnet og mengden minne som er tildelt caching. Se kommandoen nedenfor:

# free-m

det vi ser fra den frie kommandoen ovenfor er at det er 7,5 GB RAM på dette systemet. Av dette brukes bare 209 MB og 6,5 MB er gratis. 667 MB brukes i bufferbufferen. La oss nå prøve å øke dette nummeret ved å kjøre en kommando for å generere en fil på 1 Gigabyte og lese filen. Kommandoen nedenfor vil generere ca 100mb av tilfeldige data og deretter legge 10 kopier av filen sammen til en large_file.

# dd hvis=/dev/tilfeldig av=/root/data_file count=1400000
# for jeg i `seq 1 10`; gjør ekko $i; cat data_file >> large_file; ferdig

nå vil vi sørge for å lese denne 1 gig filen og deretter sjekke gratis kommandoen igjen:

# cat large_file > /dev/null
# free-m

vi kan se at bufferbufferbruken har gått opp fra 667 til 1735 megabyte en omtrent 1 gigabyte økning i bruken av bufferbufferen.

Proc Sys VM Drop Caches Kommando

linux-kjernen gir et grensesnitt for å slippe cachen la oss prøve disse kommandoene og se effekten på den frie innstillingen.

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

bufferbufferallokeringen ble frigjort med denne kommandoen.

Eksperimentell Verifisering Som Drop Caches Fungerer

Kan vi gjøre en ytelsesvalidering av å bruke cachen til å lese filen? La oss lese filen og skrive den tilbake til / dev / null for å teste hvor lang tid det tar å lese filen fra disken. Vi vil klare det med tidskommandoen. Vi gjør denne kommandoen umiddelbart etter at du har slettet hurtigbufferen med kommandoene ovenfor.

det tok 8,4 sekunder å lese filen. La oss lese det igjen nå at filen skal være i filsystembufferen og se hvor lang tid det tar nå.

Boom! Det tok bare .2 sekunder i forhold til 8,4 sekunder for å lese den når filen ikke ble bufret. For å bekrefte la oss gjenta dette igjen ved først å tømme hurtigbufferen og deretter lese filen 2 ganger.

Det fungerte perfekt som forventet. 8.5 sekunder for ikke-bufret lese og .2 sekunder for den bufrede lesingen.

Konklusjon

sidebufferen aktiveres automatisk På Linux-systemer og vil transparent gjøre IO raskere ved å lagre nylig brukte data i hurtigbufferen. Hvis du vil manuelt tømme hurtigbufferen som kan gjøres enkelt ved å sende en echo-kommando til / proc-filsystemet som indikerer til kjernen for å slippe hurtigbufferen og frigjøre minnet som brukes til hurtigbufferen. Instruksjonene for å kjøre kommandoen ble vist ovenfor i denne artikkelen, og eksperimentell validering av cacheadferden før og etter spyling ble også vist.