如何查看oracle进程消耗的内存

简介: 原文转自:http://www.eygle.com/archives/2004/12/howto_get_process_memory_consume.html 经常有人问到如何在Unix下确定进程消耗的内存资源,以及为何Top工具的显示非常高。

原文转自:http://www.eygle.com/archives/2004/12/howto_get_process_memory_consume.html

经常有人问到如何在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的输出中我们可以看到进程所调用的库文件等,及其读写状态。

相关文章
|
11月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
611 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
消息中间件 存储 网络协议
从零开始掌握进程间通信:管道、信号、消息队列、共享内存大揭秘
本文详细介绍了进程间通信(IPC)的六种主要方式:管道、信号、消息队列、共享内存、信号量和套接字。每种方式都有其特点和适用场景,如管道适用于父子进程间的通信,消息队列能传递结构化数据,共享内存提供高速数据交换,信号量用于同步控制,套接字支持跨网络通信。通过对比和分析,帮助读者理解并选择合适的IPC机制,以提高系统性能和可靠性。
1894 14
|
8月前
|
存储 人工智能 自然语言处理
AI代理内存消耗过大?9种优化策略对比分析
在AI代理系统中,多代理协作虽能提升整体准确性,但真正决定性能的关键因素之一是**内存管理**。随着对话深度和长度的增加,内存消耗呈指数级增长,主要源于历史上下文、工具调用记录、数据库查询结果等组件的持续积累。本文深入探讨了从基础到高级的九种内存优化技术,涵盖顺序存储、滑动窗口、摘要型内存、基于检索的系统、内存增强变换器、分层优化、图形化记忆网络、压缩整合策略以及类操作系统内存管理。通过统一框架下的代码实现与性能评估,分析了每种技术的适用场景与局限性,为构建高效、可扩展的AI代理系统提供了系统性的优化路径和技术参考。
531 4
AI代理内存消耗过大?9种优化策略对比分析
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
2616 58
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
925 20
|
运维 监控 Ubuntu
【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出
通过设置内存守护进程,可以有效监控和管理系统内存使用情况,防止内存溢出带来的系统崩溃和服务中断。本文介绍了如何在Ubuntu中编写和配置内存守护脚本,并将其设置为systemd服务。通过这种方式,可以在内存使用超过设定阈值时自动采取措施,确保系统稳定运行。
572 4
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
Linux 调度 C语言
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
203 4
|
算法 调度 C++
深入理解操作系统:从进程管理到内存分配
【10月更文挑战第42天】本文将带你进入操作系统的神秘世界,探索其核心概念和关键技术。我们将从进程管理开始,了解操作系统如何协调和管理多个程序的运行;然后,我们将深入研究内存分配,看看操作系统如何有效地分配和管理计算机的内存资源。通过这篇文章,你将获得对操作系统工作原理的深入理解,并学会如何编写高效的代码来利用这些原理。
|
算法 调度 开发者
深入理解操作系统:从进程管理到内存分配
本文旨在为读者提供一个深入浅出的操作系统知识之旅,从进程管理的基础概念出发,探索内存分配的策略与技巧。我们将通过实际代码示例,揭示操作系统背后的逻辑与奥秘,帮助读者构建起对操作系统工作原理的直观理解。文章不仅涵盖理论知识,还提供实践操作的指导,使读者能够将抽象的概念转化为具体的技能。无论你是初学者还是有一定基础的开发者,都能在这篇文章中找到有价值的信息和启发。