A vmstat parancs használata Linuxon

Linux- vagy macOS-számítógépe virtuális memóriát használ. Fedezze fel, hogyan befolyásolja a rendszer fizikai memória-, CPU- és merevlemez-erőforrás-használatát.

Mi az a virtuális memória?

Számítógépe véges mennyiségű fizikai memóriával van felszerelve véletlen hozzáférésű memória (RAM). Ezt a RAM-ot a kernelnek kell kezelnie, és meg kell osztania az operációs rendszer és a futó alkalmazások között. Ha ezek az együttes igények több memóriát igényelnek, mint amennyi fizikailag telepítve van a számítógépen, mit tehet a kernel?

A Linux és Unix-szerű operációs rendszerek, mint például a macOS, felhasználhatják a merevlemezen lévő helyet a memóriaigények kezeléséhez. A merevlemez-terület fenntartott területe, az úgynevezett „csereterület” úgy használható, mintha a RAM kiterjesztése lenne. Ez a virtuális memória.

A Linux kernel egy memóriablokk tartalmát swap területre tudja írni, és felszabadítja azt a RAM régiót egy másik folyamat számára. A kicserélt – más néven „lapozott” – memória lekérhető a swap területről, és szükség esetén visszaállítható a RAM-ba.

Természetesen a lapozott memória elérési sebessége lassabb, mint a RAM-ban tárolt memóriaé. És nem ez az egyetlen kompromisszum. Míg a virtuális memória módot ad a Linux számára a memóriaigények kezelésére, a virtuális memória használata megnöveli a számítógép más részeinek terheit.

A merevlemeznek több olvasást és írást kell végeznie. A kernelnek – és így a CPU-nak – több munkát kell végeznie, mivel kicseréli a memóriát, felcseréli a memóriát, és forog minden lemezt, hogy kielégítse a különböző folyamatok memóriaigényét.

A Linux lehetőséget biztosít ennek a tevékenységnek a figyelésére a vmstat parancs formájában, amely jelentést készít virtuális memória statisztikák.

A vmstat parancs

Ha paraméterek nélküli parancsként írja be a vmstat parancsot, akkor megjelenik egy értékkészlet. Ezek az értékek az egyes statisztikák átlagai a számítógép legutóbbi újraindítása óta. Ezek a számok nem a „jelenlegi” értékek pillanatképei.

vmstat

Megjelenik az értékek rövid táblázata.

Vannak olyan oszlopok, amelyek Procs, Memory, Swap, IO, System és CPU fejlécűek. Az utolsó oszlop (legjobb oldali oszlop) a CPU-ra vonatkozó adatokat tartalmazza.

Itt található az egyes oszlopokban található adatelemek listája.

Proc

r: A futtatható folyamatok száma. Ezek olyan folyamatok, amelyeket elindítottak, és vagy futnak, vagy a következő, időszeletelt CPU-ciklusukra várnak.
b: A folyamatok száma a szünetmentes alvásban. A folyamat nem alszik, blokkoló rendszerhívást hajt végre, és addig nem szakítható meg, amíg az aktuális műveletet be nem fejezi. A folyamat általában egy eszközillesztő, amely arra vár, hogy valamilyen erőforrás felszabaduljon. Az adott folyamat sorba állított megszakításait a rendszer akkor kezeli, amikor a folyamat folytatja szokásos tevékenységét.

  Hol van a vezérlőpult Mac-en?

memória

swpd: a használt virtuális memória mennyisége. Más szóval, mennyi memória lett kicserélve.
ingyenes: a tétlen (jelenleg nem használt) memória mennyisége.
buff: a pufferként használt memória mennyisége.
gyorsítótár: a gyorsítótárként használt memória mennyisége.

Csere

si: A csereterületről becserélt virtuális memória mennyisége.
tehát: A virtuális memória mennyisége kicserélve a csereterületre.

IO

bi: blokkeszközről kapott blokkok. A virtuális memória RAM-ba való visszacseréléséhez használt adatblokkok száma.
bo: Blokkolás egy blokkeszközre küldött. A virtuális memória RAM-ból csereterületre cseréléséhez használt adatblokkok száma.

Rendszer

in: A megszakítások száma másodpercenként, beleértve az órát is.
cs: A kontextusváltások száma másodpercenként. A környezetváltás az, amikor a kernel rendszermódú feldolgozásról felhasználói módú feldolgozásra vált.

CPU

Ezek az értékek a teljes CPU-idő százalékai.

