怎么查看linuxlinux 查看内存使用量情况

Linux下查看内存的使用情况_Linux教程_Linux公社-Linux系统门户网站
你好,游客
Linux下查看内存的使用情况
来源:Linux社区&
作者:chinxi
Linux下使用什么方法来查看内存的使用情况呢?我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢?
在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法
  对于free命令,可以加上-m参数,使其显示单位为Mb。如下:
[linuxidc@ ~]$&free
-/+ buffers/cache:
[linuxidc@ubuntu ~]$&free -m& & & & & &
total& & &
shared& & buffers& &
cachedMem:& & & & &
984& & & & 534& & & & 450& & & &
52& & & & 248-/+ buffers/cache:& & & & 233& & & & 751Swap:& & & &
1021& & & & & 0& & &
  这里出现了一些名词,有些是我不知道的,我专门去查了一下它们所代表的含义。
表示物理 内存总量
表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
未被分配的内存
系统分配但未被使用的buffers 数量
系统分配但未被使用的cache 数量
实际使用的buffers 与cache 总量,也是实际使用的内存总量
未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存
  同样是做为缓存,buffers和cache又有啥区别呢?
  于是又查了些资料,发现buffers实际应该是叫&缓冲&,其英文解释是:A buffer is something that has yet to be "written" to disk.
  就是说,buffers是将要写入硬盘中的数据缓存。
  而cache的英文解释:A cache is something that has been "read" from the disk and stored for later use.
  就是说,cache是从硬盘或者存储设备读进计算机后缓存在内存中的数据。
  想起看《计算机组成原理》的时候,有看到因特尔的cpu与内存之间有cache,这之间好像有什么区别的样子。
  继续查资料,发现了page cache 和 buffer cache。简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。&
  对于cache和buffer,cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题。
  在free中,buffer 是buffer cache的内存,是块设备的读写缓冲区;cache是page cache的内存, 文件系统的cache。
  关于buffer与chche,这里就不多说了,最后的链接5里讲得挺清楚了。
  这里还有一个名词,Swap,即虚拟内存。当物理内存不够用的时候,就要释放掉一部分空间,以供当前运行程序使用。这些被释放掉的内存的数据就被临时保存在虚拟内存中。但是,并非所有的数据都全被保存,只有那些使用malloc或new生成的对象,他们在文件中并没有相应的&储备&文件,被称为匿名内存数据,需要临时地存进Swap。故Swap又称匿名数据交换空间。在链接3中有其说明。
  至于shared,暂时没查到与之相关的资料,只是在某链接里提了一下其不常用。
二、top命令
  top命令就好像是&linux下的任务管理器&:
  其中,第一行的内容与uptime命令的结果是一样的
[linuxidc@ubuntu ~]$&uptime
10:05:01 up 34 min,
load average: 0.00, 0.11, 0.16
  第二行的名词也比较好理解,就是进程总数与处于R、S、T、Z状态下的进程数:
等待(睡眠)
  第三行就是CPU的使用情况了,如下:&
用户空间占用CPU百分比
内核空间占用CPU百分比
用户进程空间内改变过优先级的进程占用CPU百分比
空闲CPU百分比
等待输入输出的CPU时间百分比
CPU服务于硬件中断所耗费的时间总额
CPU服务软中断所耗费的时间总额
Steal Time
  第四、五行就是内存的使用情况了,和free命令里相似。
  然后是列表的含义:
进程所有者
nice值,负值表示高优先级,正值表示低优先级
进程使用的虚拟内存总量
进程使用的、未被换出的物理内存大小
共享内存大小
上次更新到现在的CPU时间占用百分比
进程使用的物理内存百分比
进程使用CPU总时间
命令名、命令行
默认情况下只显示这些比较重要的信息。在TOP界面下,按f可以修改显示的内容。这个界面我并不是很懂,就不叙述了。
三、vmstat命令
[linuxidc@ubuntu ~]$&vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
cs us sy id wa st
76 187932 154112 372228
  具体参数如下表:
