AIX PS 使用率过高的分析与解决

http://blog.sina.com.cn/s/blog_90e2c5200100y1mv.html


虚拟内存管理:VMM=Virtual Memory Manager        
观察进程内存使用情况:        
ps aux 观察参数%mem:内存使用百分比 RSS:实际使用内存        
vmstat free的单位为块,缺省值为4096bytst         
slibclean 清除处理程序遗留的旧分页信息        

页面空间的大小: 512+(实际内存大小-256M)*1.25        
    Pagingsize=    512+(1024-256)*1.25=1472M
当内存是4-8G时,观察页面空间,最好是4G;使用率超过70%,需要增加页面空间。        

vmstat     查看页面空间    
#vmstat 2 5        
#lsps -a        
#lsps -c hd6        
#Psname:Pvname:Vgname:Size:Used:Active:Auto:Type:Chksum        
hd6:hdisk0:rootvg:32:1:y:y:lv:0        
#lsps -s        
Total Paging Space   Percent Used        
      2048MB               1%        
slibclean    清除内存中未用的代码或数据模块    


lsdev -Cc memory           显示系统中的内存
lsdev -Cc memory        
L2cache0 Available  L2 Cache        
mem0     Available  Memory        
lsattr -El mem0 -H        显示内存的属性获得内存的大小
lsattr -El mem0 -H        
attribute value description                                user_settable        
goodsize  6912  Amount of usable physical memory in Mbytes False        
size      6912  Total amount of physical memory in Mbytes  False        

lsattr -El L2cache0        显示二级缓存的大小                        
# lsattr -El mem0 -H                                
attribute value description                                user_settable                               
goodsize  2048  Amount of usable physical memory in Mbytes  False                                
size      2048  Total amount of physical memory in Mbytes   False                                
# lsattr -El L2cache0 -H                                
attribute value description                user_settable                                
size      1920  Size of L2 cache in Kbytes False                                
svmon -G                                
添加页面空间:        smitty mkps                        
                                                               [Entry Fields]                        
         Volume group name                                   datavg                        
         SIZE of paging space (in logical partitions)       [4]                        
         PHYSICAL VOLUME name                        
         Start using this paging space NOW?                  no                        
         Use this paging space each time the system is       no                        
                 RESTARTED?                        
                               
最好不用    mkps -s4 -n -a rootvg hdisk1                
s4只PG的大小4个LP的大小 n 创建后立即激活;a 系统启动时激活        
                               
smitty----ssm---lvm---paging space
激活页面空间:                                
    swapon -a    激活所有页面空间                        
    swapon /dev/paging01        激活单个页面空间                    
    smitty swapon        

关闭页面空间            
    5L以前版本        
    chps -a n myps        系统启动不激活
    shutdown -Fr        
    lsps -a        

    5L以后版本        
    swapoff /dev/paging00        
    smitty swapoff        

修改页面空间的属性:            
    smitty chps        Number of additional logical partitions:需要额外增加的LP,
            Number of logical partitions to remove: 需要减少的LP
            Use this paging space …… is RESTARTED: Yes,重启后加载
    chps -s 4 myps        增加4个LP                
    chps -d 3 myps        减少                
    chps -a y myps        启动激活                

    chps -s LPs(number) -d LPs(number) -a y|n Pagingspace Name                        

etc/swapspaces文件                            
删除页面空间:                            
    sydumpdev -l    查看基本dump 设备        删除hd6            
    sysdumpdev -P -p /dev/paging00   改变dump device                        
AIX 5L后                            
    swapoff /dev/paging00                        
    rmps paging00                        
    smitty rmps                        
                           
lsattr -El sys0 -a realmem      显示真实内存大小KB                            
lscfg | grep proc               要显示您系统上的处理器数量                            
lscfg  prtcfg                   获得系统的详细配置                            
                           
uname -p                        显示系统的芯片类型。例如,PowerPC。                             
uname -r              显示操作系统的版本号。                 
uname -s              显示系统名称。例如,AIX。                 
uname -n              显示节点名称。                  
uname -a              显示系统名称、节点名称、版本、计算机 ID。                 
uname -M              显示系统型号名称。例如,IBM, 9114-275。                 
uname -v              显示操作系统版本。                 
uname -m              显示运行系统的硬件的计算机 ID 编号。                 
uname -u              显示系统 ID 编号。                  
                           