us: Nem kernel kód futtatásával töltött idő. Vagyis mennyi időt fordítanak a felhasználói időfeldolgozásra és a szép idő feldolgozásra.
sy: Kernelkód futtatásával töltött idő.
id: Tétlen töltött idő.
wa: Bemenetre vagy kimenetre várva töltött idő.
st: Virtuális gépről ellopott idő. Ez az az idő, amikor a virtuális gépnek meg kell várnia, hogy a hypervisor befejezze a többi virtuális gép kiszolgálását, mielőtt visszatérhetne, és kezelhetné ezt a virtuális gépet.

Időintervallum használata

A vmstat rendszeres frissítéseket biztosíthat ezekhez a számokhoz késleltetési érték használatával. A késleltetés értéke másodpercben van megadva. A statisztikák öt másodpercenkénti frissítéséhez a következő parancsot használjuk:

vmstat 5

A vmstat öt másodpercenként újabb adatsort ad a táblázathoz. Ennek leállításához le kell nyomnia a Ctrl+C billentyűkombinációt.

Számérték használata

A túl alacsony késleltetési érték használata további terhelést jelent a rendszeren. Ha gyors frissítésekre van szüksége a probléma diagnosztizálásához, javasoljuk, hogy számlálási értéket és késleltetési értéket használjon.

A count érték megmondja a vmstatnak, hogy hány frissítést kell végrehajtania, mielőtt kilép, és visszatér a parancssorba. Ha nem ad meg számlálási értéket, a vmstat addig fut, amíg a Ctrl+C le nem állítja.

Ha azt szeretné, hogy a vmstat öt másodpercenként frissítsen – de csak négy frissítés esetén – használja a következő parancsot:

vmstat 5 4

Négy frissítés után a vmstat magától leáll.

Az egységek megváltoztatása

Kiválaszthatja, hogy a memória és a cserestatisztika kilobyte-ban vagy megabájtban jelenjen meg az -S (egységkarakter) opció használatával. Ezt k , K , m vagy M valamelyikének kell követnie. Ezek a következők:

k: 1000 bájt
K: 1024 bájt
m: 1000000 bájt
M: 1048576 bájt

  A Nintendo Switch kezdőképernyőjének testreszabása

Ha a statisztikát 10 másodpercenként szeretné frissíteni a memória és a cserestatisztika megabájtban történő megjelenítésével, használja a következő parancsot:

vmstat 10 -S M

A memória és a cserestatisztika most megabájtban jelenik meg. Vegye figyelembe, hogy az -S opció nincs hatással az IO blokk statisztikáira. Ezek mindig blokkokban jelennek meg.

Aktív és inaktív memória

Ha az -a (aktív) opciót használja, a buff és a cache memória oszlopokat az „inact” és az „active” oszlopok váltják fel. Ahogy azt javasolják, ezek az inaktív és az aktív memória mennyiségét mutatják.

Ha ezt a két oszlopot szeretné látni a buff és a cache oszlopok helyett, adja meg az -a kapcsolót, az ábrán látható módon:

vmstat 5 -a -S M

Az inakt és az aktív oszlopokat az -S (egység-karakter) opció befolyásolja.

Villák

Az -f kapcsoló a számítógép elindítása óta történt elágazások számát mutatja.

Más szóval, ez a rendszer elindítása óta elindított (és többségükben újra bezárt) feladatok számát mutatja. Minden, a parancssorból elindított folyamat növelné ezt a számot. Minden alkalommal, amikor egy feladat vagy folyamat új feladatot generál vagy klónoz, ez a szám növekedni fog.

vmstat -f

A villakijelző nem frissül.

Slabinfo megjelenítése

A kernelnek megvan a maga memóriakezelése, ami miatt aggódnia kell, valamint az operációs rendszer és az összes alkalmazás memóriakezelése.

Elképzelhető, hogy a kernel újra és újra lefoglalja és felszabadítja a memóriát a sok különböző típusú adatobjektum számára, amelyeket kezelnie kell. Annak érdekében, hogy ez a lehető leghatékonyabb legyen, egy födémnek nevezett rendszert használ. Ez a gyorsítótárazás egy formája.

Egy adott típusú kernel adatobjektumhoz lefoglalt, használt és már nem szükséges memória újra felhasználható egy másik, azonos típusú adatobjektumhoz anélkül, hogy a memóriát felszabadítanák és újra lefoglalnák. Tekintsd a táblákat úgy, mint előre lefoglalt, méretre készített RAM-szegmenseket a kernel saját igényei szerint.

A födémek statisztikáinak megtekintéséhez használja a -m (födémek) kapcsolót. Használnia kell a sudo-t, és a rendszer kéri a jelszavát. Mivel a kimenet elég hosszadalmas lehet, ezért kevesebbet vezetünk rajta.

