Sådan bruger du vmstat-kommandoen på Linux

Din Linux- eller macOS-computer bruger virtuel hukommelse. Opdag, hvordan det påvirker dit systems brug af fysisk hukommelse, CPU og harddiskressourcer.

Hvad er virtuel hukommelse?

Din computer er udstyret med en begrænset mængde fysisk hukommelse kaldet Random Access Memory (VÆDDER). Denne RAM skal administreres af kernen og deles mellem operativsystemet og de programmer, der tilfældigvis kører. Hvis disse kombinerede krav kræver mere hukommelse end der er fysisk installeret på din computer, hvad kan kernen så gøre?

Linux og Unix-lignende operativsystemer såsom macOS kan bruge plads på din harddisk til at hjælpe dem med at håndtere hukommelsesbehov. Et reserveret område med harddiskplads kaldet “bytteplads” kan bruges, som om det var en udvidelse af RAM. Dette er virtuel hukommelse.

Linux-kernen kan skrive indholdet af en hukommelsesblok ind i swap-plads og frigive det område af RAM til brug af en anden proces. Den udskiftede – også kaldet “sidet” -hukommelse kan hentes fra byttepladsen og gendannes til RAM, når det er påkrævet.

Naturligvis er adgangshastigheden for udsøgt hukommelse langsommere end hastigheden for hukommelsen i RAM. Og det er ikke den eneste afvejning. Mens virtuel hukommelse giver Linux en måde at håndtere sine hukommelseskrav på, vil brugen af ​​virtuel hukommelse medføre øgede byrder andre steder på computeren.

Din harddisk skal udføre flere læsninger og skrivninger. Kernen – og dermed CPU’en – skal udføre mere arbejde, da den skifter hukommelse ud, bytter hukommelse ind og holder alle pladerne i gang for at tilfredsstille hukommelsesbehovene for de forskellige processer.

Linux giver dig mulighed for at overvåge al denne aktivitet i form af kommandoen vmstat, som rapporterer om statistik over virtuel hukommelse.

vmstat-kommandoen

Hvis du skriver vmstat som en kommando uden parametre, vil den vise dig et sæt værdier. Disse værdier er gennemsnittet for hver af statistikkerne, siden din computer sidst blev genstartet. Disse tal er ikke et øjebliksbillede af værdierne “lige nu.”

vmstat

En kort tabel med værdier vises.

Der er kolonner med overskriften Procs, Memory, Swap, IO, System og CPU. Den sidste kolonne (længst til højre) indeholder data vedrørende CPU’en.

Her er en liste over dataelementerne i hver kolonne.

Proc

r: Antallet af kørebare processer. Disse er processer, der er blevet lanceret og enten kører eller venter på deres næste tidsudskårne burst af CPU-cyklusser.
b: Antallet af processer i uafbrydelig søvn. Processen er ikke i dvale, den udfører et blokerende systemopkald, og den kan ikke afbrydes, før den har fuldført sin aktuelle handling. Typisk er processen en enhedsdriver, der venter på, at en eller anden ressource kommer fri. Eventuelle afbrydelser i kø for denne proces håndteres, når processen genoptager sin sædvanlige aktivitet.

  Sådan installeres Bohdi Linux

Hukommelse

swpd: mængden af ​​brugt virtuel hukommelse. Med andre ord, hvor meget hukommelse er blevet skiftet ud.,
ledig: mængden af ​​ledig (i øjeblikket ubrugt) hukommelse.
buff: mængden af ​​hukommelse, der bruges som buffere.
cache: mængden af ​​hukommelse, der bruges som cache.

Bytte rundt

si: Mængde af virtuel hukommelse byttet ind fra swap-plads.
så: Mængden af ​​virtuel hukommelse byttet ud for at bytte plads.

IO

bi: Blokke modtaget fra en blokenhed. Antallet af datablokke, der bruges til at bytte virtuel hukommelse tilbage til RAM.
bo: Blokke sendt til en blokenhed. Antallet af datablokke, der bruges til at skifte virtuel hukommelse ud af RAM og ind i swap-plads.

System

in: Antallet af afbrydelser pr. sekund, inklusive uret.
cs: Antallet af kontekstskift pr. sekund. Et kontekstskift er, når kernen skifter fra systemtilstandsbehandling til brugertilstandsbehandling.

