Hvordan bruke den gratis kommandoen på Linux

Linux free-kommandoen viser hvor mye av datamaskinens minne som er i bruk og hvor mye som fortsatt er tilgjengelig for programmer å bruke. Utgangen kan være forvirrende for uinnvidde, men vi viser deg hvordan du forstår det.

Den gratis kommandoen

Gratis-kommandoen skriver ut et raskt sammendrag av minnebruk i et terminalvindu. den har ikke mange alternativer eller lurer opp ermene, og det tar ikke mye tid eller krefter å lære å bruke den. Å lære å tolke informasjonen den gir riktig, er imidlertid en annen historie. Det er for lett å bli forvirret av det gratis forteller deg.

Delvis skyldes dette terminologi – som forskjellen mellom «gratis» og «tilgjengelig» – og delvis på grunn av den indre funksjonen til minnet og filsystembehandlingsrutinene til Linux-kjernen. Hvis du har ledig minne som kjernen kan gjøre god bruk av, vil den låne den til sine egne formål. Helt til du trenger den tilbake.

Vi skal ta et dykk inn i de underliggende mekanismene og datarutinene slik at du kan sette pris på hva som skjer under panseret, og hvordan det hele påvirker bruken av tilfeldig tilgangsminne (RAM).

De gratis kolonnene

La oss fyre opp uten alternativer og se hva vi får:

free

Det er pakket rundt på en stygg måte. På datamaskinen din vil du kunne strekke terminalvinduet. Her er resultatet i en penere tabell:

        total   used   free   shared buff/cache  available
Mem:  2038576 670716 327956    14296    1039904    1187160
Swap: 1557568 769096 788472

Tallene er gitt i kibibyte, som er 1024 byte. På Manjaro er gratiskommandoen aliasert som free -m. Dette tvinger fri til bruk mebibyte, som er 1 048 576 byte. På andre distribusjoner er standarden kibibyte.

Den øverste linjen rapporterer om systemminnet, den nederste linjen rapporterer om bytteplass. Vi introduserer kolonnene her, og ser på dem mer detaljert snart. Kolonnene for minnelinjen er som følger:

Totalt: Den totale mengden fysisk RAM installert på datamaskinen.
Brukt: Dette beregnes av Total-(Free+Buffers+Cache).
Ledig: Mengden ubrukt minne. Hvorfor vises ikke Total=Brukt+Gratis? Vi skal forklare det snart.
Delt: Minne som brukes av tmpfs-filsystemet.
Buff/cache: Minne brukt for buffere og cache.
Tilgjengelig: Dette er et estimat av minnet som er tilgjengelig for serviceminneforespørsler fra applikasjoner, annen fungerende programvare på datamaskinen din, for eksempel din grafiske skrivebordsmiljø og Linux-kommandoer.

For byttelinjen er kolonnene:

Totalt: Størrelsen på swap-partisjonen eller swap-filen.
Brukt: Mengden bytteplass i bruk.
Gratis: Den gjenværende (ubrukte) bytteplassen

Den brede skjermen

For å skille Buff/cache-figurene i sine egne kolonner, bruk -w (wide)-alternativet:

free -w

Dette er resultatet. I stedet for en Buff/cache-kolonne får vi en Buffers-kolonne og en Cache-kolonne. Her er tallene i en tabell:

        total   used   free   shared  buffers   cache  available
Mem:  2038576 683724 265708    14660    94568  994596    1160420
Swap: 1557568 761416 796152

La oss se hva figurene i kolonnene representerer.

  Få sunne påminnelser på Linux-skrivebordet ved å bruke Stretchly

Totalkolonnen

Dette er den enkle. Det er hvor mye RAM du har installert på hovedkortet. Dette er den dyrebare ressursen som alle de løpende prosessene kjemper om. De ville i det minste slåss hvis kjernen ikke var dommer.

Forresten, stedet hvor free samler informasjonen sin fra er /proc/meminfo pseudo-filen. Du kan ta en titt på denne filen selv med følgende kommando:

less /proc/meminfo

Utdataene er en enkelt liste over navn og verdier.

Den brukte kolonnen

Det er her det begynner å bli interessant.

Brukt-figuren representerer det du sannsynligvis forventer, pluss en haug med andre ting. Dette er minnet som er allokert til prosesser, tatt av brukerprogrammer og brukt av ting som GNOME eller KDE skrivebordsmiljøer. Ingen overraskelser der. Men det inkluderer også Buffer- og Cache-figurene.

RAM som ikke brukes til noe er bortkastet RAM. Kjernen bruker ekstra RAM for å holde cacher og buffere som lar den operere mer effektivt. Så denne RAM-en brukes til noe av kjernen, men ikke av noe i brukerplass.

Hvis det mottas en forespørsel om minne som bare kan betjenes ved å gi fra seg noe av RAM-en som kjernen bruker for sine egne enheter, så er det det som skjer sømløst. Å frigjøre denne RAM-en og bruke den til andre applikasjoner vil ikke påvirke korrekt drift av Linux-systemet ditt – ingenting kommer til å gå i stykker – men det kan påvirke ytelsen til systemet.

