- 浏览: 4373977 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
svmon概述
svmon 命令用于显示当前内存状态的信息,可通过
#
lslpp bos.perf.tools
查看是否有安装。因为 svmon 命令在启用中断的用户级别运行,所以显示的信息不组成真正的内存快照。
在非常繁忙的系统中,svmon收集的数据和真实的数据有所差距,在svmon进程搜集的过程中,VMM(虚存管理器)可能已经发生改动了。
因为svmon使用的全是VMM中的数据,而VMM对内存的视图是基于内存段的,所以,理解svmon的输出,必须先理解段的概念。
段
段(segment)是一组页的合集,
用来报告内存消耗的基本对象。因此 svmon 所报告的统计信息是以页面表示的。
每个段为256M,而每页为4KB字节的虚存,每帧为4KB字节的实存,每个段可同时被多个进程使用,每个段属于以下五种类型其中的一种:
persistent:存放JFS文件或目录
working:进程数据区域和共享内存段
client:用于实现虚拟文件系统如NFS,CD-ROM文件系统和JFS2
mapping:用于实现文件和内存之间的映射关系
real memory mapping:用于对I/O空间的访问
svmon参数详解
具体使用范例
1、全局统计信息
#svmon -G
size inuse free pin virtual mmode
memory 3932160 2729499 1202661 818627 1616925 Ded
pg space 8388608 8595
work pers clnt other
pin 675474 0 2801 140352
in use 1616925 0 1112574
PageSize PoolSize inuse pgsp pin virtual
s 4 KB - 1966891 8595 209571 854317
m 64 KB - 47663 0 38066 47663
其中
inuse-------已使用的
free---------空闲的
pin-----“钉”在内存中的内存段(笔者认为这不是固定内存段)
virtual-----虚拟内存段
work------工作内存段
pers-------固定内存段
other------- mapping和real mapping memory
PageSize-----不同内存页大小的统计情况,s为常规页面,大小为4k,m为大页面大小为64k。
pgsp------
分页空间的使用情况
注意,在段的描述中,如果paging space使用的节中如果有一横(-),表明该段未使用交换区,work段可能使用交换区,但persistent段和client段不会使用交换区。
2、打印 1/2 小时中每分钟的全局统计信息,请输入:
#svmon -G -i 60 30
3、要打印出只考虑工作段的用户 root 和 steve 的内存使用统计信息,请输入:
#svmon -U root oracle -w
===============================================================================
User Inuse Pin Pgsp Virtual
oracle 558293 16880 0 558293
PageSize Inuse Pin Pgsp Virtual
s 4 KB 515157 80 0 515157
m 64 KB 2696 1050 0 2696
........................................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
13129 8552 0 13129
PageSize Inuse Pin Pgsp Virtual
s 4 KB 3785 72 0 3785
m 64 KB 584 530 0 584
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
20002 0 work kernel segment m 584 530 0 584
以上省略一部分输出。。。。
用户运行的进程所使用的段分成三个类别:
系统:所有进程共享的段
互斥:属于oracle 的进程集所使用的段
共享:几个用户共享的段。
其中
Vsid:表示虚拟段标识符。表示在虚拟内存管理器中的唯一段。
Esid: 表示有效的段标识符。Esid只有在段属于进程的地址空间时才有效。提供时,它表示进程如何使用段。如果 vsid 段被几个进程映射,但具有不同的 esid 值, 那么该字段包含“-”。如果是那样的话,那么通过应用于使用该段的每个进程标识符的 -P 标志,可以获得精确的 esid 值。因为用于管理打开的文件或多线程结构的段不是进程的用户地址空间的一部分,所以也对这些段显示“-”。
3、 可将使用实存最多的三个进程标出
# svmon -uP -t 3|grep -p Pid|grep '^.*[0-9] '
5428 X 4681 1584 2656 9156 N N
16274 bin 4594 1588 2273 8824 N Y
6458 dtgreet 4660 1580 2144 8712 N N
输出的格式顺序为 Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd
可以计算出X程序所使用的实存为4681×4096=18763776,约为18MB
4、
可将使用交换区最多的三个进程标出
# svmon -gP -t 3|grep -p Pid|grep '^.*[0-9] '
5428 X 4681 1584 2656 9156 N N
16274 bin 4594 1588 2273 8824 N Y
6458 dtgreet 4660 1580 2144 8712 N N
第一个程序X所使用的交换区大小约为 2566×4096 =10510336 字节,大约为10MB空间
5、
每隔三秒显示使用最多的段
# svmon -S -t 3 -i 3
Vsid Esid Type Description Inuse Pin Pgsp Virtual
4f08 - clnt 37505 0 - -
11e1 - clnt 33623 0 - -
8811 - work kernel pinned heap 12637 6547 8091 19397
可见,Vsid为4f08的段使用最多
6、
看PID为22674的进程所使用的为固定内存
#svmon -pP 22674
7、要打印出段 700e 8811 和 bed7 的内存使用统计信息,请输入:
#svmon -S 700e 8811 bed7 1cf8e
8、打印出命令 login ,ksh的内存使用统计信息, 包括地址范围,请输入:
#svmon -C login ksh -r
9、要打印出只考虑非系统工作段的所有进程的内存使用统计信息,并且根据虚拟页面数对该进程排序,请输入:
#svmon -P -n -w -v
10、根据实内存的页数将系统段排序,并且打印出结果列表中最高的 10 个系统段,请输入:
#svmon -S -s -u -t 10
11、只打印大页面段,请输入:
#svmon -S -q
常见问题分析
svmon -S中inuse的求和结果比svmon -G中的inuse小
下面的脚本可以用来统计svmon -S中的inuse的相加结果:
==============================================
#!/usr/bin/ksh
svmon -S | cut -c54-62 | awk '/^[-sLm]/ {if ($1 ~ /L/)
{COUNT1 =($2*4096+COUNT1)}
else if ($1 ~ /m/)
{COUNT2 =($2*16+COUNT2)}
else {COUNT3 =$2+COUNT3}}
END {printf "The result is as following with 4k as unit size\n16M page count=%d\n64k page count=%d\n4k page count=%d\nTatal page count=%d\n", COUNT1,COUNT2,COUNT3,'COUNT1+COUNT2+COUNT3'}'
========================================================
那么,产生这种差别的原因是什么呢?解释如下:
svmon -S用来显示系统中所有内存段(segment)的内存使用信息。AIX上仅存在三种内存段,它们是work,client和persistent。因此,统计svmon -S中inuse的和就是将被使用的上述三种内存段进行求和。但是,这种统计并没有将系统上所有的被使用的内存页面统计进来。系统里存在着一些尚未被VMM管理的内存页面(mapping和real mapping memory),这些页面已经被使用,但是不属于上述三种内存段,因此在svmon -S中体现不出来。而svmon -G则包含了这些未被管理的页面。
这些未被VMM管理的内存主要是被硬件使用,用来对物理内存做一些设置。在AIX 5L中,可以通过在kdb执行vmstat来查看未被管理的内存,输出如下:
VMM Memory Limits:
Total available memory (4K frames) : 00100000 4.0GB
Total unmanaged mem (wlm_hw_pages): 0000D639 214.3MB
4K number of frames : 000F29C7 3.8GB
4K frames pinned : 00009FEE 160.0MB
4K system pinnable frames remaining: 000B817E 2.9GB
4K user pinnable frames remaining : 000BC0BC 3.0GB
Free paging space (in 4K blocks) : 0001FD00 509.0MB
Paging space SIGDANGER level : 00001000 16.0MB
Paging space SIGKILL level : 00000400 4.0MB
其中“unmanaged mem”就代表这类未被VMM管理的内存页面
参考至:http://www.eygle.com/digest/2009/07/ibm_aix_svmon.html
http://www.kuqin.com/aixcmds/aixcmds5/svmon.htm#c013820260joy
http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811998D15000
发表评论
-
AIX上的FTP设置(原创)
2013-02-18 13:31 26277FTP服务 FTP是用于Internet上的控制文件双向 ... -
AIX服务详解(原创)
2012-08-20 17:30 9901AIX服务概述 在Windows中,服务标志着一个组 ... -
aix的lvm管理
2012-03-07 22:27 0逻辑卷管理概念 物 ... -
浅解逻辑分区LPAR与DLPAR(原创)
2011-09-16 16:22 6894作为一个DBA,对操作系统及底层硬件的了解也许不是那么至关重要 ... -
利用IBM硬件信息中心定位硬件问题(原创)
2011-09-14 18:11 9804本文主要是通过一次对AIX服务器的硬件故障排查过程来引进一个故 ... -
AIX的vmstat命令详解(原创)
2011-08-24 14:54 20264vmstat概述 vmstat 命令报告关于 ... -
AIX的sar命令详解(原创)
2011-08-24 10:41 9441sar概述 sar 命令将 操 ... -
AIX的topas命令详解(原创)
2011-08-22 15:37 20868topas概述 topas 命令报告选定的本地系统活 ... -
AIX内存概述(原创)
2011-08-19 11:30 2916VMM概述 虚拟内存管 ... -
AIX的/etc/filesystems详解(原创)
2011-08-16 16:59 8896etc/filesystems概述 文件 ... -
AIX中的fsck详解
2011-08-13 16:42 4917在AIX系统中fsck命令的用途 当执行fsck 命令时, ... -
AIX的Dump文件学习笔记(原创)
2011-08-10 18:43 6286DUMP文件概述 为了增强故障分析能力,IBM的 ...
相关推荐
AIX系统性能分析,通过topas,svmon采集数据,然后进行数据分析,CUP,内存,等状况
aix中的一些简单的命令集合prtconf 显示系统的各项主要配置 svmon -G 查看内存(4k) iostat 2 查看磁盘读写情况(每2秒刷新); set -o vi 调用缓冲区 k,j,x,h,l 向上下翻,Esc
1.2 AIX 5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用 7 1.3 AIX 5L 内存性能优化之配置和管理交换空间,优化(VMM) 12 1.4 AIX 5.3主机性能评估-Memory性能评估 19 1.5 AIX 5L 磁盘性能优化 23 ...
1.2 AIX 5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用 7 1.3 AIX 5L 内存性能优化之配置和管理交换空间,优化(VMM) 12 1.4 AIX 5.3主机性能评估-Memory性能评估 19 1.5 AIX 5L 磁盘性能优化 23 ...
1.2 AIX 5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用 7 1.3 AIX 5L 内存性能优化之配置和管理交换空间,优化(VMM) 12 1.4 AIX 5.3主机性能评估-Memory性能评估 19 1.5 AIX 5L 磁盘性能优化 23 ...
svmon 命令 swap 命令 swapoff 命令 swapon 命令 swcons 命令 sync 命令 synclvodm 命令 syncvg 命令 syscall 命令 sysck 命令 syscorepath 命令 sysdumpdev 命令 sysdumpstart 命令 sysline 命令 syslogd 守护进程 ...
AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //...
1.2.4 svmon:显示进程占用内存 3 1.2.5 iostat:显示磁盘IO 4 1.2.6 netstat, entstat:显示网卡信息 4 1.2.7 no:显示tcpip参数设置 5 1.2.8 其它命令 5 第2章 AIX系统管理日常工作(LV篇) 6 2.1 IBM AIX系统管理的...
svmon............................................................................................................................................13 Tuning I/O performance.................................