ps -nel, free -nel jobban mivel tudnam ellenorizni hogy mennyi memoria foglalt es mi foglalja?
free-nel reszletesebb..., ps megbizhatatlannak tunik.
Fut egy uml, elsosorban arra vonatkozo dolgokra lennek kivancsi.
- 2239 megtekintés
Hozzászólások
talan erdemes korulnezni a proc-ba : /proc/$pid/statm , eleg low level, szoval nem art google-zni:
http://www.google.com/search?q=linux+process+memory+info&ie=utf-8&oe=ut…
mondjuk ps, top, is ezt hasznalja.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
vagy google helyett esetleg
http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory
- A hozzászóláshoz be kell jelentkezni
Htop
- A hozzászóláshoz be kell jelentkezni
htop, top nekem sosem azt adja. Igazából nem tudok eligazodni rajtuk.
Én értem félre vagy a 2 tényleg full más értékeket mutat? Ez a kérdés áll processzornál is. Teljesen más processzeket rak előre és mondja rá, hogy zabálják a gépet.
Amúgy szeretem a htopot, jól kezelhető progik kilövésénél, szines, stb. A fentiekre viszont jó lenne rájönni:)
- A hozzászóláshoz be kell jelentkezni
Mert eltérő időpillanatokban nyúlkálnak bele a /proc-ba. Ugyanis mindenki onnan dolgozik.:-)
- A hozzászóláshoz be kell jelentkezni
A kérdés felkeltette az érdeklődésemet. Kicsit körbebogarásztam, és az alábbi megállapításokra jutottam.
- Linuxon minden mmap() (izé, VMA) alapú (text, data, bss, heap, kézi mmap(), stack).
- (Virtuális) memóriát két dolog foglal:
- bármilyen private mapping-ből a dirty lapok,
- illetve azon shared mapping-ek dirty lapjai, ahol a mapping anonymous (ez elég ritka, becslésem szerint ehhez explicit anonymous shared mmap() plusz fork() kell, vagyis csak ott látsz ilyet, ahol szülő és gyerek megosztott memóriával szeretne beszélgetni, és nincs kedve az shmget() családot használni)
Bármilyen más mapping-nek van előre, statikusan allokált helye a diszken, reguláris file-ban. (Ha van swap-ed, akkor a fenti kétféle "foglalós" mapping-nek is van helye a diszken: a swap-ben, de ettől ezek még ugyanúgy virtuálismemória-foglalásnak tekintendők.)
Ezért az alábbi (ócska) script-et faragtam. Csak a fenti különbségtételre figyel. Az első rendezési szempont a PRIV_DIRT (csökkenő), a második az SHR_ANON_DIRT (szintén), a harmadik a PID (növekvő).
set -e -C
cd /proc
printf ' PID PRIV_DIRT SHR_ANON_DIRT CMDLINE\n'
for PID in [0-9]*; do
cat $PID/smaps \
| (
CTR_PRIVATE_DIRTY=0
CTR_SHARED_ANON_DIRTY=0
while read MAP_ADDR MAP_PROT MAP_OFFS MAP_DEV MAP_INO MAP_PATHNAME \
&& read L_SIZE \
&& read L_RSS \
&& read L_PSS \
&& read L_SHARED_CLEAN \
&& read L_SHARED_DIRTY_1 SHARED_DIRTY L_SHARED_DIRTY_2 \
&& read L_PRIVATE_CLEAN \
&& read L_PRIVATE_DIRTY_1 PRIVATE_DIRTY L_PRIVATE_DIRTY_2 \
&& read L_REFERENCED \
&& read L_SWAP; do
CTR_PRIVATE_DIRTY=$(($CTR_PRIVATE_DIRTY + $PRIVATE_DIRTY))
if [ 0 != "$MAP_INO" ]; then
CTR_SHARED_ANON_DIRTY=$(($CTR_SHARED_ANON_DIRTY + $SHARED_DIRTY))
fi
done
printf '%5u %9u %13u %s\n' $PID $CTR_PRIVATE_DIRTY $CTR_SHARED_ANON_DIRTY \
"$(tr '\0' ' ' <$PID/cmdline)"
)
done \
| sort -k 2rn,2rn -k 3rn,3rn -k 1n,1n
A
cat $PID/smaps
részlet nem véletlen. Bár lehetne helyette a belső ciklus végére
done <$PID/smaps
-ot is írni, borzasztóan lelassulna. A cat egy-két nagy blokkban kirántja a kernelből az információt, míg a
done <$PID/smaps
módszerrel minden egyes read-nél beformáztatnánk a kernellel az smaps file-t.
A script nem foglalkozik azzal, hogy miből mennyi van a fizikai memóriában, illetve semmivel sem, ami nincs az smaps-ban; valamint az smaps-ban is figyelmen kívül hagyja azokat a sorokat, amelyekre (szerintem) a kérdés megválaszolásához nincs szükség.
Természetesen nem ajánlom, hogy root-ként futtasd a script-et (sőt, egyáltalán nem ajánlok semmit); csak megjegyzem, hogy amely processzekhez "nincs jogod", ott nullákat fogsz látni.
- A hozzászóláshoz be kell jelentkezni
A cat $PID/smaps részlet nem véletlen. Bár lehetne helyette a belső ciklus végére done <$PID/smaps-ot is írni, borzasztóan lelassulna. A cat egy-két nagy blokkban kirántja a kernelből az információt, míg a done <$PID/smaps módszerrel minden egyes read-nél beformáztatnánk a kernellel az smaps file-t.
Hogy működik ez az újraformázás? Olyan, mintha megváltozna a fájl tartalma minden egyes readnél?
- A hozzászóláshoz be kell jelentkezni
ha ráfanyalodnál a grafikus felületre, ott nincs olyan, hogy rendszerfigyelő?
(Kevin Vandersloot, Erik Johnsson, Jorgen Scheibengruber, Benoît Dejean, Paolo Borelli)
UHU-ban van. Két kis (ikon méretű) ablakban a panelon állandóan látszik a proc.használat és a hálózati forgalom,
Részletes listán pedig külön lehet megnézni a virtuális, rezidens, írható, osztott, X11 memória használatot, függőséget stb.
- A hozzászóláshoz be kell jelentkezni
Grafikus felületen elég a gkrellm is, nem kell túlzásba vinni.
Vagy ott van még a conky, amit akár rávasalhatsz a desktop háttérképére is. (conkyrc-t adhatok, ha érdekel)
/mazursky
Love your job but never love your company!
Because you never know when your company stops loving you!
- A hozzászóláshoz be kell jelentkezni