Så denne kolonnen betyr egentlig «all RAM som er i bruk av noe, selv om den kan gjenvinnes umiddelbart.»

Den frie kolonnen

Denne kolonnen inneholder tallet for mengden RAM som ikke brukes av noe. Fordi Brukt-kolonnen inneholder buffer- og cache-tallene, er det ikke uvanlig at perfekt fungerende Linux-systemer har svært lite RAM oppført som «gratis».

Det er ikke nødvendigvis en dårlig ting, og betyr nesten helt sikkert at du har et helt normalt fungerende system som regulerer bruken av RAM riktig. Det vil si at RAM-en brukes av applikasjoner og andre prosesser for brukerrom og av kjernen i dens forsøk på å gjøre datamaskinens ytelse så god som mulig.

Den delte kolonnen

Figuren i Delt-kolonnen representerer minne viet til å holde tmpfs RAM-baserte filsystemer. Dette er filsystemer som er opprettet i minnet for å lette effektiv funksjon av operativsystemet. For å se hvilke tmpfs-filsystemer som finnes, bruk df kommando.

Alternativene vi bruker er:

-h (menneske): Bruk fornuftige enheter som passer best.
–total: Vis en linje med totaler nederst på utgangen.
–type=tmpfs: Rapporter kun om tmpfs-filsystemene.

df -h --total --type=tmpfs

Det første som slår deg når du ser på disse verdiene er at de er mange ganger større enn tallet i Delt-kolonnen. Størrelsene som vises her er de maksimale størrelsene på disse filsystemene. I virkeligheten opptar de bare så mye minne som de trenger. Figuren i Delt-kolonnen er den man skal tro for minnebruk.

Hva inneholder disse filsystemene? Her er en rask oversikt:

/run: Dette inneholder mange midlertidige filer som f.eks PID-filer, systemd journalføring som ikke trenger å bli bevart på tvers av omstarter, informasjon å gjøre med Unix-domene sockets, FIFOerog ledelsen av demoner.
/dev/shm: Dette tillater implementering av POSIX-kompatibel minnehåndtering på Debian og Debian-avledede Linux-distribusjoner.
/run/lock: Dette inneholder låsefiler. Disse brukes som indikatorer for å fortelle systemet at en fil eller annen delt ressurs er i bruk. De inneholder PID for prosessen bruke den ressursen.
/sys/fs/cgroup: Dette er et sentralt element i ordningen som administrerer kontrollgrupper. Prosesser er organisert i hierarkiske grupper i henhold til hvilke typer ressurser de bruker. Det gjør at bruken av ressursene til prosessene kan overvåkes og begrenses.
/run/user/121: Dette er en mappe opprettet av pam_systemd for å lagre midlertidige filer for en bruker. I dette tilfellet har brukeren en ID på 121. Merk at «brukeren» kan være en vanlig bruker, en demon eller en annen prosess.
/run/user/1000: Dette er en mappe opprettet av pam_systemd for å lagre midlertidige filer for denne brukeren, som har bruker-IDen på 1000. Dette er den nåværende brukeren, brukeren dave.

  Hvordan bruke Shazam på Linux-skrivebordet med SongRec

Buffer- og Cache-kolonnene

Buffer- og Cache-kolonnene vises bare hvis du har brukt -w (wide). Uten – w-alternativet blir tallene fra disse to kolonnene kombinert til Buff/cache-kolonnen.

Disse to minneområdene samhandler og er avhengige av hverandre. Bufferområdet inneholder (hovedsakelig) data som er lest fra harddisken. Den beholdes i tilfelle du trenger å få tilgang til den igjen. Det er raskere å gjøre det ved å hente disse dataene fra hurtigbufferen enn å lese dem tilbake fra harddisken. Hurtigbufferen kan også inneholde data som er endret, men som ennå ikke er skrevet tilbake til harddisken, eller verdier som er beregnet og ennå ikke lagret i en fil.

For å holde styr på de forskjellige filfragmentene og databeholderne, bygger kjernen en indeks til bufferminneområdet, i bufferminneområdet. Buffere er deler av minnet som inneholder diskblokk og andre informasjonsstrukturer. Disse inneholder data om dataene som lagres i cache-minneområdet. Så bufferne er metadata for cachen.

Når en forespørsel om fillesing gjøres, leser kjernen dataene i bufferdatastrukturene på jakt etter filen eller filfragmentet som har blitt forespurt. Hvis den blir funnet, betjenes forespørselen fra bufferminneområdet pekt på av bufferdatastrukturene. Hvis den ikke er til stede i hurtigbufferen – og det er ikke i metadataene i bufferminneområdet – leses filen fra harddisken.

Strukturene i bufferminneområdet er:

