在Linux上,“top”命令显示内存使用情况的详细但高级别的概述,显示:
总内存,已用内存,可用内存,缓冲区使用情况,缓存使用情况,交换大小和交换使用情况。
我的问题是,有哪些命令可以清晰简单地显示这些内存使用数据?如果它们存在于Solaris的“核心”安装中,则会获得奖励积分。 'sar'不算数:)
答案 0 :(得分:19)
以下是基础知识。我不确定其中任何一个都算“清楚简单”。
<强> 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,可能不准确(!),见男)
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
出了什么问题? :)
答案 1 :(得分:17)
# 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
答案 2 :(得分:2)
“top”通常在Solaris上提供。
如果没有,则恢复为大多数UNIX系统上可用的“vmstat”。
看起来应该是这样的(来自AIX盒子)
vmstat System configuration: lcpu=4 mem=12288MB ent=2.00 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------------------- r b 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.3colums“avm”和“fre”告诉你总记忆和免费的memery。
“男人vmstat”应该能得到血腥的细节。
答案 3 :(得分:0)
Top可以从源代码编译或从sunfreeware.com下载。如前所述,vmstat可用(我相信它在核心安装中?)。
答案 4 :(得分:-3)
命令free
很好。花一点时间来理解“+/-缓冲区/缓存”,但想法是缓存和缓冲区在评估“免费”时并不真正计算,因为它可以立即转储。因此,要查看您拥有多少可用(和已使用)内存,您需要删除缓存/缓冲区使用情况 - 这对您来说很方便。