Slik bruker du vmstat-kommandoen på Linux

Linux- eller macOS-datamaskinen din bruker virtuelt minne. Oppdag hvordan det påvirker systemets bruk av fysisk minne, CPU og harddiskressurser.

Hva er virtuelt minne?

Datamaskinen din er utstyrt med en begrenset mengde fysisk minne kalt tilfeldig tilgangsminne (RAM). Dette RAM-minnet må administreres av kjernen og deles mellom operativsystemet og hvilke applikasjoner som tilfeldigvis kjører. Hvis disse kombinerte kravene krever mer minne enn det som er fysisk installert på datamaskinen din, hva kan kjernen gjøre?

Linux og Unix-lignende operativsystemer som macOS kan bruke plass på harddisken for å hjelpe dem med å håndtere minnebehov. Et reservert område med harddiskplass kalt «bytteplass» kan brukes som om det var en utvidelse av RAM. Dette er virtuelt minne.

Linux-kjernen kan skrive innholdet i en minneblokk til swap-plass, og frigjøre det området av RAM for bruk av en annen prosess. Det byttet ut – også kalt «sidet ut» -minnet kan hentes fra bytteplassen og gjenopprettes til RAM når det er nødvendig.

Selvfølgelig er tilgangshastigheten for utsøkt minne langsommere enn for minnet som holdes i RAM. Og det er ikke den eneste avveiningen. Mens virtuelt minne gir Linux en måte å håndtere minnekravene sine på, vil bruk av virtuelt minne øke belastningen andre steder på datamaskinen.

Harddisken må utføre flere lesinger og skrivinger. Kjernen – og dermed CPU – må gjøre mer arbeid ettersom den bytter ut minne, bytter inn minne og holder alle platene i sving for å tilfredsstille minnebehovene til de forskjellige prosessene.

Linux gir deg en måte å overvåke all denne aktiviteten i form av vmstat-kommandoen, som rapporterer om statistikk for virtuelt minne.

vmstat-kommandoen

Hvis du skriver vmstat som en kommando uten parametere, vil den vise deg et sett med verdier. Disse verdiene er gjennomsnittene for hver av statistikkene siden datamaskinen sist ble omstartet. Disse tallene er ikke et øyeblikksbilde av verdiene «akkurat nå».

vmstat

En kort tabell med verdier vises.

Det er kolonner som heter Procs, Memory, Swap, IO, System og CPU. Den siste kolonnen (mest høyre kolonne) inneholder data knyttet til CPU.

Her er en liste over dataelementene i hver kolonne.

Proc

r: Antall kjørbare prosesser. Dette er prosesser som har blitt lansert og som enten kjører eller venter på deres neste tidsdelte serie med CPU-sykluser.
b: Antall prosesser i uavbrutt søvn. Prosessen er ikke i dvale, den utfører et blokkerende systemanrop, og den kan ikke avbrytes før den har fullført sin nåværende handling. Vanligvis er prosessen en enhetsdriver som venter på at en ressurs skal frigjøres. Eventuelle avbrudd i kø for den prosessen håndteres når prosessen gjenopptar sin vanlige aktivitet.

  Hvordan installere og bruke Tor-nettleseren på Linux

Hukommelse

swpd: mengden virtuelt minne som brukes. Med andre ord, hvor mye minne som er byttet ut.,
ledig: mengden ledig (ubrukt for øyeblikket) minne.
buff: mengden minne som brukes som buffere.
cache: mengden minne som brukes som cache.

Bytte

si: Mengde virtuelt minne byttet inn fra bytteplass.
Så: Mengden av virtuelt minne byttet ut for å bytte plass.

IO

bi: Blokker mottatt fra en blokkeringsenhet. Antallet datablokker som brukes til å bytte virtuelt minne tilbake til RAM.
bo: Blokkerer sendt til en blokkeringsenhet. Antallet datablokker som brukes til å bytte virtuelt minne ut av RAM og inn i bytteplass.

System

in: Antall avbrudd per sekund, inkludert klokken.
cs: Antall kontekstbytter per sekund. En kontekstbryter er når kjernen bytter fra systemmodusbehandling til brukermodusbehandling.

