Opptreden

Slik tømmer du hurtigbuffer på Linux

Slik tømmer du hurtigbuffer på Linux
Linux-filsystemets hurtigbuffer (Page Cache) brukes til å gjøre IO-operasjoner raskere.  Under visse omstendigheter vil en administrator eller utvikler kanskje rydde hurtigbufferen manuelt.  I denne artikkelen vil vi forklare hvordan Linux File System cache fungerer.  Deretter vil vi demonstrere hvordan du overvåker cache-bruken og hvordan du tømmer cachen.  Vi vil gjøre noen enkle ytelseseksperimenter for å bekrefte at hurtigbufferen fungerer som forventet, og at hurtigbufferens tømme og klare prosedyre også fungerer som forventet.

Hvordan fungerer Linux File System Cache

Kjernen reserverer en viss mengde systemminne for caching av filsystemets disktilganger for å gjøre den totale ytelsen raskere.  Cachen i Linux kalles Sidecache. Størrelsen på sidebufferen kan konfigureres med sjenerøse standarder som er aktivert for å cache store mengder diskblokker.  Den maksimale størrelsen på hurtigbufferen og retningslinjene for når data skal kastes fra hurtigbufferen kan justeres med kjerneparametere.  Linux-cache-tilnærmingen kalles en tilbakekoblingsbuffer.  Dette betyr at hvis data blir skrevet til disken, blir de skrevet til minnet i hurtigbufferen og merket som skitne i hurtigbufferen til de er synkronisert med disken.  Kjernen opprettholder interne datastrukturer for å optimalisere hvilke data som skal kastes ut fra hurtigbufferen når mer plass er nødvendig i hurtigbufferen.

Under Linux-lesesystemanrop vil kjernen sjekke om de forespurte dataene er lagret i datablokker i hurtigbufferen, det vil være et vellykket hurtigbuffertreff og dataene vil bli returnert fra hurtigbufferen uten å gjøre noe IO til disksystemet.  For en hurtigbuffer vil dataene hentes fra IO-systemet, og hurtigbufferen oppdateres basert på caching-retningslinjene, da det er sannsynlig at de samme dataene vil bli bedt om igjen.

Når visse terskler for minnebruk er nådd, begynner oppgaver å skrive skitne data til disken for å sikre at det tømmer minnebufferen.  Disse kan ha innvirkning på ytelsen til minne og CPU-intensive applikasjoner og krever innstilling av administratorer og / eller utviklere.

Ved hjelp av gratis kommando for å se bruk av hurtigbuffer

Vi kan bruke den gratis kommandoen fra kommandolinjen for å analysere systemminnet og mengden minne som er allokert til caching.  Se kommando 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 genererer omtrent 100 MB tilfeldige data og legger deretter ti eksemplarer av filen sammen til en storfil.

# dd if = / dev / random of = / root / data_file count = 1400000
# for i i 'seq 1 10'; gjør ekko $ i; kattedatafil >> storfil; ferdig

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

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

Vi kan se at buffercache-bruken har økt fra 667 til 1735 Megabyte, en økning på omtrent 1 Gigabyte i bruken av buffercache.

Proc Sys VM Drop Cache-kommando

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

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

Vi kan se ovenfor at flertallet av bufferbuffertildelingen ble frigjort med denne kommandoen.

Eksperimentell bekreftelse på at Drop Caches fungerer

Kan vi foreta en ytelsesvalidering av å bruke hurtigbufferen 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 time det med tid kommando.  Vi gjør denne kommandoen umiddelbart etter at du har tømt hurtigbufferen med kommandoene ovenfor.

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

Boom!  Det tok bare .2 sekunder sammenlignet med 8.4 sekunder på å lese den når filen ikke ble hurtigbufret.  For å bekrefte, la oss gjenta dette igjen ved først å tømme hurtigbufferen og deretter lese filen to ganger.

Det fungerte perfekt som forventet.  8.5 sekunder for ikke-hurtigbufret lese og .2 sekunder for hurtiglagret lesing.

Konklusjon

Sidebufferen aktiveres automatisk på Linux-systemer og vil gjøre IO transparent raskere ved å lagre nylig brukte data i hurtigbufferen.  Hvis du vil tømme hurtigbufferen manuelt, kan du enkelt gjøre det ved å sende en ekkokommando til / proc-filsystemet som indikerer 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 eksperimentell validering av hurtigbufferens oppførsel før og etter spyling ble også vist.

Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...
Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...