mount -V cdrfs -o ro /dev/cd0 /cdrom    Mount CD-Rom                            
                           
instfix -ik IY24043                      系统上是否安装了某个修复程序                
instfix -i | grep ML                     系统上是否安装了所有维护级文件集                
lppchk -v                               证文件集是否有必需的先决条件和是否已完全安装               
lsps -a                 确定已分配和使用的分页空间量                
                           
migratepv -l hd6 hdisk0 hdisk1            移动hd6从HDISK0到HDISK1                

AIX
 操作系统中的 Paging Space 是很重要的设备,Paging Space 使用率过高将影响系统整体性能,甚至会造成系统挂起。文中对 Paging Space 使用率过高的常见原因进行了分析,并给出了相应的解决方案。

AIX操作系统中Paging Space是很重要的设备,当系统中Paging Space使用率过高、系统内存不足时,将影响系统的整体性能,甚至会造成系统的挂起。针对这种情况,通常可以靠增加Paging Space来加以缓解;但是当Paging Space已经相当大,而Paging Space使用率仍旧居高不下时,则需要通过进一步的分析来找出原因并加以解决。文中分析了几种Paging Space使用率持续增长直至过高的常见原因,并给出了相应的解决方案,以确保Paging Space使用率被控制在安全的范围内。

1 Paging Space的创建原则

AIXPaging Space大小确定的指导原则如下:

系统实际内存小于64MB, paging space= 2 * RAM 

系统实际内存在 64MB to 256MB 之间, Page Space = RAM size + 16MB 

系统实际内存大于 256MB , Page Space = 512 + ( RAM - 256 ) * 1.25 

当内存超过4GB,则需要根据实际情况来定,一般可初始3GB, 然后观察paging space的使用情况,如果使用率超过70%, 则需要增加paging space 

此外在创建Paging Space时还应遵循以下原则以提高性能: 

创建的数量应尽可能的多;

每个Paging Space的大小应该相同;

每个Paging Space应尽可能的分配在不同的硬盘上。

AIX中可以通过命令lsps -s查看Paging Space的使用情况。列Total Paging Space给出的是系统总的Paging Space空间大小,Percent Used则表示已被占用的Paging Space的百分比。 

命令lsps -a可以用来查看Paging Space的分布情况 

2 文件型内存对Paging Space使用率的影响

AIX系统中,内存可以简单的分为两类:计算型内存和文件型内存。类似大量文件类操作,如压缩、数据库的dump/load等操作会大量占用文件型内存。如果按照系统缺省的配置,文件型内存最多会占用到内存总量的80%,由于文件型内存占用并不主动释放,从而可能造成内存资源的短缺及Paging Space使用率过高。

命令topas可以用来查看文件型内存占用内存情况,在MEMORY一栏中的%Noncomp显示的是文件型内存的占用百分比。

如果文件型内存所占比例很高,而Paging Space使用率居高不下时,可以通过降低minpermmaxperm的参数值来进行调优,减少文件型内存可占用的份额。

在进行调整前,首先通过命令vmo -a/vmtune -a来查看目前的参数值;minpermmaxperm的缺省值分别是30%80% 

随后根据当前的值来确定minpermmaxperm新的参数值,并通过命令vmo 及参数pP来进行设定。如需将minpermmaxperm的值分别设为15%30%可用命令vmo -p 15 -P 30来实现。

因为参数maxperm充当的是软限制,所以文件型内存的占用率依旧可以超过maxperm的设定值。如果需要进行强制限制,则需要将参数strict_maxperm的值设为1,该参数的缺省值为0,但此方法需谨慎使用。 

3 应用程序内存泄露对Paging Space使用率的影响

应用程序的内存泄露也是造成Paging Space使用率不断增长的另一常见原因,此类情况的解决方法主要是找出内存泄露的应用,然后进行修正或安装补丁。

以下方法可用来找出发生内存泄露的应用: 

