前言
昨天看了一本《The Solaris Memory System》的书,里面写了很多关于内存监控和内存优化方面的东西,还介绍了一个关于内存监控的软件,总体感觉这个工具对solaris系统的内存的分析比较细,对我们解决内存方面瓶颈时,应该有很大的帮助。
本人声明如需转载请保留如下信息:
作者:SOLARIS小兵
MAIL:solarisxb@hotmail.com
FROM:WWW.CHINAUNIX.NET
一、软件安装系统环境:
1、系统硬件:SUN F280 solaris8
2、操作系统:#uname -a
SunOS db1 5.8 Generic_117350-02 sun4u sparc SUNW,Sun-Fire-280R
二、 memtool软件:
软件最新版本:RMCmem3.9.4.tar.Z?
下载地址:http://www.solarisinternals.com/si/downloads/_memtool/
2、 RMCmem3.9.4软件支持版本:
SPARC/Solaris 2.6
SPARC/Solaris 7
SPARC/Solaris 8
SPARC/Solaris 9
x86 /Solaris 8
x86 /Solaris 9
三、memtool软件安装:
1、解压缩软件:
# uncompress RMCmem3.9.4.tar.Z
# tar xvf RMCmem3.9.4.tar
2、软件安装:
# pkgadd -d . RMCmem
注意:就在当前目录下执行pkgadd,千万不要到RMCmem下执行 pkgadd。
按照安装提示,正确安装软件即可。
下面是安装细节
Do you want to join the MemTool mailing list ? yes
Enter your email address > solarisxb@hotmail.com
Enter your name or company > mbi
Do you want the kernel module loaded now? yes
Do you want to install the module loader in /etc/rc2.d? yes
使用</opt>作为包的基本目录
## 正在处理软件包信息.
## 正在处理系统信息.
## 检查磁盘空间需求
## 检查同已经安装的软件包之间的冲突.
## 检查setuid/setgid程序。
在这个软件包中包含了正文程序,只有具有超级-用户的权限才能在这个软件包的安装过程中执行它们.
要继续安装<RMCmem>吗? Yes
安装The MemTool Package成为<RMCmem>
手动load系统driver
# /opt/RMCmem/drv/bunyipload
3、 memtool软件卸载
#pkgrm RMCmem
4、 memtool可以手动安装使用:(用pkgadd安装不成功的情况下使用)
#cd /export/home/soft/mem/RMCmem/reloc/RMCmem/drv
# ls
5.6 5.7 5.8 5.9 bunyipload bunyipunload
# chmod 755 *
# ./bunyipload
可以直接执行使用:
#/export/home/soft/mem/RMCmem/reloc/RMCmem/bin/5.8/sparcv9
#./mem
在图形界面下可以使用:
#./memtool
5、memtool安装目录:
memtool安装根目录:/opt/RMCmem/bin
MEMTOOL软件的安装结束。
五、Memtool软件使用:
注意:需要在PATH里面加入/opt/RMCmem/bin/
1、使用prtmem命令,检查系统总内存和内存的分配使用情况:
# prtmem
Total memory: 1959 Megabytes
Kernel Memory: 174 Megabytes
Application: 961 Megabytes
Executable & libs: 25 Megabytes
File Cache: 290 Megabytes
Free, file cache: 294 Megabytes
Free, free: 211 Megabytes
2、使用mem命令,整个系统的性能监控,功能和top差不多。
#mem
3、使用pmem命令,检查某一个进程的内存使用的细节:
从上面的命令可以发现,PID为2788的java进程占用的内存资源比较大,我们可以详细的使用pmem命令详细的分析2788的内存分配和使
用。
# pmem 2788
2788: /app/jdk141_03/bin/java -client -Xms32m -Xmx200m -XX:MaxPermSize=128m
Address Kbytes Resident Shared Anon Permissions Mapped File
00010000 40 40 40 - read/exec java
00028000 8 8 - 8 read/write/exec java
0002A000 54320 54128 - 54128 read/write/exec [ heap ]
B87FC000 24 24 - 24 read/write [ anon ]
B88FA000 32 32 - 32 read/write [ anon ]
B89FC000 24 24 - 24 read/write [ anon ]
备注:这个命令和/usr/proc/bin/pmap –x命令的功能是一样的。
4、使用memps命令可以监控节点的buffer cache缓冲内存:
(The list of VNODE's in the UFS buffer cache can be displayed with the memps)
# memps -m |more
Size InUse E/F Filename
94592k 31944k F /db (inode 152073)
29968k 29504k F /app (inode 39502)
22920k 19992k F /app (inode 602679)
15264k 11848k E /export/home/oracle/ora82/bin/oracle
14680k 16k F /tmp (inode 4555208)
11848k 7512k F / (inode 78955)
11576k 8k F /export/home (inode 5895)
11056k 0k F /export/home (inode 5891)
10664k 5136k F /export/home/soft/RMCmem3.9.4.tar
7240k 0k F /usr (inode 507730)
7168k 0k F /export/home (inode 1244920)
6360k 6328k F /var/sadm/install/t.contents
4944k 0k F /export/home (inode 5890)
4840k 512k F / (inode 371729)
4696k 3920k F /app (inode 107044)
4648k 1624k F / (inode 405755)
4360k 2696k F / (inode 405702)
3952k 680k F /db (inode 152068)
3888k 0k E /export/home/oracle/ora82/lib/libclntsh.so.8.0
3680k 0k F /usr (inode 281649)
3184k 8k E /usr (inode 237176)
3168k 2568k F /export/home/soft/RICHPse.tar
3016k 2640k E /app/jdk141_03/jre/lib/sparc/client/libjvm.so
3008k 1448k F / (inode 281713)
2808k 0k E /usr (inode 338009)
2680k 360k F /db/oradata/ora82/system01.dbf
2664k 0k F /digital/mydomain/applications/app.jar
2568k 0k F /export/home (inode 1244921)
5、使用prtswap命令可以监控,系统swap使用:
# prtswap
Virtual Swap:
---------------------------------------------------------------
Total Virtual Swap Configured: 5627MB
Total Virtual Swap Reserved: 1385MB
Total Virtual Swap Free: (programs will fail if 0) 4242MB
Physical Swap Utilization: (pages swapped out)
---------------------------------------------------------------
Physical Swap Configured: 4096MB
Physical Swap Free (programs will be locked in if 0): 4096MB
6、使用命令prtlibs,监控系统类库使用内存:
# prtlibs
Library (.so) Memory: 3056 K-Bytes
六、MEMTOOL图形工具
1、 memtool主界面:
#./memtool&
2、Process Memory
可以显示每个进程的详细内存使用分配:
3、Process Matrix
(可以显示进程和映射文件的关系)
4、GUI Options(图形界面下的一些选项,可以自定义排序规则等)
欢迎大家补充和交流
msn:solarisxb@hotmail.com
END.
有些使用界面图片无法上传,感兴趣的可以给我发邮件,我可以email给你详细的word文档。