Bufferhoder: Hver buffer er beskrevet i en datablokk kalt et bufferhode. Dessuten, hvis dataene i blokken endres og den tilhørende minnesiden «skitten», sporer beskrivelsen behovet for å skrive dataene tilbake til harddisken.
Inoder: Inoder holde metadata om filer og katalogerinkludert hvor de er på harddisken (eller det virtuelle filsystemet), filstørrelsen og tidsstemplene til filen.
Dentries: En dentry (katalogoppføring) er en struktur som inneholder katalogoppføringsinformasjon. Tenk på disse som en liste over inoder for filene og katalogene i en katalog.

Du kan se hvorfor det er fornuftig å kondensere minnet som brukes for buffer- og cache-minneområdene til en enkelt Buff/cache-kolonne. De er som to deler av samme ting. Bufferminneområdet ville være ubrukelig uten at bufferminneområdet gir en indeks til innholdet.

Den tilgjengelige kolonnen

Den tilgjengelige kolonnen er summen av Gratis-kolonnen pluss delene av Buffer- og Cache-kolonnene (eller Buff/cache-kolonnen) som kan gis fra seg umiddelbart. Tilgjengelig-kolonnen er et estimat, ikke et eksakt tall. Det er et informert og nøyaktig estimat, men det bør ikke tas like nøyaktig til siste byte.

  Hvordan installere Calligra Words på Linux

Endre skjermenhetene

For å endre enheter som gratis viser tallene i, bruk ett av følgende alternativer.

-b: Viser verdiene i byte.
-k: Viser verdiene i kibibyte (som er standard).
-m: Viser verdiene i mibibyte.
-g: Viser verdiene i gibibyte.
-h: Viser verdiene i fornuftige, best passende enheter (lesbare for mennesker).

For å bruke verdier som kan leses av mennesker, bruk -h-alternativet:

free -h

free vil bruke den mest passende enheten for hver verdi. Som du kan se, vises noen av verdiene i MiB, og noen av dem er i GiB.

Viser en total

Alternativet –total fører til at free viser en totallinje som summerer verdiene fra Total-, Used- og Free-kolonnene på Mem- og Swap-linjene.

free -h --total

Tellealternativet

Alternativet -c (telling) forteller gratis å kjøre et visst antall ganger, med en pause på ett sekund mellom hver gang. For å kjøre gratis to ganger, bruk denne kommandoen:

free -h -c 2

Løper gratis kontinuerlig

Hvis du ønsker å se effekten en bestemt applikasjon har på minnebruken din, kan det være nyttig å ha gratis kjøring kontinuerlig. Dette lar deg løpe gratis i et terminalvindu mens du starter, bruker og deretter lukker programmet du undersøker.

Alternativet -s (sekunder) bestemmer varigheten av pausen mellom hver frikjøring. For å ha gratis kjøring kontinuerlig med tre sekunders pause mellom hver oppdatering, bruk denne kommandoen:

free -s 3

Trykk Ctrl+C for å stoppe prosessen og gå tilbake til ledeteksten.

Kombinere Count og Seconds alternativene

For å ha fri kjøring med en spesifisert pause mellom hver oppdatering, men stoppe etter et visst antall rapporter, kombinerer du alternativene -s (sekunder) og -c (tell). For å kjøre fri fem ganger med en pause på to sekunder mellom hver oppdatering, bruk denne kommandoen:

free -s 2 -c 5

Etter at de fem oppdateringene har dukket opp, avsluttes prosessen selv, og du kommer tilbake til ledeteksten.

Skille lavt og høyt minne

Dette er til liten nytte i dag, men hvis du kjører Linux på en 32-bits datamaskin, kan det vise seg nyttig. Den skiller minnebruken fra lite minne og høyt minne.

På et 32-bits Linux-basert operativsystem kan CPUen adressere maksimalt 4 GB minne. Minnet er delt inn i lite minne og høyt minne. Lite minne er direkte kartlagt til kjernens del av adresserommet. Høyt minne har ingen direkte kjernetilordning. Høyt minne er vanligvis noe over 896 MB.

Dette betyr at selve kjernen (inkludert dens aktive moduler) bare kan bruke lite minne. Brukerprosesser – alt som ikke er selve kjernen – kan potensielt gjøre bruk av lavt og høyt minne.

På en 64-bits datamaskin vil det ikke vises noen verdier for høyt minne:

free -h -l

Minner er laget av dette

En rask oppsummering:

Totalt: Mengden RAM installert i systemet ditt.
Brukt: Lik Total-(Gratis+buffere+buffer).
Ledig: Mengden minne som er helt ubrukt av noe.
Delt: Minne tatt av tmpfs-filsystemene.
Buffer: Datastrukturene som vedlikeholdes for å gi en indeks for alt som er lagret i Cache.
Cache: Data lest fra harddisken, modifiserte data som venter på å bli skrevet tilbake til harddisken, og andre beregnede verdier.
Tilgjengelig: Hva er egentlig gratis. Et estimat av minnet i Free, Buffer og Cache som kan brukes til å tilfredsstille en minneforespørsel.