Forudsætninger:
For at udføre de trin, der er vist i denne vejledning, skal du bruge følgende komponenter:
- Et korrekt konfigureret Linux-system. Til testformål, overveje at bruge en Linux VM .
- Adgang til en ikke-root-bruger med sudo-privilegium
- Grundlæggende forståelse af kommandolinjegrænsefladen
Virtuel hukommelse i Linux
Den fysiske hukommelse, også kaldet RAM, er begrænset i mængde. Kernen er ansvarlig for at distribuere denne plads til alle de kørende programmer. Alle de kørende programmer (inklusive OS) ligger i RAM.
Men hvis efterspørgslen efter hukommelse er højere end dens tilgængelige hukommelse, styrter det simpelthen systemet (eller programmet vil bede om mere hukommelsesplads). I de fleste situationer er det et uønsket resultat. Det er her, virtuel hukommelse kommer ind.
Virtuel hukommelse refererer til en dedikeret diskplads på din HDD/SSD, der kan fungere som ekstra hukommelse i svære situationer. Fordi det fungerer som RAM-plads (men egentlig ikke), betragtes det som 'virtuelt'. I UNIX/Linux-systemer omtales disse rum som swap-pladser.
Linux-kernen flytter hukommelsesblokkene til swap-plads og henter dem tilbage til RAM efter behov.
Ydeevnen af den virtuelle hukommelse er absolut langsommere end den fysiske hukommelse og er direkte proportional med lagringsenhedens ydeevne. I specifikke hardwarekonfigurationer (f.eks. ved hjælp af NVMe SSD) kan ydeevnen dog svare til RAM.
Vmstat-kommandoen
Kommandoen 'vmstat' er et overvågningsværktøj, der rapporterer forskellige oplysninger om den virtuelle hukommelse. Den er tilgængelig på alle Linux-systemer som en del af 'sysstat'-pakken.
Kommandostrukturen for 'vmstat' er som følger:
$ vmstat < muligheder > < forsinke > < tælle >Grundlæggende brug
Hvis det køres uden nogen parameter, udskriver 'vmstat' systemoplysningerne siden sidste opstart:
$ vmstat
Outputtet er arrangeret i seks segmenter:
- processer : Statistik over processer, der kører i øjeblikket
- r : Antal aktive processer
- b : Antal soveprocesser
- hukommelse : Statistik om hukommelsesforbrug
- swpd : Samlet mængde virtuel hukommelse (swap plads)
- gratis : Ledig bytteplads
- buff : Mængden af swap-plads, der bruges som en midlertidig bufferhukommelse
- cache : Samlet cachehukommelse
- bytte rundt : Statistik om byttepladsen
- Ja : Indbyttehastighed
- så : Udskiftningshastighed
- det her : I/O statistik
- med en : Antal blokke modtaget fra blokenhed(erne)
- være : Antal blokke sendt til blokeringsenhed(er)
- system : Statistik om skemalægning
- i : Systemafbrydelser tæller
- cs : Rate af kontekstskift
- cpu : Diverse CPU-statistikker
- os : CPU bruger tid på ikke-kerne processer
- og : CPU bruger tid på kerneprocesser
- id : CPU bruger tid på tomgang
- af : CPU'en bruger tid på at vente på, at I/O-operationer er fuldført
- st : CPU-tid brugt af en virtuel maskine
Udskiftning af displayenhed
Som standard rapporterer 'vmstat' hukommelsesværdierne i kilobyte. For at ændre enheden skal du bruge ' -S ' flag:
$ vmstat -S < argument >
Her udskriver 'vmstat' værdierne i megabyte.
Der er flere tilgængelige hukommelsesenheder:
- M : 1048576 bytes (2^20 byte)
- m : 1000000 bytes (1000 kilobyte)
- K : 1024 bytes (1 megabyte)
- k : 1000 bytes (1 kilobyte)
Løbende opdatering af statistik
Som standard udskriver 'vmstat' rapporten én gang. Vi kan dog instruere 'vmstat' til at levere kontinuerlige rapporter med et bestemt tidsinterval (i sekunder).
Kommandostrukturen er som følger:
$ vmstat < forsinke >For eksempel, for at få den opdaterede statistik hvert andet sekund, er kommandoen som følger:
$ vmstat 2
Outputtet stopper ikke, medmindre det manuelt afsluttes med 'Ctrl + C'.
Alternativt kan vi angive 'vmstat' for at give statistikken for et bestemt antal gange:
$ vmstat < forsinke > < tælle >For eksempel, for at få den opdaterede statistik hvert 2. sekund 5 gange, ser kommandoen sådan ud:
$ vmstat 2 5
Aktiv og inaktiv hukommelse
Aktiv hukommelse refererer til den hukommelsesplads, der i øjeblikket bruges af en proces. På den anden side refererer inaktiv hukommelse til den hukommelsesplads, der blev tildelt en proces, der ikke længere kører.
Ved at bruge 'vmstat' kan vi kontrollere mængden af aktive og inaktive hukommelser, der bruges:
$ vmstat -en
Her er kolonnerne 'buff' og 'cache' erstattet af henholdsvis 'inakte' og 'aktive' kolonner.
Hukommelse og planlægning
For at få en mere detaljeret rapport om hukommelse og planlægning skal du bruge følgende kommando:
$ vmstat -s
Her:
- Afsnit 1: Dette afsnit omhandler de grundlæggende systemoplysninger som samlet fysisk hukommelse, aktiv/inaktiv hukommelse, ledig/buffer/cache-hukommelse osv.
- Afsnit 2: Forskellige CPU-statistikker
- Ikke-pæne CPU-tikker : Hvor mange gange de højprioriterede processer brugte CPU'en.
- Gode CPU-tikker : Antallet af gange, de lavere prioritetsprocesser brugte CPU'en.
- System CPU tikker : Antallet af gange kerneprocesserne brugte CPU'en.
- Inaktiv CPU tikker : Antallet af gange, CPU'en har været inaktiv.
- IO-vent CPU tikker : Antallet af gange, CPU'en venter på I/O-styring.
- IRQ : Antallet af gange, CPU modtog afbrydelsesanmodningerne.
- softirq : Antallet af gange, CPU'en modtog softwareafbrydelsesanmodningerne.
- stjålne CPU-flåter : Antallet af gange, VM'er stjal CPU-tiden.
- Afsnit 3: Hukommelsessøgestatistikker
- Afsnit 4: Hændelsestællere
Gafler siden Boot
Forks refererer til processer, der blev affødt af eksisterende processer. For at få statistikken over gaffelantal skal du køre følgende kommando:
$ vmstat -f
Disk- og partitionsstatistik
Kommandoen 'vmstat' kan også give information om diskaktivitet. For at få en hurtig oversigt over diskaktivitet skal du køre følgende kommando:
$ vmstat -D
For at få en mere detaljeret diskaktivitetsrapport (inklusive læse/skrive-statistik), skal du bruge følgende kommando i stedet:
$ vmstat -d
Her:
- Læser
- Total : Samlet antal disklæsninger
- fusioneret : Samlet antal gruppelæsninger
- sektorer : Samlet antal læste sektorer
- Frk : Samlet tid til at læse dataene fra disken (i millisekunder)
- Skriver
- Total : Samlet antal diskskrivninger
- fusioneret : Samlet gruppe skriver tæller
- sektorer : Samlet antal skrevne sektorer
- Frk : Samlet tid til at skrive til disken (i millisekunder)
- IO
- sætte : Samlet nuværende disk læser/skriver
- sek : Mængden af tid brugt på igangværende læse-/skriveoperationer (i sekunder)
Kommandoen 'vmstat' kan også generere rapporter for en specifik diskpartition. For at få partitionsrapporten skal du bruge følgende kommandostruktur:
$ vmstat -s < partition_id >
Pladestatistik
Pladeallokering er designet til at være en effektiv mekanisme til objekternes hukommelsesallokering. Sammenlignet med tidligere mekanismer tilbyder pladeallokering en reduktion af hukommelsesfragmentering (forårsaget af hukommelsesallokering og -deallokering).
For at kontrollere systemets pladestatistikker skal du bruge følgende 'vmstat'-kommando:
$ sudo vmstat -m
Bemærk, at det kræver en root-tilladelse for at se statistikken.
Her:
- Cache : Navnet på de cachelagrede data
- på en : Antal objekter, der er aktive i Num-cachen
- Total : Samlet antal objekter i en bestemt cache
- Størrelse : Størrelsen af de cachelagrede objekter
- sider : Antal hukommelsessider, der indeholder de cachelagrede objekter
Konklusion
I denne vejledning viste vi de forskellige måder at bruge kommandoen 'vmstat' på. Udover virtuel hukommelse kan 'vmstat' også rapportere om diskstatistikker, gafler, plader og mere.
Interesseret i at lære om andre systemovervågningsværktøjer? Lær mere om htop , dræbe , ps , etc.
God computer!