CPU

Disse værdier er alle procenter af den samlede CPU-tid.

us: Tid brugt på at køre ikke-kernekode. Altså hvor meget tid der bruges i brugertidsbehandling og i pæn tidsbehandling.
sy: Tid brugt på at køre kernekode.
id: Tid brugt inaktiv.
wa: Tid brugt på at vente på input eller output.
st: Tid stjålet fra en virtuel maskine. Dette er den tid, en virtuel maskine skal vente på, at hypervisoren er færdig med at servicere andre virtuelle maskiner, før den kan vende tilbage og tage sig af denne virtuelle maskine.

Brug af et tidsinterval

Vi kan få vmstat til at levere regelmæssige opdateringer til disse tal ved at bruge en forsinkelsesværdi. Forsinkelsesværdien angives i sekunder. For at få statistikken opdateret hvert femte sekund, ville vi bruge følgende kommando:

vmstat 5

Hvert femte sekund tilføjer vmstat endnu en linje data til tabellen. Du skal trykke på Ctrl+C for at stoppe dette.

Brug af en tælleværdi

Brug af en for lav forsinkelsesværdi vil lægge yderligere belastning på dit system. Hvis du skal have hurtige opdateringer for at forsøge at diagnosticere et problem, anbefales det, at du bruger en tælleværdi samt en forsinkelsesværdi.

Tælleværdien fortæller vmstat, hvor mange opdateringer der skal udføres, før den afsluttes, og returnerer dig til kommandoprompten. Hvis du ikke angiver en tælleværdi, kører vmstat, indtil den stoppes af Ctrl+C.

For at få vmstat til at levere en opdatering hvert femte sekund – men kun for fire opdateringer – brug følgende kommando:

vmstat 5 4

Efter fire opdateringer stopper vmstat af sig selv.

  Sådan spiller du Stellaris på Linux

Ændring af enhederne

Du kan vælge at få vist hukommelses- og swap-statistikken i kilobyte eller megabyte ved at bruge -S (enhed-karakter) mulighed. Dette skal efterfølges af en af ​​k , K , m eller M. Disse repræsenterer:

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

For at få statistikken opdateret hvert 10. sekund med hukommelses- og swap-statistikken vist i megabyte, skal du bruge følgende kommando:

vmstat 10 -S M

Hukommelses- og swap-statistikken vises nu i megabyte. Bemærk, at -S-indstillingen ikke påvirker IO-blokstatistikken. Disse vises altid i blokke.

Aktiv og inaktiv hukommelse

Hvis du bruger muligheden -a (aktiv) erstattes buff- og cachehukommelseskolonnerne med “inakte” og “aktive” kolonner. Som de ville foreslå, viser disse mængden af ​​inaktiv og aktiv hukommelse.

For at se disse to kolonner i stedet for buff- og cache-kolonnerne skal du inkludere -a-indstillingen, som vist:

vmstat 5 -a -S M

De inakte og aktive kolonner påvirkes af indstillingen -S (enhedskarakter).

Forgafler

-f-kontakten viser antallet af gafler, der er sket, siden computeren blev startet op.

Med andre ord viser dette antallet af opgaver, der er blevet startet (og, for størstedelen af ​​dem, lukket igen), siden systemet blev startet. Hver proces, der blev startet fra kommandolinjen, ville øge dette tal. Hver gang en opgave eller proces afføder eller kloner en ny opgave, vil dette tal stige.

vmstat -f

Gaffeldisplayet opdateres ikke.

Viser Slabinfo

Kernen har sin egen hukommelsesstyring at bekymre sig om såvel som hukommelsesstyringen for operativsystemet og alle applikationerne.

Som du måske forestiller dig, tildeler og deallokerer kernen hukommelse igen og igen for de mange forskellige typer dataobjekter, som den skal håndtere. For at gøre dette så effektivt som muligt, bruger det et system kaldet plader. Dette er en form for caching.

Hukommelse allokeret, brugt og ikke længere påkrævet til en specifik type kernedataobjekt kan genbruges til et andet dataobjekt af samme type uden at hukommelsen deallokeres og omallokeres. Tænk på plader som præ-allokerede, lavet efter mål, segmenter af RAM til kernens egne behov.

