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.
Tartalomjegyzék
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.
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
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.
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.