prosessor

Disse verdiene er alle prosenter av den totale CPU-tiden.

us: Tid brukt på å kjøre ikke-kjernekode. Det vil si hvor mye tid som brukes i brukertidsbehandling og i hyggelig tidsbehandling.
sy: Tid brukt på å kjøre kjernekode.
id: Tid brukt inaktiv.
wa: Tid brukt på å vente på input eller output.
st: Tid stjålet fra en virtuell maskin. Dette er tiden en virtuell maskin må vente på at hypervisoren er ferdig med å betjene andre virtuelle maskiner før den kan komme tilbake og betjene denne virtuelle maskinen.

Bruke et tidsintervall

Vi kan la vmstat gi regelmessige oppdateringer til disse tallene ved å bruke en forsinkelsesverdi. Forsinkelsesverdien angis i sekunder. For å få statistikken oppdatert hvert femte sekund, bruker vi følgende kommando:

vmstat 5

Hvert femte sekund vil vmstat legge til en annen linje med data til tabellen. Du må trykke Ctrl+C for å stoppe dette.

Bruke en telleverdi

Hvis du bruker en for lav forsinkelsesverdi, vil det legge ytterligere belastning på systemet ditt. Hvis du trenger raske oppdateringer for å prøve å diagnostisere et problem, anbefales det at du bruker en telleverdi samt en forsinkelsesverdi.

Telleverdien forteller vmstat hvor mange oppdateringer som skal utføres før den avsluttes, og returnerer deg til ledeteksten. Hvis du ikke oppgir en telleverdi, vil vmstat kjøre til den stoppes av Ctrl+C.

For å få vmstat til å gi en oppdatering hvert femte sekund – men bare for fire oppdateringer – bruk følgende kommando:

vmstat 5 4

Etter fire oppdateringer stopper vmstat av seg selv.

  Hvordan installere Equilibrium GTK-temaet på Linux

Endre enhetene

Du kan velge å få minne- og byttestatistikken vist i kilobyte eller megabyte ved å bruke alternativet -S (enhetstegn). Dette må følges av en av k , K , m eller M. Disse representerer:

k:1000 byte
K: 1024 byte
m: 1000000 byte
M: 1048576 byte

For å få statistikken oppdatert hvert 10. sekund med minne- og byttestatistikken vist i megabyte, bruk følgende kommando:

vmstat 10 -S M

Minne- og byttestatistikken vises nå i megabyte. Merk at -S-alternativet ikke påvirker IO-blokkstatistikken. Disse vises alltid i blokker.

Aktivt og inaktivt minne

Hvis du bruker alternativet -a (aktiv) erstattes buffer- og cache-minnekolonnene med «inakte» og «aktive» kolonnene. Som de foreslår, viser disse mengden inaktivt og aktivt minne.

For å se disse to kolonnene i stedet for buff- og cache-kolonnene, inkluderer -a-alternativet, som vist:

vmstat 5 -a -S M

De inakte og aktive kolonnene påvirkes av alternativet -S (enhetstegn).

Gafler

-f-bryteren viser antall gafler som har skjedd siden datamaskinen ble startet opp.

Med andre ord viser dette antall oppgaver som har blitt lansert (og, for de fleste av dem, lukket igjen) siden systemet ble startet opp. Hver prosess som startes fra kommandolinjen vil øke dette tallet. Hver gang en oppgave eller prosess skaper eller kloner en ny oppgave, vil dette tallet øke.

vmstat -f

Gaffelskjermen oppdateres ikke.

Viser Slabinfo

Kjernen har sin egen minneadministrasjon å bekymre seg for, så vel som minneadministrasjonen for operativsystemet og alle applikasjonene.

Som du kanskje forestiller deg, tildeler og deallokerer kjernen minne om og om igjen for de mange forskjellige typer dataobjekter som den må håndtere. For å gjøre dette så effektivt som mulig, bruker den et system som kalles plater. Dette er en form for caching.

Minne tildelt, brukt og ikke lenger nødvendig for en bestemt type kjernedataobjekt kan gjenbrukes for et annet dataobjekt av samme type uten at minnet blir deallokert og omallokert. Tenk på plater som forhåndstildelte, laget etter mål, segmenter av RAM for kjernens egne behov.