For at se statistikken for pladerne, brug muligheden -m (plader). Du skal bruge sudo, og du vil blive bedt om din adgangskode. Da outputtet kan være ret langvarigt, rører vi det mindre igennem.

sudo vmstat -m | less

Outputtet har fem kolonner. Disse er:

Cache: Navnet på cachen.
num: Antallet af aktuelt aktive objekter i denne cache.
total: Det samlede antal tilgængelige objekter i denne cache.
størrelse: Størrelsen af ​​hvert objekt i cachen.
sider: Det samlede antal hukommelsessider, der har (mindst) ét objekt i øjeblikket tilknyttet denne cache.

Tryk på q for at forlade mindre.

Visning af hændelsestællere og hukommelsesstatistikker

For at vise en side med hændelsestællere og hukommelsesstatistik skal du bruge -s (stats) muligheden. Bemærk, at det er et lille “s”.

vmstat -s

Selvom statistikkerne, der rapporteres, stort set er de samme som de oplysninger, der udgør standard vmstat-output, er nogle af dem opdelt mere detaljeret.

  Sådan installeres Mailspring på Linux

For eksempel kombinerer standardoutputtet både den gode og den ikke-pæne bruger-CPU-tid i “os”-kolonnen. Displayet -s (statistik) viser disse statistikker separat.

Viser diskstatistik

Du kan få en lignende liste over diskstatistik ved hjælp af -d (disk) mulighed.

vmstat -d | less

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

IO er kolonnen længst til højre. Bemærk, at sek-kolonnen i IO måles i sekunder, men den tidsbaserede statistik i læse- og skrivekolonnerne måles i millisekunder.

Dette er, hvad kolonnerne betyder:

Læser

total: Det samlede antal disklæsninger.
flettet: Det samlede antal grupperede læsninger.
sektorer: Det samlede antal af sektorer, der er blevet læst ind.
ms: Samlet antal af tid i millisekunder, der blev brugt til at læse data fra disken.

skriver

total: Det samlede antal diskskrivninger.
sammenlagt: Det samlede antal grupperede skriverier.
sektorer: Det samlede antal sektorer, der er skrevet til.
ms = Samlet antal af tid i millisekunder, der blev brugt til at skrive data til disken.

IO

cur: Antal aktuelle disk læser eller skriver.
sek: Tid brugt i sekunder for enhver igangværende læsning eller skrivning.

Viser oversigt over diskstatistik

Brug indstillingen -D (disk-sum) for at se en hurtig visning af oversigtsstatistikker for din diskaktivitet. Bemærk det store “D”.

vmstat -D

Antallet af diske kan se unormalt højt ud. Computeren, der bruges til at undersøge denne artikel, kører Ubuntu. Med Ubuntu, hver gang du installerer et program fra en Snap, oprettes et squashfs pseudo-filsystem, som er knyttet til en /dev/loop-enhed.

Irriterende nok regnes disse enhedsindgange som harddiskenheder af mange af Linux-kommandoer og -værktøjer.

Viser partitionsstatistik

For at se statistik relateret til en specifik partition, skal du bruge -p (partition)-indstillingen og angive partitions-id’et som en kommandolinjeparameter.

Her skal vi se på partitionen sda1. Et ciffer angiver, at dette er den første partition på enhedens sda, som er hovedharddisken til denne computer.

vmstat -p sda1

De returnerede oplysninger viser det samlede antal disklæsninger og diskskrivninger til og fra den partition, og antallet af sektorer, der er inkluderet i disklæse- og diskskrivningshandlinger.

Et kig under motorhjelmen

Det er altid godt at vide, hvordan man løfter emhætten og se, hvad der foregår nedenunder. Nogle gange vil du prøve at løse problemer, nogle gange vil det være ude af interesse, fordi du gerne vil vide, hvordan din computer tikker.

vmstat kan give dig et væld af nyttige oplysninger. Nu ved du, hvordan du får adgang til det, og hvad det betyder. Og advaret er forearmed – når du har brug for at smøge ærmerne op og lave nogle diagnoser, vil du vide, at du har vmstat på din side.