Unix/Linux 系统自动化管理 内存管理篇(2)
- UID
- 1066743
|
Unix/Linux 系统自动化管理 内存管理篇(2)
系统内存监控命令系统管理员除了需要对特定的进程内存占用情况跟踪观察外,更多的时候需要监控整个系统的内存使用信息。 vmstat 和 svmon 能够帮助我们轻易的获得这方面的数据。
vmstat
vmstat(Virtual Memory Statistics) 命令能够帮助我们监控内核进程,虚拟内存,磁盘和处理器统计信息。 它是对系统的整体情况进行统计,不足之处就是无法对某个特定进程做分析。 vmstat 的输出可以是以百分比表示的平均值,也可以是其统计的总和。
如果没有指定任何的参数,vmstat 将会输出系统从开机启动之后所有的虚拟内存活动。
我们经常使用类似 vmstat 5 5 的命令参数,代表着表示在 5 秒时间做 5 次采样。
清单 4. vmstat5 5 命令监控内存资源使用状况1
2
3
4
5
6
7
8
| System Configuration: lcpu=4 mem=1024MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
0 0 208817 44828 0 0 0 0 0 0 3 60 220 0 0 99 0
0 0 208817 44828 0 0 0 0 0 0 2 27 225 0 0 99 0
0 0 208817 44828 0 0 0 0 0 0 4 29 219 0 0 99 0
|
下面将对输出的结果中涉及到的内存管理相关字段进行说明:
memory:物理内存和虚拟内存的使用信息。如果虚拟内存被访问,那么将被认为是活动的。.
- avm 活动的虚拟内存页面
- fre 空闲内存列表的大小。注:很大一部分的实际内存都被用来作为文件系统的缓存用来加快应用程序的运行速度,所以空闲内存大小一般保持在很小的数值。
page:缺页异常和分页活动信息。此数值是间隔时间内的平均值,以秒为单位。
- re 页面调度输入 / 输出列表
- pi 从页面空间输入的页面
- po 写入页面空间的页面
- fr 释放的页面
- sr 通过页面替换算法扫描页面的频率
- cy 页面替换算法运行的时钟周期
内存的瓶颈问题我们可以通过 sr( 页面扫描频率 ) 来观察,如果扫描频率过高,始终维持高于 200 页说明存在内存瓶颈,同样的道理如果 page 项中的 pi( 调入的页面数 ) 和 po( 调出的页面数 ) 不为 0,说明系统必须经常性被动的通过页面的调入调出程序来维持系统的稳定运行,表明也有可能存在内存瓶颈。解决的方法可以通过简单的增加内存或者优化设计应用程序来减少对内存的使用率。
svmon
svmon 命令提供了一个更加深入的内存使用情况的分析,比起 vmstat 和 ps 命令,它带有更多的信息量。-i 选项能够间隔性的捕获一个内存状态的快照。
svmon 命令可以生成 9 种不同的报告结果,这里我们选用比较有代表性的带 -G 标志来监视内存全局使用情况。
清单 5. svmon 命令显示当前内存全局使用状况1
2
3
4
5
6
7
8
9
10
11
12
| # svmon -G
size inuse free pin virtual
memory 262144 208128 54016 72891 163644
pg space 131072 1912
work pers clnt other
pin 62497 0 0 10394
in use 163644 0 44484
PageSize PoolSize inuse pgsp pin virtual
s 4 KB - 128032 1912 24667 83548
m 64 KB - 5006 0 3014 5006
|
- size 标示了实际内存的页面数
- inuse 正在使用中的页面数
- free 空闲的页面数
- pin 物理内存中固定的页面数
- virtual 虚拟内存使用的页面数
这里 svmon 只是提供了更加精确的结果,具体的内存调试优化可以参照以上 vmo, ps 和 smstat 命令中所涉及到的方法。 |
|
|
|
|
|