Slik tømmer du hurtigbufferen på Linux

How Clear Cache Linux



Linux -filsystembufferen (Page Cache) brukes til å gjøre IO -operasjoner raskere. Under visse omstendigheter vil en administrator eller utvikler kanskje slette hurtigbufferen manuelt. I denne artikkelen vil vi forklare hvordan Linux File System -hurtigbufferen fungerer. Deretter vil vi demonstrere hvordan du overvåker hurtigbufferbruken og hvordan du sletter hurtigbufferen. Vi vil gjøre noen enkle ytelseseksperimenter for å bekrefte at hurtigbufferen fungerer som forventet, og at hurtigbufferen og klar prosedyre også fungerer som forventet.

Hvordan Linux File System Cache fungerer

Kjernen reserverer en viss mengde systemminne for bufring av filsystemets disktilgang for å gjøre den generelle ytelsen raskere. Cachen i linux kalles Cache -side . Størrelsen på sidebufferen kan konfigureres med sjenerøse standardinnstillinger aktivert for hurtigbuffer av store mengder diskblokker. Maksimal størrelse på hurtigbufferen og retningslinjene for når data skal kastes ut fra hurtigbufferen, kan justeres med kjerneparametere. Linux-cache-tilnærmingen kalles en skrivebuffer. Dette betyr at hvis data skrives til disk, skrives det til minnet i hurtigbufferen og merkes som skittent i hurtigbufferen til de blir synkronisert til disken. Kjernen opprettholder interne datastrukturer for å optimalisere hvilke data som skal kastes ut fra hurtigbufferen når det trengs mer plass i hurtigbufferen.







Under Linux -lesing av systemanrop, vil kjernen sjekke om de forespurte dataene er lagret i datablokker i hurtigbufferen, det ville være et vellykket hurtigbuffertreff og dataene vil bli returnert fra hurtigbufferen uten å gjøre noen IO til disksystemet. For en cache -savning vil dataene bli hentet fra IO -systemet, og bufferen vil bli oppdatert basert på retningslinjene for hurtigbufring, ettersom de samme dataene sannsynligvis vil bli forespurt på nytt.



Når visse terskler for minnebruk er nådd, begynner bakgrunnsoppgaver å skrive skitne data til disken for å sikre at den sletter minnebufferen. Disse kan ha innvirkning på ytelsen til minne og CPU -intensive applikasjoner og krever justering av administratorer og eller utviklere.



Bruker gratis kommando for å se Cache -bruk

Vi kan bruke gratiskommandoen fra kommandolinjen for å analysere systemminnet og mengden minne som er allokert til hurtigbufring. Se kommandoen nedenfor:





#gratis -m

Det vi ser fra gratis 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 tallet ved å kjøre en kommando for å generere en fil på 1 Gigabyte og lese filen. Kommandoen nedenfor vil generere omtrent 100 MB tilfeldige data og deretter legge til 10 kopier av filen sammen til en stor_fil .



# dd if =/dev/random of =/root/data_file count = 1400000
# for i i 'sek. 1 10'; ekko $ i; kattdatafil >> stor_fil; gjort

Nå vil vi sørge for å lese denne 1 Gig -filen og deretter sjekke gratiskommandoen igjen:

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

Vi kan se at bufferen for buffer har gått opp fra 667 til 1735 megabyte, omtrent 1 gigabyte økning i bruken av bufferen.

Kommando for Proc Sys VM Drop Caches

Linux -kjernen gir et grensesnitt for å slippe hurtigbufferen, la oss prøve disse kommandoene og se virkningen på gratisinnstillingen.

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

Vi kan se ovenfor at størstedelen av buffertildelingen ble frigjort med denne kommandoen.

Eksperimentell bekreftelse på at drop caches fungerer

Kan vi gjøre en ytelsesvalidering for å bruke hurtigbufferen for å 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 ta det med tid kommando. Vi gjør denne kommandoen umiddelbart etter å ha ryddet hurtigbufferen med kommandoene ovenfor.

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

Bomme! Det tok bare .2 sekunder sammenlignet med 8,4 sekunder å lese den når filen ikke ble bufret. For å bekrefte, la oss gjenta dette igjen ved først å tømme bufferen og deretter lese filen 2 ganger.

Det fungerte perfekt som forventet. 8,5 sekunder for ikke-bufret lesing og .2 sekunder for bufret lesing.

Konklusjon

Sidebufferen aktiveres automatisk på Linux -systemer og vil gjøre IO raskere ved å lagre nylig brukte data i hurtigbufferen. Hvis du vil slette hurtigbufferen manuelt, kan du enkelt gjøre det ved å sende en ekkokommando til /proc -filsystemet som angir at kjernen skal slippe hurtigbufferen og frigjøre minnet som brukes til hurtigbufferen. Instruksjonene for å kjøre kommandoen ble vist ovenfor i denne artikkelen, og den eksperimentelle valideringen av cache -oppførselen før og etter flushing ble også vist.