The number of processes waiting for run time. &
处于运行队列中的内核线程数目(进程数)。
The number of processes in uninterruptible sleep.
置于等待队列(等待资源、等待输入/输出)的内核线程数目。 处于block队列中不可中断的进程数
the amount of virtual memory used.&
可用的虚拟交换内存
the amount of idle memory.
the amount of memory used as buffers.
已用缓冲数目
the amount of memory used as cache.
已用缓存数目
Amount of memory swapped in from disk (/s).
???磁盘到内存的交换页数目 (单位/S)
Amount of memory swapped to disk (/s).
从交换内存到磁盘的交换页数目(单位/S)
Blocks received from a block device (blocks/s).
接收到块设备的块数(块/秒)
Blocks sent to a block device (blocks/s).
发送到块设备的块数(块/秒)
The number of interrupts per second, including the clock.
每秒中断数,包括时钟中断
The number of context switches per second.
每秒上下文切换数
Time spent running non-kernel code. (user time, including nice time)
用户时间,处于用户模式的时间百分比
Time spent running kernel code. (system time)
系统时间,处于内核模式的时间百分比
Time spent idle. Prior to&&2.5.41, this includes IO-wait time.
CPU空闲时间,空闲时间百分比
Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
CPU 空闲时间,在此期间系统有未完成的磁盘/NFS I/O 请求
Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
来自于虚拟机偷取的CPU所占的百分比(这个不会翻译...)
学习时参考的链接:
本文永久更新链接地址:
相关资讯 & & &
& (02/10/:00)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款如何查看内存使用的历史记录?Linux - CNode技术社区
积分: 2410
这家伙很懒,什么个性签名都没有留下。
使用free, top 或者 htop 可以看到实时的
但是如何看到历史的呢?
Digital ocean 上有CPU, DISK 和 BANDWIDTH的,但是没有 ram。
写一个crontab,每分钟free一次
太暴力的吧
有没有温柔点的?
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的下次自动登录
现在的位置:
& 综合 & 正文
linux下查看oracle 进程使用内存
1.Linux下Oracle进程的杀除
因为程序连接oracle错误,导致oracle连接数很多,为了临时解决这个问题,在cron下设置了一个任务用来杀除Oracle的连接进程,脚本如下:
ps -ef | grep XE | grep LOCAL=NO | awk '{print $2}' | xargs kill -KILL
因为awk使用方法不是很熟,目前杀除所有连接进程,进阶可以根据时间杀除一直连接的进程,有待进一步研究解决。
2.在linux中该如何kill掉一个oracle进程
,找到你要处理的进程,并记录paddr
addr='以上的paddr';
3、以oracle用户telnet至linux
oracle&kill
问题一:linux9.0+oracle9i环境:
linux的内存3G,竟然占用了2.9G其中linux系统的oracleplife进程很多,竟然占用了2G内存????(注:数据库名plife)
1 为啥oracle占用这么多内存?
2 linux一般oracle数据库进程都有哪些,占用内存大小有哪些因素决定?
3 oracle会话对内存影响大不大?如果会话处于不活动状态,是否还大量占用内存?
4 为什么oracle会话处于不活动状态,oracle不及时清除?oracle能自动清楚吗?怎么设置?
1:给你的初始参数,可能SGA设置的大了。
2:可以用pmap看
3:处于不活动状态可能还会占用
4:会话断开就回收了
用OraKill结束失控的Oracle 进程
一个用户进程偶尔会挂起或占用过多资源而拒绝其它会话。如果 DBA 依然能够访问数据库,她通常可以发出以下查询:
select s.username, s.osuser, s.sid, s.serial#, p.spid
from v$session s,v$process p
where s.paddr = p.addr
这个查询将返回数据库用户名、操作系统用户名、会话 ID,序列号和系统进程 ID(SPID)。然后,DBA 用户就可以发出以下命令(前面的查询返回的使用 SID 和SERIAL# 信息):
ALTER SYSTEM KILL SESSION 'sid,serial#';
ALTER SYSTEM KILL SESSION '9,203';
使用这条语句有两个问题。第一,分配给这个进程的任何锁或资源在会话完全超时之前不会被释放。第二,查询和 kill 命令需要能够访问数据库。如果一个进行失去控制,那么数据库访问可能会出现问题。
在一个 UNIX 数据库中,下一步是 ps 命令输出的 UNIX 提示中定位进程(同样是查找 OSUSER 和 SPID 等 ID)然后使用
kill -9 spid 结束失控的后台进程。然而,在 Windows 中,只有一个进程 ORACLE.EXE,而且用户连接是在 Windows 线程中处理的,而不在进程中处理的。如果使用 Windows 任务管理器结束 Oracle 线程,就有可能影响所有用户和后台线程,并导致数据库崩溃。
出于这些原因,Oracle 在Oracle Home/bin 目录下提供了一个 orakill.exe 命令,这个命令的参数与ALTER SYSTEM KILL SESSION 相同,但是不要求数据库连接。要定位一个特定的线程,需要寻找一个能够显示属于一个进程的所有线程的程序。Windows 任务管理器只能显示线程数和进程。你需要从微软的资源工具包中寻找一个用于 Windows 2000 和 NT 的工具程序,比如免费的,或者Qslice.exe(该工具是基于
Windows 的),或者(Pstat.exe 是一个命令行工具)。简单地在 orakill 命令后输入线程 ID(以十进制表示)和 SID 即可:
orakill &sid& &spid&
orakill ORCL 2760
"Kill of thread id 2760 in instance ORCL successfully signalled[sic]."
应该只有在不能访问数据库来执行ALTER SYSTEM KILL SESSION 的情况才使用orakill。如果意外结束了一个必要的后台进程,比如 PMON,那么很可能会导致数据库崩溃。新手永远不要这样做。
经常有人问到如何在Unix下确定进程消耗的内存资源,以及为何Top工具的显示非常高。
有人说Top的输出不精确,这种说法是不确切的。实际上是Top输出显示的Oracle进程内存使用,包含了SGA部分。这也是SGA的意义所在。
SGA可以被共享,可以被所有进程所访问,在进程的寻址空间里就包含了SGA的大小。
至于如何更为精确的确定进程的内存消耗,本文简要介绍如下(在QuickIO下,你可能无法看到本文描述情况):
1.系统平台及数据库版本
$ uname -a
SunOS billing 5.8 Generic_ sun4u sparc SUNW,Ultra-4
Sun Microsystems Inc.
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) , 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$
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
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
Fixed Size
731440 bytes
Variable Size
Database Buffers
Redo Buffers
811008 bytes
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
load averages:
54 processes:
52 sleeping, 1 stopped, 1 on cpu
CPU states: 99.3% idle,
0.0% user,
0.3% kernel,
0.4% iowait,
Memory: 2.0G real, 1.2G free, 404M swap in use, 5.1G swap free
PID USERNAME THR PR NCE
CPU COMMAND
10027 oracle
10052 oracle
275M sleep
0.01% oracle
11264 oracle 22 58
329M 275M sleep
0.00% oracle
10056 oracle
275M sleep
0.00% oracle
11262 oracle
270M sleep
0.00% oracle
11260 oracle
274M sleep
0.00% oracle
11266 oracle
276M sleep
0.00% oracle
10054 oracle
275M sleep
0.00% oracle
23519 oracle
278M sleep
0.00% oracle
11258 oracle
271M sleep
0.00% oracle
11285 oracle
0 17.3M 3848K sleep
0.00% tnslsnr
11270 oracle
271M sleep
0.00% oracle
2990 oracle
276M sleep
0.00% oracle
9872 oracle
23498 oracle
278M sleep
0.00% oracle
3.Pmap输出及进程内存计算
$ ps -ef|grep ora_
0 10:49:57 pts/2
0:00 grep ora_
oracle 11258
0:31 ora_pmon_hsbill
oracle 11260
52:47 ora_dbw0_hsbill
oracle 11262
73:55 ora_lgwr_hsbill
oracle 11264
59:01 ora_ckpt_hsbill
oracle 11266
26:50 ora_smon_hsbill
oracle 11268
0:00 ora_reco_hsbill
oracle 11270
0:06 ora_cjq0_hsbill
oracle 10054
18:27 ora_j001_hsbill
oracle 10052
21:19 ora_j000_hsbill
0:05 ora_j003_hsbill
oracle 10056
3:04 ora_j002_hsbill
0 09:54:32 ?
0:00 ora_j004_hsbill
$ pmap 11264
ora_ckpt_hsbill
53824K read/exec
/opt/oracle/product/9.2.0/bin/oracle
872K read/write/exec
/opt/oracle/product/9.2.0/bin/oracle
7968K read/write/exec
K read/write/exec/shared
[ ism shmid=0x64 ]
FFFFFFFF7C802000
8K read/write/exec
FFFFFFFF7C814000
8K read/write/exec
FFFFFFFF7C826000
8K read/write/exec
FFFFFFFF7C838000
8K read/write/exec
FFFFFFFF7C84A000
8K read/write/exec
FFFFFFFF7C85C000
8K read/write/exec
FFFFFFFF7C86E000
8K read/write/exec
FFFFFFFF7C880000
8K read/write/exec
FFFFFFFF7C892000
8K read/write/exec
FFFFFFFF7C8A4000
8K read/write/exec
FFFFFFFF7C8B6000
8K read/write/exec
FFFFFFFF7C8C8000
8K read/write/exec
FFFFFFFF7C8D6000
8K read/write/exec
FFFFFFFF7C8DA000
8K read/write/exec
FFFFFFFF7C8E8000
8K read/write/exec
FFFFFFFF7C8EC000
8K read/write/exec
FFFFFFFF7C8FA000
8K read/write/exec
FFFFFFFF7C8FE000
8K read/write/exec
FFFFFFFF7C90C000
8K read/write/exec
FFFFFFFF7C910000
8K read/write/exec
FFFFFFFF7C91E000
8K read/write/exec
FFFFFFFF7CA02000
8K read/write/exec
FFFFFFFF7CA10000
8K read/write/exec
FFFFFFFF7CA14000
8K read/write/exec
FFFFFFFF7CA22000
8K read/write/exec
FFFFFFFF7CA26000
8K read/write/exec
FFFFFFFF7CA34000
8K read/write/exec
FFFFFFFF7CA38000
8K read/write/exec
FFFFFFFF7CA46000
8K read/write/exec
FFFFFFFF7CA4A000
8K read/write/exec
FFFFFFFF7CA58000
8K read/write/exec
FFFFFFFF7CA5C000
8K read/write/exec
FFFFFFFF7CA6A000
8K read/write/exec
FFFFFFFF7CA6E000
8K read/write/exec
FFFFFFFF7CA7C000
8K read/write/exec
FFFFFFFF7CA80000
8K read/write/exec
FFFFFFFF7CA8E000
8K read/write/exec
FFFFFFFF7CA92000
8K read/write/exec
FFFFFFFF7CAA0000
8K read/write/exec
FFFFFFFF7CAA4000
8K read/write/exec
FFFFFFFF7CAB2000
8K read/write/exec
FFFFFFFF7CAB6000
8K read/write/exec
FFFFFFFF7CAC4000
8K read/write/exec
FFFFFFFF7CAC8000
8K read/write/exec
FFFFFFFF7CAD6000
8K read/write/exec
FFFFFFFF7CADA000
8K read/write/exec
FFFFFFFF7CAE8000
8K read/write/exec
FFFFFFFF7CAEC000
8K read/write/exec
FFFFFFFF7CAFA000
8K read/write/exec
FFFFFFFF7CAFE000
8K read/write/exec
FFFFFFFF7CB0C000
8K read/write/exec
FFFFFFFF7CB10000
8K read/write/exec
FFFFFFFF7CB1E000
8K read/write/exec
FFFFFFFF7CC00000
8K read/write/exec
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
FFFFFFFF7CF10000
8K read/write
FFFFFFFF7CF50000
8K read/write
FFFFFFFF7CF60000
16K read/write
FFFFFFFF7CF68000
32K read/write
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
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
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
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
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
计算后台进程使用的内存资源:
337360K - 266240K = 71,120k
这就是一个进程所消耗的内存.
4.用户进程内存使用举例
$ ps -ef|grep LOCAL
oracle 10080
0 11:00:25 pts/2
0:00 grep LOCAL
oracle 23498
0:00 oraclehsbill (LOCAL=NO)
oracle 23519
0:50 oraclehsbill (LOCAL=NO)
$ pmap 23519
oraclehsbill (LOCAL=NO)
53824K read/exec
/opt/oracle/product/9.2.0/bin/oracle
872K read/write/exec
/opt/oracle/product/9.2.0/bin/oracle
848K read/write/exec
K read/write/exec/shared
[ ism shmid=0x64 ]
FFFFFFFF7CC00000
8K read/write
FFFFFFFF7CC10000
8K read/write
FFFFFFFF7CC50000
136K read/write
FFFFFFFF7CC76000
40K read/write
FFFFFFFF7CD00000
8K read/write/exec
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
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
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
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
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
从PMAP的输出中我们可以看到进程所调用的库文件等,及其读写状态。
【上篇】【下篇】怎样正确查看Linux VPS的内存占用情况 /瑞豪开源(RASHOST)
Leave a Comment
要发表评论,您必须先。
北京瑞豪开源科技有限公司
北京市西城区新街口外大街8号金丰和创业园B座2层西侧231
邮政编码:100088
公司电话:010-
夜间紧急电话:176
新浪微博:
腾讯微博:
投诉建议:Linux服务器系统内存监控方法详解
稿源:互联网
内存是Linux内核所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存,就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。  一、内存使用情况监测(1)实时监控内存使用情况在命令行使用“Free”命令可以监控内存使用情况#freetotalusedfreesharedbufferscachedMem:01004-/+buffers/cache:Swap:2上面给出了一个256兆的RAM和512兆交换空间的系统情况。第三行输出(Mem:)显示物理内存。total列不显示核心使用的物理内存(通常大约1MB)。used列显示被使用的内存总额(第二行不计缓冲)。free列显示全部没使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对对换空间,显示的信息类似上面。如果这行为全0,那么没使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用—h参数以字节为单位显示内存使用情况,或者可以使用—m参数以兆字节为单位显示内存使用情况。还可以通过—s参数使用命令来不间断地监视内存使用情况:#free–b–s2这个命令将会在终端窗口中连续不断地报告内存的使用情况,每2秒钟更新一次。(2)组合watch與free命令用来实时监控内存使用情况:#watch-n2-dfreeEvery2.0s:freeFriJul606:06:122007totalusedfreesharedbufferscachedMem:784-/+buffers/cache:Swap:5928watch命令会每两秒执行free一次,执行前会清除屏幕,在同样位置显示数据。因为watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率。可以使用-n选项,控制执行的频率;也可以利用-d选项,让命令将每次不同的地方显示出来。Watch命令会一直执行,直到您按下[Ctrl]-[C]为止。二、虚拟内存的概念(1)Linux虚拟内存实现机制Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制。首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求;如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址。(2)虚拟内存容量设定也许有人告诉你,应该分配2倍于物理内存的虚拟内存,但这是个不固定的规律。如果你的物理保存比较小,可以这样设定。如果你有1G物理内存或更多的话,可以缩小一下虚拟内存。Linux会把大量的内存用做Cache的,但在资源紧张时回收回.。你只要看到swap为0或者很小就可以放心了,因为内存放着不用才是最大的浪费。#p#分页标题#e#三、使甩vmstat命令监视虚拟内存使用情况vmstat是VirtualMeomoryStatistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat55(表示在5秒时间内进行5次采样)命令测试。将得到一个数据汇总它可以反映真正的系统情况。#vmstat55procs-----------memory-------------swap-------io------system------cpu----rbswpdfreebuffcachesisobiboincsussyidwavmstat命令输出分成六个部分:(1)进程procs:r:在运行队列中等待的进程数。b:在等待io的进程数。(2)内存memoy:swpd:现时可用的交换内存(单位KB)。free:空闲的内存(单位KB)。buff:缓冲去中的内存数(单位:KB)。cache:被用来做为高速缓存的内存数(单位:KB)。(3)swap交换页面si:从磁盘交换到内存的交换页数量,单位:KB/秒。so:从内存交换到磁盘的交换页数量,单位:KB/秒。(4)io块设备:bi:发送到块设备的块数,单位:块/秒。bo:从块设备接收到的块数,单位:块/秒。(5)system系统:in:每秒的中断数,包括时钟中断。cs:每秒的环境(上下文)切换次数。(6)cpu中央处理器:cs:用户进程使用的时间。以百分比表示。sy:系统进程使用的时间。以百分比表示。id:中央处理器的空闲时间。以百分比表示。如果r经常大于4,且id经常小于40,表示中央处理器的负荷很重。如果bi,bo长期不等于0,表示物理内存容量太小。#p#分页标题#e#四、Linux服务器的内存泄露和回收内存的方法1、内存泄漏的定义:一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。2、内存泄露的危害从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。3、内存泄露的检测和回收对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。在Linux或者unix下,C、C++语言是最使用工具。但是我们的C++程序缺乏相应的手段来检测内存信息,而只能使用top指令观察进程的动态内存总额。而且程序退出时,我们无法获知任何内存泄漏信息。使用kill命令使用Linux命令回收内存,我们可以使用Ps、Kill两个命令检测内存使用情况和进行回收。在使用超级用户权限时使用命令“Ps”,它会列出所有正在运行的程序名称,和对应的进程号(PID)。Kill命令的工作原理是:向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID)。应用例子:为了高效率回收内存可以使用命令ps参数v:[root@www~]#psvPIDTTYSTATTIMEMAJFLTRSDRSRSS%MEMCOMMAND2542tty1Ss+0:.1/sbin/mingettytty12543tty2Ss+0:.1/sbin/mingettytty22547tty3Ss+0:.1/sbin/mingettytty32548tty4Ss+0:.1/sbin/mingettytty42574tty5Ss+0:.1/sbin/mingettytty52587tty6Ss+0:.1/sbin/mingettytty62657tty7Ss+1:/usr/bin/Xorg:0-br-a2670pts/2Ss0:960.6-bash3008pts/4Ss0:720.6/bin/bash3029pts/4S+0:0.2ping192.168.1.123030pts/2R+0:0.3psv然后如果想回收Ping命令的内存的话,使用命令:#Kill-93029使用工具软件Memprof是一个非常具有吸引力且非常易于使用的软件,它由RedHat的OwenTalyor创立。这个工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。这个工具直接就可以执行,并且其工作起来无需对源代码进行任何修改。在程序执行时,这个工具会以图形化的方式显示内存的使用情况。上一页[1][2][3]
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页

我要回帖

更多关于 linux 查内存使用情况 的文章

 

随机推荐