For å se statistikken for platene, bruk alternativet -m (plater). Du må bruke sudo, og du vil bli bedt om passordet ditt. Siden utdataene kan være ganske langvarige, går vi gjennom det mindre.

sudo vmstat -m | less

Utgangen har fem kolonner. Disse er:

Cache: Navnet på cachen.
num: Antall aktive objekter i denne hurtigbufferen.
totalt: Det totale antallet tilgjengelige objekter i denne hurtigbufferen.
størrelse: Størrelsen på hvert objekt i hurtigbufferen.
sider: Det totale antallet minnesider som har (minst) ett objekt knyttet til denne hurtigbufferen.

Trykk på q for å forlate mindre.

Vise hendelsestellere og minnestatistikk

For å vise en side med hendelsestellere og minnestatistikk, bruk alternativet -s (statistikk). Merk at det er en liten «s».

vmstat -s

Selv om statistikken som rapporteres stort sett er den samme som informasjonen som utgjør standard vmstat-utdata, er noen av dem delt ut mer detaljert.

  Hvordan komprimere PNG-filer på Linux

For eksempel kombinerer standardutgangen både den hyggelige og den ikke-fine bruker-CPU-tiden i «oss»-kolonnen. Displayet -s (statistikk) viser denne statistikken separat.

Viser diskstatistikk

Du kan få en lignende liste over diskstatistikk ved å bruke alternativet -d (disk).

vmstat -d | less

For hver disk vises tre kolonner, disse er Reads, Writes og IO.

IO er kolonnen lengst til høyre. Merk at sek-kolonnen i IO måles i sekunder, men den tidsbaserte statistikken i lese- og skrivekolonnene måles i millisekunder.

Dette er hva kolonnene betyr:

Leser

total: Totalt antall diskavlesninger.
sammenslått: Totalt antall grupperte lesninger.
sektorer: Totalt antall sektorer som er lest inn.
ms: Totalt antall tid i millisekunder som ble brukt til å lese data fra disken.

skriver

total: Totalt antall diskskrivinger.
sammenslått: Totalt antall grupperte skriverier.
sektorer: Det totale antallet sektorer som er skrevet til.
ms = Totalt antall tid i millisekunder som ble brukt til å skrive data til disken.

IO

cur: Antall gjeldende disk som leser eller skriver.
sek: Tid brukt i sekunder for pågående lesing eller skriving.

Viser sammendrag av diskstatistikk

For å se en rask visning av sammendragsstatistikk for diskaktiviteten din, bruk alternativet -D (disksum). Legg merke til den store bokstaven «D».

vmstat -D

Antallet disker kan se unormalt høyt ut. Datamaskinen som brukes til å undersøke denne artikkelen, kjører Ubuntu. Med Ubuntu, hver gang du installerer en applikasjon fra en Snap, opprettes et squashfs pseudo-filsystem som er koblet til en /dev/loop-enhet.

Irriterende nok regnes disse enhetsoppføringene som harddiskenheter av mange av Linux-kommandoer og -verktøy.

Viser partisjonsstatistikk

For å se statistikk relatert til en bestemt partisjon, bruk -p (partisjon)-alternativet og oppgi partisjonsidentifikatoren som en kommandolinjeparameter.

Her skal vi se på partisjonen sda1. Tallet en indikerer at dette er den første partisjonen på enheten sda, som er hovedharddisken for denne datamaskinen.

vmstat -p sda1

Informasjonen som returneres viser det totale antallet disklesinger og diskskrivinger til og fra den partisjonen, og antall sektorer inkludert i disklese- og diskskrivehandlinger.

En titt under panseret

Det er alltid godt å vite hvordan man løfter panseret og se hva som skjer under. Noen ganger vil du prøve å løse problemer, noen ganger vil det være ute av interesse fordi du vil vite hvordan datamaskinen din tikker.

vmstat kan gi deg massevis av nyttig informasjon. Nå vet du hvordan du får tilgang til det og hva det betyr. Og advart er forearmed – når du trenger å brette opp ermene og gjøre litt diagnostikk, vet du at du har vmstat på din side.