Hpunix下Oracle单进程使用内存过多的诊断作者:hrb_qiuyb(ocm,ace)2008年4月18日1引言.......................................................................................................................32本文使用的系统工具............................................................................................32.1glance软件.................................................................................................................32.2kmeminfo工具...........................................................................................................32.3procsize工具.............................................................................................................32.4ps命令........................................................................................................................43问题重现...............................................................................................................43.1测试的环境................................................................................................................43.2测试流程细节............................................................................................................43.3疑惑和问题................................................................................................................73.3.1疑惑1..............................................................................................................................73.3.2疑惑2..............................................................................................................................74解惑及我的见解....................................................................................................74.1glance、kmeminfo及ps都不是进程真实占用物理内存的反映..............................74.1.1glance与kmeminfo对进程的内存占用是一样,都为RSS.............................................74.1.2何为进程的真实的物理内存?何为RSS?.......................................................................84.2glance与kmeminfo的值不一样的原因在于glance的计算方式而产生的差别......84.3ps中的sz是text、data和stack三项的和,而text在hp-ux下属于共享部分,故产生了ps的计算也不准确的状况......................................................................................94.4glance诊断单进程使用过多的问题...........................................................................94.4.1查看内存详细map列表..................................................................................................94.4.2信息项说明....................................................................................................................114.4.3按RSS的定义来算一下................................................................................................125补充.....................................................................................................................125.1如果通过inode发现相应的文件............................................................................125.2如何查看所有进程的实际占用的多少?................................................................131引言一直未太关注过Hpunix下单进程内存的使用问题,因我的各正式系统库的这部分都是很正常的,每个Oracle的进程内存的占用以性能观测工具观察在7mb左右。且系统的内存使用比也比较平稳。直到最近,itpub赵宇的一个问题才使我对Hpunix下Oracle进程的内存使用捉摸一番。帖子中单个Oracle进程以kmeminfo工具及Top工具来看占用内存很多个在100mb之上。新开一个Oracle连接什么也不做相应的后台进程也会占用93.2mb内存。相应的问题就来了,难道发生了内存泄露?单个进程占这么多内存正常吗?93.2mb内存由哪些部分组成的呢?2本文使用的系统工具2.1glance软件Glance是Hp出品的一个非常好用的hpunix的性能监测和诊断工具,功能类似Aix的nmon工具。可以用其十分方便的表现系统性能(cpu、内存、IO、网络。。)的时时态及保存状态的历史,方便的找出系统性能的瓶颈,glance是一个比Top好用的十分多的一个工具。不过glance不是像Top一样的免费软件,glance工具需要购买,也可以向Hp工程师要一个免注册码的glance。Hpunixapplication盘上有一个Trail版的glance,可以使用30天,可以临时用或感受一下。这个工具可以方便的诊断单进程的内存使用,包含了类以solaris中的pmap命令的功能。sd11#[root:/]swlist-lproduct|grep-iglanceGlanceC.03.72.00HPGlancePlus/UX2.2kmeminfo工具Kmeminfo是一个hp的unsupport的内部工具,非常好用,用于内存具体使用的诊断。例如我想知道系统中所有的用户进程每个占用了多少内存?内存占用系统部分每个子部分都用了多少?Buffercache占用的细节等等。Kmeminfo–user查看每个用户进程每个占用了多少内存的结果是按降序排序的,看起来非常的方便。如需要可以向Hp工程师要一个。2.3procsize工具Procsize也是一个unsupport的内部工具,用于观察进程的UAREA、TEXT、DATA、STACK等部分都为多少的细节,只所以使用这个工具是为了更好的说明ps命令的SZ。2.4ps命令不用太细说,应该是每个人都用过,查看进程状态的。3问题重现3.1测试的环境测试的环境是我的一个应用的测试系统,glance观察发现很多的Oracle进程占用了60mb多的内存。系统具体配置如下:系统:3cpu,6GB物理内存,hp-ux11.11的操作系统,做过patch分析无问题。数据库:Oracle9.2.0.62GB内存用于SGA区3.2测试流程细节○1打开glance初步看一下第一页,很多oracle进程占内存(RSS)都在60mb之上ProcessNamePIDPPIDPriName(300%max)CPUIORateRSSCnt--------------------------------------------------------------------------------glance796111741154root0.9/1.80.50.0/0.021.4mb1oraclevcard21941154oracle0.7/0.13060.20.0/0.061.4mb1midaemon150771-16root0.2/0.26648.90.0/0.026.2mb3oraclevcard22041154oracle0.0/0.13062.90.0/0.061.1mb1oraclevcard145891154oracle0.0/0.01.00.0/0.080.5mb1oraclevcard252021154oracle0.0/0.017.80.0/0.061.2mb1oraclevcard251491154oracle0.0/0.027.60.0/0.079.9mb1oraclevcard170691154oracle0.0/0.023.00.0/0.079.6mb1scopeux150781127root0.0/0.13753.40.0/0.123.5mb1oraclevcard22061154oracle0.0/0.13060.90.0/0.061.4mb1oraclevcard22141154oracle0.0/0.0410.90.0/0.064.7mb1oraclevcard22081154oracle0.0/0.13064.90.0/0.061.1mb1oraclevcard160601154oracle0.0/0.039.80.0/0.079.5mb1oraclevcard109871154oracle0.0/0.0104.30.0/0.079.4mb1oraclevcard110091154oracle0.0/0.2695.20.0/0.080.0mb1oraclevcard79001154oracle0.0/0.20.20.0/0.060.7mb1oraclevcard78617860154oracle0.0/0.1