Sous Linux, la commande "top" affiche un aperçu détaillé mais de haut niveau de votre utilisation de la mémoire, montrant:
Mémoire totale, mémoire utilisée, mémoire libre, utilisation du tampon, utilisation du cache, taille du swap et utilisation du swap.
Ma question est, quelles commandes sont disponibles pour afficher ces chiffres d'utilisation de la mémoire de manière claire et simple? Points bonus s'ils sont présents dans l'installation "Core" de Solaris. 'sar' ne compte pas :)
Voici les bases. Je ne suis pas sûr que l'un d'eux soit considéré comme "clair et simple".
ps(1)
Pour une vue au niveau du processus:
$ ps -opid,vsz,rss,osz,args
PID VSZ RSS SZ COMMAND
1831 1776 1008 222 ps -opid,vsz,rss,osz,args
1782 3464 2504 433 -bash
$
vsz/VSZ: taille totale du processus virtuel (ko)
rss/RSS: taille de l'ensemble résident (ko, peut être inexact (!), voir man)
osz/SZ: taille totale en mémoire (pages)
Pour calculer la taille des octets à partir des pages:
$ sz_pages=$(ps -o osz -p $pid | grep -v SZ )
$ sz_bytes=$(( $sz_pages * $(pagesize) ))
$ sz_mbytes=$(( $sz_bytes / ( 1024 * 1024 ) ))
$ echo "$pid OSZ=$sz_mbytes MB"
vmstat(1M)
$ vmstat 5 5
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr rm s3 -- -- in sy cs us sy id
0 0 0 535832 219880 1 2 0 0 0 0 0 -0 0 0 0 402 19 97 0 1 99
0 0 0 514376 203648 1 4 0 0 0 0 0 0 0 0 0 402 19 96 0 1 99
^C
prstat(1M)
PID USERNAME SIZE RSS STATE PRI Nice TIME CPU PROCESS/NLWP
1852 martin 4840K 3600K cpu0 59 0 0:00:00 0.3% prstat/1
1780 martin 9384K 2920K sleep 59 0 0:00:00 0.0% sshd/1
...
swap(1)
Modes "liste longue" et "résumé":
$ swap -l
swapfile dev swaplo blocks free
/dev/zvol/dsk/rpool/swap 256,1 16 1048560 1048560
$ swap -s
total: 42352k bytes allocated + 20192k reserved = 62544k used, 607672k available
$
top(1)
Une version plus ancienne (3.51) est disponible sur le CD compagnon Solaris de Sun, avec la clause de non-responsabilité selon laquelle il s'agit de la "Communauté (pas Sun) prise en charge". Des packages binaires plus récents sont disponibles sur sunfreeware.com ou blastwave.org.
load averages: 0.02, 0.00, 0.00; up 2+12:31:38 08:53:58
31 processes: 30 sleeping, 1 on cpu
CPU states: 98.0% idle, 0.0% user, 2.0% kernel, 0.0% iowait, 0.0% swap
Memory: 1024M phys mem, 197M free mem, 512M total swap, 512M free swap
PID USERNAME LWP PRI Nice SIZE RES STATE TIME CPU COMMAND
1898 martin 1 54 0 3336K 1808K cpu 0:00 0.96% top
7 root 11 59 0 10M 7912K sleep 0:09 0.02% svc.startd
sar(1M)
Et quel est le problème avec sar
? :)
# echo ::memstat | mdb -k
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 7308 57 23%
Anon 9055 70 29%
Exec and libs 1968 15 6%
Page cache 2224 17 7%
Free (cachelist) 6470 50 20%
Free (freelist) 4641 36 15%
Total 31666 247
Physical 31256 244
"top" est généralement disponible sur Solaris.
Sinon, revenez à "vmstat" qui est disponible sur la plupart des systèmes UNIX.
Il devrait ressembler à ceci (à partir d'une boîte AIX)
vmstat Configuration système: lcpu = 4 mem = 12288MB ent = 2,00 kthr défauts de page mémoire cpu ----- - --------- ------------------------ ------------ ----- ------------------ rb avm fre re pi po fr sr cy in sy cs us sy id wa pc ec 2 1 1614644 585722 0 0 1 22 104 0 808 29047 2767 12 8 77 3 0,45 22,3
les colonnes "avm" et "fre" vous indiquent la mémoire totale et la mémoire libre.
un "homme vmstat" devrait vous donner les détails sanglants.
Top peut être compilé à partir de sources ou téléchargé à partir de sunfreeware.com. Comme indiqué précédemment, vmstat est disponible (je crois que c'est dans l'installation principale?).