经常有人问到如何在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
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的输出中我们可以看到进程所调用的库文件等,及其读写状态。
本文作者:
eygle,Oracle技术关注者,来自中国最大的Oracle技术论坛itpub.
www.eygle.com是作者的个人站点.你可通过Guoqiang.Gai@gmail.com来联系作者.欢迎技术探讨交流以及链接交换.
原文出处:
http://www.eygle.com/faq/How.To.Get.Process.Memory.Consume.htm
相关推荐
### Oracle Server Process 进程内存消耗分析 #### 一、引言 在进行服务器配置规划时,特别是涉及内存分配的问题时,需要综合考虑多种因素,包括操作系统自身的内存占用、SGA(共享全局区)、PGA(程序全局区)...
### Oracle的内存结构与进程结构 #### 一、Oracle实例(Instance) 在Oracle数据库系统中,每一个运行的数据库实例都紧密关联着一个特定的数据库。这个实例是用户访问数据库的基础平台。实例通常由两大部分组成:...
在上面的示例中,我们可以看到存在两个高 CPU 耗用的 Oracle 进程,它们分别消耗了 47.77%和 40.98% 的 CPU 资源。通过进一步的分析,我们可以找到问题的根源,并采取相应的措施来解决问题。 三、解决方法 解决 ...
### ORACLE内存结构与表空间知识 #### 一、Oracle的服务方式 Oracle提供了三种不同的服务方式,每种方式都有其特定的应用场景和内存管理特点。 ##### 1. 专用服务器 (Dedicated Server) - **服务流程**:当...
#### 一、Oracle内存结构简介 Oracle数据库的内存结构主要由SGA和PGA两部分组成: 1. **SGA**(Shared Global Area):SGA是所有数据库进程共享的一块内存区域,它包含了多个子组件如数据缓冲区、重做日志缓冲区、...
通过 top 命令,可以发现两个高 CPU 耗用的 Oracle 进程,它们分别消耗了 47.77% 和 40.98% 的 CPU 资源。 三、找到存在问题的进程信息 使用 ps -ef 命令可以找到存在问题的进程信息,以确认它们是两个远程连接的...
### Oracle内存过度消耗风险及其影响 #### 一、引言 在现代企业的信息化建设中,Oracle数据库因其稳定性和高效性而被广泛采用。然而,在实际应用过程中,由于配置不当或监控不足等原因,可能会遇到Oracle内存过度...
Oracle内存结构主要分为两大部分:SGA(System Global Area)和PGA(Program Global Area)。SGA是数据库进程共享的一块内存区域,而PGA则是每个单独数据库进程的私有内存空间。 1. SGA(系统全局区) - 数据缓冲...
3. **进程结构**:Oracle11g的进程结构包括用户进程、服务器进程、后台进程和监控进程。用户进程负责接收客户端请求;服务器进程处理客户端请求并与实例交互;后台进程负责维护数据库的正常运行,如归档进程、检查点...
本文将深入解析Oracle 11g中的进程与内存结构,特别是系统全局区(SGA)。 首先,Oracle实例由SGA和后台进程两部分组成。SGA是数据库实例启动时在服务器内存中分配的一块共享内存区域,用于存储数据库数据和控制...
本文将深入探讨Oracle内存结构,包括SGA(System Global Area)和PGA(Program Global Area),以及如何进行全面的内存分析。 一、Oracle内存架构 1. SGA(系统全局区) SGA是Oracle数据库运行时共享的一片内存...
- 进程内存部分:内存消耗与进程相关的数据。 - 流组件部分:涉及Oracle流复制的信息。 - 初始化参数变更部分:数据库初始化参数的变更记录。 - 全局锁和Oracle RAC其他部分:RAC特定的统计信息。 总结: 本文的...
在实际开发中,通常会使用DataSource接口和连接池来管理数据库连接,这能提高性能并减少资源消耗。同时,不同的JDBC驱动可能有不同的特性和性能表现,因此在选择驱动时应考虑应用的需求和性能要求。这个压缩包提供了...
首先,数据库写进程(DBWRn)是负责将内存中的脏缓存块(即被修改但还未写入磁盘的数据块)写入数据文件的。DBWR进程使用LRU(最近最少使用)算法来决定哪些脏缓存块应该优先写入磁盘,以避免频繁的磁盘I/O操作。...
#### Oracle数据库内存结构概览 Oracle数据库的内存管理主要分为两大区域:系统全局区(SGA)和程序全局区(PGA)。其中,SGA是所有数据库进程共享的内存区域,而PGA则为每个服务器进程分配私有内存。SGA又细分为多个子...
- 合并抽取进程可能会增加单个进程的资源消耗,应特别注意性能监控。 - 需要测试合并后的抽取进程以确保数据的准确性和一致性。 - 在合并时,应确保数据提取与传输的一致性,避免数据丢失或重复。 - 合并过程中...
1. **Oracle架构**:Oracle数据库的架构包括服务器进程、后台进程、内存结构和磁盘结构。服务器进程如SQL*Net处理客户端请求,后台进程如DBWR(数据库写入器)负责将缓冲区高速缓存中的更改写入数据文件。 2. **...
本文将深入探讨Oracle内存结构,帮助你理解这个复杂的系统如何高效地处理数据。 Oracle内存结构主要由SGA(System Global Area)和PGA(Program Global Area)两大部分组成,它们在数据库操作中扮演着至关重要的...
SGA是Oracle数据库实例的核心组成部分,它是一组共享的内存结构,用于存储数据库实例的数据和控制信息。在多用户环境中,所有连接到数据库的用户都会共享SGA。当数据库实例启动时,SGA内存被分配,并在关闭时回收。...