Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1279649
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-13 13:34:41

经常有人问到如何在Unix下确定进程消耗的资源,以及为何Top工具的显示非常高。

  有人说Top的输出不精确,这种说法是不确切的。实际上是Top输出显示的Oracle进程内存使用,包含了SGA部分。这也是SGA的意义所在。

  SGA可以被共享,可以被所有进程所访问,在进程的寻址空间里就包含了SGA的大小。

  至于如何更为精确的确定进程的内存消耗,本文简要介绍如下(在QuickIO下,你可能无法看到本文描述情况):

  1.系统平台及数据库版本

  $ uname -a
  SunOS billing 5.8 Generic_108528-23 sun4u sparc SUNW,Ultra-4

  Sun Microsystems Inc.   SunOS 5.8       Generic Patch   October 2001
  $ sqlplus "/ as sysdba"

  SQL*Plus: Release 9.2.0.4.0 - Production on Sun Nov 28 10:48:00 2004

  Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

  
  Connected to:
  Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
  With the Partitioning, OLAP and Oracle Data Mining options
  JServer Release 9.2.0.4.0 - Production

  SQL> select * from v$version;

  BANNER
  ----------------------------------------------------------------
  Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
  PL/SQL Release 9.2.0.4.0 - Production
  CORE    9.2.0.3.0       Production
  TNS for Solaris: Version 9.2.0.4.0 - Production
  NLSRTL Version 9.2.0.4.0 - Production

  SQL> show sga

  Total System Global Area  253200688 bytes
  Fixed Size                   731440 bytes
  Variable Size             167772160 bytes
  Database Buffers           83886080 bytes
  Redo Buffers                 811008 bytes
  SQL> exit
  Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
  With the Partitioning, OLAP and Oracle Data Mining options
  JServer Release 9.2.0.4.0 - Production                     

  2.Top输出

  $ top

  load averages:  0.12,  0.05,  0.04         billing                10:49:52
  54 processes:  52 sleeping, 1 stopped, 1 on cpu
   states: 99.3% idle,  0.0% user,  0.3% kernel,  0.4% iowait,  0.0% swap
  Memory: 2.0G real, 1.2G free, 404M swap in use, 5.1G swap free

     PID USERNAME THR PR NCE  SIZE   RES STATE   TIME FLTS    CPU COMMAND
   10027 oracle     1 58   0 2568K 1680K cpu03   0:00    0  0.09% top
   10052 oracle     1 58   0  322M  275M sleep  21:18    0  0.01% oracle
   11264 oracle 22 58  0  329M 275M sleep  59:01 0  0.00% oracle
   10056 oracle     1 58   0  322M  275M sleep   3:04    0  0.00% oracle
   11262 oracle    14 58   0  331M  270M sleep  73:55    0  0.00% oracle
   11260 oracle   258 59   0  333M  274M sleep  52:46    0  0.00% oracle
   11266 oracle     1 58   0  325M  276M sleep  26:50    0  0.00% oracle
   10054 oracle     1 59   0  322M  275M sleep  18:27    0  0.00% oracle
   23519 oracle     1 55   0  322M  278M sleep   0:50    0  0.00% oracle
   11258 oracle     1 59   0  323M  271M sleep   0:31    0  0.00% oracle
   11285 oracle     1 58   0 17.3M 3848K sleep   0:20    0  0.00% tnslsnr
   11270 oracle     1 58   0  322M  271M sleep   0:06    0  0.00% oracle
    2990 oracle     1 59   0  322M  276M sleep   0:04    0  0.00% oracle
    9872 oracle     1 48   0 1880K 1192K sleep   0:00    0  0.00% ksh
   23498 oracle     1 58   0  323M  278M sleep   0:00    0  0.00% oracle

  3.Pmap输出及进程内存计算

  $ ps -ef|grep ora_
    oracle  9881  9872  0 10:49:57 pts/2    0:00 grep ora_
    oracle 11258     1  0   Jul 19 ?        0:31 ora_pmon_hsbill
    oracle 11260     1  0   Jul 19 ?       52:47 ora_dbw0_hsbill
    oracle 11262     1  0   Jul 19 ?       73:55 ora_lgwr_hsbill
    oracle 11264     1  0   Jul 19 ?       59:01 ora_ckpt_hsbill
    oracle 11266     1  0   Jul 19 ?       26:50 ora_smon_hsbill
    oracle 11268     1  0   Jul 19 ?        0:00 ora_reco_hsbill
    oracle 11270     1  0   Jul 19 ?        0:06 ora_cjq0_hsbill
    oracle 10054     1  0   Nov 02 ?       18:27 ora_j001_hsbill
    oracle 10052     1  0   Nov 02 ?       21:19 ora_j000_hsbill
    oracle  2990     1  0   Nov 25 ?        0:05 ora_j003_hsbill
    oracle 10056     1  0   Nov 02 ?        3:04 ora_j002_hsbill
    oracle  8879     1  0 09:54:32 ?        0:00 ora_j004_hsbill

  
  $ pmap 11264
  11264:  ora_ckpt_hsbill
  0000000100000000  53824K read/exec         /opt/oracle/product/9.2.0/bin/oracle
  000000010358E000    872K read/write/exec   /opt/oracle/product/9.2.0/bin/oracle
  0000000103668000   7968K read/write/exec     [ heap ]
  0000000380000000 266240K read/write/exec/shared  [ ism shmid=0x64 ]
  FFFFFFFF7C802000      8K read/write/exec     [ anon ]
  FFFFFFFF7C814000      8K read/write/exec     [ anon ]
  FFFFFFFF7C826000      8K read/write/exec     [ anon ]
  FFFFFFFF7C838000      8K read/write/exec     [ anon ]
  FFFFFFFF7C84A000      8K read/write/exec     [ anon ]
  FFFFFFFF7C85C000      8K read/write/exec     [ anon ]
  FFFFFFFF7C86E000      8K read/write/exec     [ anon ]
  FFFFFFFF7C880000      8K read/write/exec     [ anon ]
  FFFFFFFF7C892000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8A4000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8B6000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8C8000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8D6000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8DA000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8E8000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8EC000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8FA000      8K read/write/exec     [ anon ]
  FFFFFFFF7C8FE000      8K read/write/exec     [ anon ]
  FFFFFFFF7C90C000      8K read/write/exec     [ anon ]
  FFFFFFFF7C910000      8K read/write/exec     [ anon ]
  FFFFFFFF7C91E000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA02000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA10000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA14000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA22000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA26000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA34000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA38000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA46000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA4A000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA58000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA5C000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA6A000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA6E000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA7C000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA80000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA8E000      8K read/write/exec     [ anon ]
  FFFFFFFF7CA92000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAA0000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAA4000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAB2000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAB6000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAC4000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAC8000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAD6000      8K read/write/exec     [ anon ]
  FFFFFFFF7CADA000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAE8000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAEC000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAFA000      8K read/write/exec     [ anon ]
  FFFFFFFF7CAFE000      8K read/write/exec     [ anon ]
  FFFFFFFF7CB0C000      8K read/write/exec     [ anon ]
  FFFFFFFF7CB10000      8K read/write/exec     [ anon ]
  FFFFFFFF7CB1E000      8K read/write/exec     [ anon ]
  FFFFFFFF7CC00000      8K read/write/exec     [ anon ]
  FFFFFFFF7CD00000     24K read/exec         /usr/lib/sparcv9/nss_files.so.1
  FFFFFFFF7CE06000      8K read/write/exec   /usr/lib/sparcv9/nss_files.so.1
  FFFFFFFF7CF00000      8K read/write          [ anon ]
  FFFFFFFF7CF10000      8K read/write          [ anon ]
  FFFFFFFF7CF50000      8K read/write          [ anon ]
  FFFFFFFF7CF60000     16K read/write          [ anon ]
  FFFFFFFF7CF68000     32K read/write          [ anon ]
  FFFFFFFF7D000000     16K read/exec         /usr/platform/sun4u/lib/sparcv9/libc_psr.so.1
  FFFFFFFF7D100000     16K read/exec         /usr/lib/sparcv9/libmp.so.2
  FFFFFFFF7D204000      8K read/write/exec   /usr/lib/sparcv9/libmp.so.2
  FFFFFFFF7D300000      8K read/write/exec     [ anon ]
  FFFFFFFF7D400000     88K read/exec         /usr/lib/sparcv9/libm.so.1
  FFFFFFFF7D516000      8K read/write/exec   /usr/lib/sparcv9/libm.so.1
  FFFFFFFF7D600000      8K read/exec         /usr/lib/sparcv9/libkstat.so.1
  FFFFFFFF7D702000      8K read/write/exec   /usr/lib/sparcv9/libkstat.so.1
  FFFFFFFF7D800000     32K read/exec         /usr/lib/sparcv9/librt.so.1
  FFFFFFFF7D908000      8K read/write/exec   /usr/lib/sparcv9/librt.so.1
  FFFFFFFF7DA00000     32K read/exec         /usr/lib/sparcv9/libaio.so.1
  FFFFFFFF7DB08000      8K read/write/exec   /usr/lib/sparcv9/libaio.so.1
  FFFFFFFF7DC00000    720K read/exec         /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DDB4000     56K read/write/exec   /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DDC2000      8K read/write/exec   /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DF00000      8K read/write/exec     [ anon ]
  FFFFFFFF7E000000     32K read/exec         /usr/lib/sparcv9/libgen.so.1
  FFFFFFFF7E108000      8K read/write/exec   /usr/lib/sparcv9/libgen.so.1
  FFFFFFFF7E200000    672K read/exec         /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E3A8000     56K read/write/exec   /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E3B6000     40K read/write/exec   /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E400000   5328K read/exec         /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EA32000    384K read/write/exec   /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EA92000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EB00000     56K read/exec         /usr/lib/sparcv9/libsocket.so.1
  FFFFFFFF7EC0E000     16K read/write/exec   /usr/lib/sparcv9/libsocket.so.1
  FFFFFFFF7ED00000      8K read/write/exec     [ anon ]
  FFFFFFFF7EE00000     32K read/exec         /opt/oracle/product/9.2.0/lib/libskgxn9.so
  FFFFFFFF7EF06000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libskgxn9.so
  FFFFFFFF7F000000      8K read/exec         /opt/oracle/product/9.2.0/lib/libskgxp9.so
  FFFFFFFF7F100000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libskgxp9.so
  FFFFFFFF7F200000      8K read/exec         /opt/oracle/product/9.2.0/lib/libodmd9.so
  FFFFFFFF7F300000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libodmd9.so
  FFFFFFFF7F400000      8K read/exec         /usr/lib/sparcv9/libdl.so.1
  FFFFFFFF7F500000      8K read/write/exec     [ anon ]
  FFFFFFFF7F600000    152K read/exec         /usr/lib/sparcv9/ld.so.1
  FFFFFFFF7F724000     16K read/write/exec   /usr/lib/sparcv9/ld.so.1
  FFFFFFFF7FFFA000     24K read/write          [ stack ]
           total   337360K
  $      
   

  计算后台进程使用的内存资源:

  337360K - 266240K = 71,120k

  这就是一个进程所消耗的内存.

  4.用户进程内存使用举例

  $ ps -ef|grep LOCAL
    oracle 10080  9872  0 11:00:25 pts/2    0:00 grep LOCAL
    oracle 23498     1  0   Nov 25 ?        0:00 oraclehsbill (LOCAL=NO)
    oracle 23519     1  0   Nov 25 ?        0:50 oraclehsbill (LOCAL=NO)
  $ pmap 23519
  23519:  oraclehsbill (LOCAL=NO)
  0000000100000000  53824K read/exec         /opt/oracle/product/9.2.0/bin/oracle
  000000010358E000    872K read/write/exec   /opt/oracle/product/9.2.0/bin/oracle
  0000000103668000    848K read/write/exec     [ heap ]
  0000000380000000 266240K read/write/exec/shared  [ ism shmid=0x64 ]
  FFFFFFFF7CC00000      8K read/write          [ anon ]
  FFFFFFFF7CC10000      8K read/write          [ anon ]
  FFFFFFFF7CC50000    136K read/write          [ anon ]
  FFFFFFFF7CC76000     40K read/write          [ anon ]
  FFFFFFFF7CD00000      8K read/write/exec     [ anon ]
  FFFFFFFF7CE00000     24K read/exec         /usr/lib/sparcv9/nss_files.so.1
  FFFFFFFF7CF06000      8K read/write/exec   /usr/lib/sparcv9/nss_files.so.1
  FFFFFFFF7D000000     16K read/exec         /usr/platform/sun4u/lib/sparcv9/libc_psr.so.1
  FFFFFFFF7D100000     16K read/exec         /usr/lib/sparcv9/libmp.so.2
  FFFFFFFF7D204000      8K read/write/exec   /usr/lib/sparcv9/libmp.so.2
  FFFFFFFF7D300000      8K read/write/exec     [ anon ]
  FFFFFFFF7D400000     88K read/exec         /usr/lib/sparcv9/libm.so.1
  FFFFFFFF7D516000      8K read/write/exec   /usr/lib/sparcv9/libm.so.1
  FFFFFFFF7D600000      8K read/exec         /usr/lib/sparcv9/libkstat.so.1
  FFFFFFFF7D702000      8K read/write/exec   /usr/lib/sparcv9/libkstat.so.1
  FFFFFFFF7D800000     32K read/exec         /usr/lib/sparcv9/librt.so.1
  FFFFFFFF7D908000      8K read/write/exec   /usr/lib/sparcv9/librt.so.1
  FFFFFFFF7DA00000     32K read/exec         /usr/lib/sparcv9/libaio.so.1
  FFFFFFFF7DB08000      8K read/write/exec   /usr/lib/sparcv9/libaio.so.1
  FFFFFFFF7DC00000    720K read/exec         /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DDB4000     56K read/write/exec   /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DDC2000      8K read/write/exec   /usr/lib/sparcv9/libc.so.1
  FFFFFFFF7DF00000      8K read/write/exec     [ anon ]
  FFFFFFFF7E000000     32K read/exec         /usr/lib/sparcv9/libgen.so.1
  FFFFFFFF7E108000      8K read/write/exec   /usr/lib/sparcv9/libgen.so.1
  FFFFFFFF7E200000    672K read/exec         /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E3A8000     56K read/write/exec   /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E3B6000     40K read/write/exec   /usr/lib/sparcv9/libnsl.so.1
  FFFFFFFF7E400000   5328K read/exec         /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EA32000    384K read/write/exec   /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EA92000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libjox9.so
  FFFFFFFF7EB00000     56K read/exec         /usr/lib/sparcv9/libsocket.so.1
  FFFFFFFF7EC0E000     16K read/write/exec   /usr/lib/sparcv9/libsocket.so.1
  FFFFFFFF7ED00000      8K read/write/exec     [ anon ]
  FFFFFFFF7EE00000     32K read/exec         /opt/oracle/product/9.2.0/lib/libskgxn9.so
  FFFFFFFF7EF06000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libskgxn9.so
  FFFFFFFF7F000000      8K read/exec         /opt/oracle/product/9.2.0/lib/libskgxp9.so
  FFFFFFFF7F100000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libskgxp9.so
  FFFFFFFF7F200000      8K read/exec         /opt/oracle/product/9.2.0/lib/libodmd9.so
  FFFFFFFF7F300000      8K read/write/exec   /opt/oracle/product/9.2.0/lib/libodmd9.so
  FFFFFFFF7F400000      8K read/exec         /usr/lib/sparcv9/libdl.so.1
  FFFFFFFF7F500000      8K read/write/exec     [ anon ]
  FFFFFFFF7F600000    152K read/exec         /usr/lib/sparcv9/ld.so.1
  FFFFFFFF7F724000     16K read/write/exec   /usr/lib/sparcv9/ld.so.1
  FFFFFFFF7FFF2000     56K read/write          [ stack ]
           total   329968K
  $      
   

  从PMAP的输出中我们可以看到进程所调用的库文件等,及其读写状态。

阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~