在Linux上,"top"命令显示内存使用情况的详细但高级别概述,显示:
总内存,已用内存,可用内存,缓冲区使用情况,缓存使用情况,交换大小和交换使用情况.
我的问题是,有哪些命令可以清晰简单地显示这些内存使用数据?如果它们存在于Solaris的"核心"安装中,则会获得奖励积分.'sar'不算:)
以下是基础知识.我不确定其中任何一个都算是"清晰简单".
ps(1)
对于流程级视图:
$ 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:总虚拟进程大小(kb)
rss/RSS:常驻集大小(kb,可能不准确(!),见man)
osz/SZ:内存总大小(页数)
要从页面计算字节大小:
$ 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)
"长期上市"和"汇总"模式:
$ 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)
Sun的Solaris配套光盘上提供了旧版本(3.51),其免责声明是"支持社区(不支持Sun)".更新的二进制包可从sunfreeware.com或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)
那有什么问题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