sudo vmstat -m | less

A kimenet öt oszlopból áll. Ezek:

Gyorsítótár: A gyorsítótár neve.
szám: A gyorsítótárban jelenleg aktív objektumok száma.
összesen: A gyorsítótárban elérhető objektumok teljes száma.
méret: A gyorsítótárban lévő egyes objektumok mérete.
oldalak: Azon memóriaoldalak teljes száma, amelyekhez (legalább) egy objektum van jelenleg társítva ehhez a gyorsítótárhoz.

Nyomja meg a q gombot, ha kevesebbet szeretne hagyni.

Eseményszámlálók és memóriastatisztika megjelenítése

Az eseményszámlálók és memóriastatisztikák oldalának megjelenítéséhez használja a -s (stats) opciót. Vegye figyelembe, hogy ez egy kis „s” betű.

vmstat -s

Bár a jelentett statisztikák nagyrészt megegyeznek az alapértelmezett vmstat kimenetet alkotó információkkal, néhány közülük részletesebben fel van osztva.

  Hogyan kaphatja meg a Gmail e-mailek elküldött és látható állapotát

Például az alapértelmezett kimenet egyesíti a szép és a nem szép felhasználói CPU-időt az „us” oszlopban. A -s (statisztika) kijelző külön listázza ezeket a statisztikákat.

Lemezstatisztika megjelenítése

Hasonló listát kaphat a lemezstatisztikákról a -d (lemez) kapcsolóval.

vmstat -d | less

Minden lemezhez három oszlop jelenik meg, ezek a Reads, Writes és IO.

Az IO a jobb szélső oszlop. Vegye figyelembe, hogy az IO-ban a sec oszlop mérése másodpercben történik, de az olvasási és írási oszlopok időalapú statisztikáit ezredmásodpercben mérik.

Ezt jelentik az oszlopok:

Olvas

összesen: A lemezolvasások teljes száma.
egyesített: A csoportosított olvasások teljes száma.
szektorok: A beolvasott szektorok teljes száma.
ms: A lemezről való adatok olvasásához felhasznált idő teljes száma ezredmásodpercben.

írja

összesen: A lemezírások teljes száma.
egyesített: a csoportosított írások teljes száma.
szektorok: A beírt szektorok teljes száma.
ms = Az adatok lemezre írásához felhasznált idő teljes száma ezredmásodpercben.

IO

cur: Az aktuális lemezolvasások vagy -írások száma.
sec: A folyamatban lévő olvasásokra vagy írásokra fordított idő másodpercben.

Összefoglaló lemezstatisztikák megjelenítése

A lemeztevékenység összefoglaló statisztikáinak gyors megjelenítéséhez használja a -D (lemezösszeg) opciót. Vegye figyelembe a nagy „D” betűt.

vmstat -D

A lemezek száma szokatlanul magasnak tűnhet. A cikk kutatásához használt számítógépen az Ubuntu fut. Az Ubuntuval minden alkalommal, amikor egy alkalmazást telepít egy Snap-ről, egy squashfs pszeudofájlrendszer jön létre, amely egy /dev/loop eszközhöz csatlakozik.

Bosszantó módon ezeket az eszközbejegyzéseket a Linux számos parancsa és segédprogramja merevlemez-eszközként tartja számon.

Partícióstatisztika megjelenítése

Egy adott partícióhoz kapcsolódó statisztikák megtekintéséhez használja a -p (partíció) kapcsolót, és adja meg a partíció azonosítóját parancssori paraméterként.

Itt megnézzük az sda1 partíciót. Az egyes számjegy azt jelzi, hogy ez az első partíció az eszköz sda-n, amely a számítógép fő merevlemeze.

vmstat -p sda1

A visszaadott információ megmutatja az adott partícióba és onnan érkező lemezolvasások és lemezírások teljes számát, valamint a lemezolvasási és lemezírási műveletekben szereplő szektorok számát.

Bepillantás a motorháztető alá

Mindig jó tudni, hogyan kell felemelni a motorháztetőt, és látni, mi történik alatta. Néha megpróbálja megoldani a problémákat, néha érdekből, mert tudni szeretné, hogyan ketyeg a számítógépe.

A vmstat rengeteg hasznos információval szolgálhat. Most már tudja, hogyan érheti el és mit jelent. És az előre figyelmeztetés az előfegyverzett – ha fel kell tekergetnie az ingujját, és diagnosztikát kell végeznie, akkor tudni fogja, hogy a vmstat az Ön oldalán van.