Unix admin - freebsd CPU-használat
Mindenki, aki ismeri * nix-szerű rendszerek tudni a kiváló csapat «top», ami azt mutatja, a jelenlegi állapotában a rendszer: CPU és a memória kiosztás, terhelés, folyamatokat, és így tovább.
Ebben a cikkben szeretnék, hogy vizsgálja felül a munkateher a folyamatot a FreeBSD operációs rendszer, azaz - milyen lépések által a csapat «top -P» (a kimenet a processzor terhelését) a kimeneti adatokat a képernyőn.
Mint látható a képen - információnk processzor 4 (vagy magok), a terhelés: a felhasználó, szép, rendszer, szakítsa meg, tétlen. Nézzük meg kell kérni az adatokat a kernel egyedül.
Eléréséhez az adatokat a központi könyvtár használható FreeBSD libkvm, belőle és mi támaszkodhatnak. Ezek a magok érhetők el a készülék «/ dev / mem», így neki idején a kísérletek hozzáféréssel kell rendelkeznie az olvasáshoz. Felveheti magát a kmem csoport vagy kísérlet a rendszergazda (root).
Mielőtt meghatározza CPU használat - azt kell meghatározni, mint ők a rendszerben? Ehhez van egy funkciója:
A függvény visszatér a processzorok száma a rendszer által támogatott, vagy a „-1”, ha ez történik bármilyen hiba. A számos támogatott processzorok nem egyenlő a processzorok számát telepítve.
Hozzon létre egy sablon dolgozni a kernel:
Először nem kér a rendszer - számos processzor támogatja:
Aztán kapunk információt feldolgozók:
Adatok FreeBSD gondosan minden processzor továbbít «struct pcpu». Csak ki belőle, és tájékoztatást kap majd a munkát.
Visszaadja információt a processzor (ha jelen van az «cpu» szám), vagy NULL - ha az információ nem áll rendelkezésre (nem CPU).
Ebben a szerkezetben mi érdekli «pc_cp_time» - statisztikák processzor:
Felhívjuk figyelmét, hogy ez a tömb tele van:
Ez azt jelenti, «cpu [n] [CP_SYS]» - tartalmazza a CPU-szám kullancsok elkötelezett feldolgozó rendszer kéri «cpu [n] [CP_INTR]» - tic töltött megszakítás feldolgozás. Akkor logikus feltételezni, - ha egy bizonyos ideig, hogy újra információgyűjtés a processzor, és vonjuk belőle az első - akkor kap terhelést ez a processzor a kullancsok.
Írja az elmondottakat:
Továbbra is csak, hogy ezeket a papagájok a tiszta érdeklődés. Ezzel az egyszerűen - tudjuk, mennyit töltött minden kullancs, kullancs, és mennyi az adott terhelést. Kiszámításához előfordulásának minden terhelés általában:
Most gyűjtünk össze az egészet, és meglátjuk, mi történik. mısorok:
Összeállításához és futtatásához:
Valószínűleg észrevette, hogy a teljes kullancsok minden processzor 127? Az a tény, hogy a kernel készít statisztikákat rendszeres időközönként. Röviden - a második van osztva egyenlő kullancsok száma, és minden meg van jelölve egy kullancs terhelés tartozik. Tekintse meg a kullancsok száma másodpercenként lehet a rendszer változó «kern.clockrate», azaz «stathz»:
PS: A fentiek alapján - akkor van értelme a kernel, hogy beállítsa a támogatott processzorok számával megegyező megadott. Az én esetemben - a rendszer beépített támogatásával 64 folyamatokat, bár valójában csak használt 4.