Unix/Linux 系统自动化管理:内存管理篇
# ps aux USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND root 53274 10.7 0.0 384 384 - A 03:17:33 453:29 wait root 8196 10.7 0.0 384 384 - A 03:17:33 453:28 wait root 49176 10.7 0.0 384 384 - A 03:17:33 453:20 wait root 57372 10.7 0.0 384 384 - A 03:17:33 453:06 wait
其中 rss 标示每个进程的实际内存使用量,这是我们需要重点查看的属性,代表着这个进程真正占用内存的多少。通过观察 rss 的数据信息,我们能够清楚的获得此进程的内存使用变化情况。
在极端情况下,员可以通过 kill 命令关闭某些内存占用率过高的进程来确保的正常运行。
同时我们也可以通过观察 rss 段的数据信息来检查进程存不存在内存泄漏现象。
系统管理员除了需要对特定的进程内存占用情况跟踪观察外,更多的时候需要监控整个系统的内存使用信息。 Vmstat 和 svmon 能够帮助我们轻易的获得这方面的数据。
vmstat
vmstat(Virtual Memory Statistics) 命令能够帮助我们监控内核进程,虚拟内存,磁盘和处理器统计信息。 它是对系统的整体情况进行统计,不足之处就是无法对某个特定进程做分析。 Vmstat 的输出可以是以百分比表示的平均值,也可以是其统计的总和。
如果没有指定任何的参数,vmstat 将会输出系统从开机启动之后所有的虚拟内存活动。
我们经常使用类似 vmstat 5 5 的命令参数,代表着表示在 5 秒时间做 5 次采样。
下面将对输出的结果中涉及到的内存管理相关字段进行说明:
memory:物理内存和虚拟内存的使用信息。如果虚拟内存被访问,那么将被认为是活动的。.
avm 活动的虚拟内存页面 fre 空闲内存列表的大小。注:很大一部分的实际内存都被用来作为文件系统的缓存用来加快应用程序的运行速度,所以空闲内存大小一般保持在很小的数值。page:缺页异常和分页活动信息。此数值是间隔时间内的平均值,以秒为单位。
re 页面调度输入 / 输出列表 pi 从页面空间输入的页面 po 写入页面空间的页面 fr 释放的页面 sr 通过页面替换算法扫描页面的频率 cy 页面替换算法运行的时钟周期内存的瓶颈问题我们可以通过 sr( 页面扫描频率 ) 来观察,如果扫描频率过高,始终维持高于 200 页说明存在内存瓶颈,同样的道理如果 page 项中的 pi( 调入的页面数 ) 和 po( 调出的页面数 ) 不为 0,说明系统必须经常性被动的通过页面的调入调出程序来维持系统的稳定运行,表明也有可能存在内存瓶颈。解决的方法可以通过简单的增加内存或者优化设计应 用程序来减少对内存的使用率。
svmon
svmon 命令提供了一个更加深入的内存使用情况的分析,比起 vmstat 和 ps 命令,它带有更多的信息量。-i 选项能够间隔性的捕获一个内存状态的快照
- 最新评论