该命令每m秒钟按降序列出前n个最耗内存进程。为了便于分析,可以将结果输出到文件中,然后对内容进行分析,从而找出内存泄露的应用。

下例中命令svmon -P -t 10 -i 5的结果被输出到文件svmonresult.txt中,该命令每5秒种输出一次最耗内存的前10个进程。 

找出发生内存泄露的应用后可自行进行修正或查找相关的补丁进行安装。 

4 数据库参数配置对Paging Space使用率的影响

在装有数据库的系统环境中,数据库相关参数的设置不当也容易造成Paging Space的占用率过高。以DB2为例,因为 DB2 使用自己的缓冲池进行数据缓存,所以其所能占用的内存量不受参数maxperm的控制,而是由自身的参数值来决定。数据库占用的内存过多并且不及时释放的话同样会造成Paging Space使用率的持续增长乃至耗尽,本节中采用DB2的设置为例来对此类情况进行说明。

Paging Space使用率而言,DB2的相关参数中需要特别关注的有DB2MEMDISCLAIMDB2MEMMAXFREENUM_POOLAGENTS ESTORE_SEG_SZNUM_ESTORE_SEGS。其中DB2MEMDISCLAIMDB2MEMMAXFREENUM_POOLAGENTSDB2中代理的私有内存相关,而ESTORE_SEG_SZNUM_ESTORE_SEGS则决定扩展缓冲池的大小。

AIX中,注册变量DB2MEMDISCLAIM指明当程序停止时DB2 UDB是否应该释放其占用的全部或部分内存。DB2MEMDISCLAIM保持缺省值YES,则在DB2MEMMAXFREE的值为空时,程序结束后释放所有相关内存,否则只保留DB2MEMMAXFREE值大小的内存量,该值缺省为8M。如果DB2MEMDISCLAIM的值被改为NO,则程序结束后内存不会被释放。

NUM_POOLAGENTS指定了DB2中可以保留的空闲代理的最大数目,如果该值过大,将会有大量的内存被空闲代理占用。如NUM_POOLAGENTS的值为125DB2MEMMAXFREE的值为8M,在DB2MEMDISCLAIMYES时将最多有约1G的内存被空闲代理占用。

因此,当Paging Space使用率偏高时,可以尝试查看DB2MEMDISCLAIMDB2MEMMAXFREENUM_POOLAGENTS的值来确保没有过多的内存被DB2代理所占用。如果空闲代理占用内存太多,则需要调整DB2MEMMAXFREENUM_POOLAGENTS的值来削减。

DB2MEMDISCLAIMDB2MEMMAXFREE的值可用db2set命令来查看和设定;NUM_POOLAGENTS的值则可以通过以下步骤来查看和修改: 

DB2中除了主缓冲池之外还经常用到扩展缓冲池,扩展缓冲池的大小也是决定内存使用量的一个重要因素。扩展缓冲池(EXTENDED STORAGE)充当的是缓冲池中被换出页的辅助缓存,它的存在可以减少I/O操作,提高查询速度。通常扩展缓冲池占用的内存不会主动释放,因此如果扩展缓冲池过大,随着时间的增加、缓冲池占用的内存量的不断增长,有相当大的可能造成内存资源的短缺、Paging Space使用率过高。

扩展缓冲池的大小是由参数ESTORE_SEG_SZNUM_ESTORE_SEGS共同决定的,通过以下命令可以查看它们的值: 

扩展缓冲池最多占用内存的计算方式如下: 

假如系统中共有3个配置相同的DBESTORE_SEG_SZ的值为16000NUM_ESTORE_SEGS的值为65,页面大小为4K,则扩展缓冲池最多可占用的内存为: 

ESTORE_SEG_SZNUM_ESTORE_SEGS的参数值设定可以通过如下命令来实现: 

DB2中还有其他一些参数决定着内存的使用情况,但是当发现内存占用后不释放的情况时,可以考虑首先查看本节中提到的相关参数。

对于其他的数据库,同样也需要注意一些类似参数值的设置,避免造成对内存的过量占用,从而造成对系统整体性能的影响。

请使用浏览器的分享功能分享到微信等