12.1.2 内存监控

来源:互联网 发布:白马啸西风知乎 编辑:程序博客网 时间:2024/04/30 22:02

12.1.2  内存监控

Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。

vmstatVirtual Meomory Statistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。vmstat以及本章后面会介绍的sarmpstatiostat命令在默认情况下是不会被安装的,用户可以通过Red Hat Enterprise Linux 5.2安装光盘中的“sysstat-7.0.2-1.el5.i386.rpm”软件包进行安装。vmstat命令格式如下:

 

vmstat [-a] [-n] [delay [ count]]

vmstat [-f] [-s] [-m]

vmstat [-S unit]

vmstat [-d]

vmstat [-p disk partition]

vmstat [-V]

 

例如,要以5秒为时间间隔,连续收集10次性能数据,命令如下:

 

# vmstat 5 10

procs   ------memory------  ---swap--  ----io----  --system--  ---cpu----

 r  b  swpd  free  buff  cache   si  so  bi   bo   in   cs  us sy  id  wa  st

 0  0    0   6488  19844 242988  0    0  148  32   1143 361 4  1   91  3   0

 0  0    0   6488  19844 242988  0    0   0    4    1139 340 4  0   96  0   0

 0  0    0   6488  19852 242980  0    0   0   36    1144 339 4  1   96  0   0

 0  0    0   6488  19852 242988  0    0   0    8    1139 321 4  0   97  0   0

 0  0    0   6488  19856 242984  0    0   0   14    1141 346 4  0   96  0   0

 1  0    0   6488  19856 242988  0    0   0    8    1139 332 3  2   95  0   0

 0  0    0   6488  19856 242988  0    0   0    8    1139 323 4  1   95  0   0

 0  0    0   6488  19864 242980  0    0   0   20    1142 343 3  2   95  0   0

 2  0    0   6488  19864 242988  0    0   0    8    1139 322 4  0   96  0   0

 0  0    0   6488  19872 242980  0    0   0   20    1142 362 4  1   95  0   0

 

输出结果中各字段的说明如表12.1所示。

12.1  vmstat输出结果说明

   

   

   

r

procs(进程)

在运行队列中等待的进程数

b

procs(进程)

在等待io的进程数

swpd

memory(内存)

已经使用的交换内存(kb

free

memory(内存)

空闲的物理内存(kb

buff

memory(内存)

用做缓冲区的内存数(kb

cache

memory(内存)

用做高速缓存的内存数(kb

si

swap(交换页面)

从磁盘交换到内存的交换页数量(kb/秒)

so

swap(交换页面)

从内存交换到磁盘的交换页数据(kb/秒)

续表

   

   

   

bi

IO(块设备)

发送到块设备的块数(块/秒)

bo

IO(块设备)

从块设备中接收的块数(块/秒)

in

system(系统)

每秒的中断数,包括时钟中断

cs

system(系统)

每秒的上下文切换的次数

us

CPU(处理器)

用户进程使用的cpu时间(%

sy

CPU(处理器)

系统进程使用的cpu时间(%

id

CPU(处理器)

CPU空闲时间(%

wa

CPU(处理器)

等待IO所消耗的cpu时间(%

st

CPU(处理器)

从虚拟设备中获得的时间(%

对于内存监控,需要关心的指标包括:swpdfreebuffcachesiso,尤其需要重视的是freesiso。很多人都会认为系统的空闲内存(free)少就代表系统性能有问题,其实并不是这样的,这还要结合siso(内存和磁盘的页面交换)两个指标进行分析。正常来说,当物理内存能满足系统需要的话(也就是说物理内存能足以存放所有进程的数据),那么物理内存和磁盘(虚拟内存)是不应该存在频繁的页面交换操作的,只有当物理内存不能满足需要时系统才会把内存中的数据交换到磁盘中。而由于磁盘的性能是比内存慢很多的,所以如果存在大量的页面交换,那么系统的性能必然会受到很大影响。下面来看一个vmstat命令监控的例子。

 

# vmstat 5 10

procs  -----memory----   ---swap--  -----io--   --system--  ----cpu----

r b  swpd    free     buff   cache     si    so    bi       bo     in     cs     us  sy  id  wa       st

0 2  808788 193147 78936  941420    307  0      21745  1005 1189 2590   34 6  12 48   0

0 2  808788 162212 78893  978920    95    0      12107 0       1801 2633   2    12 3    84   0

1 2  809268 88756   78717  1061424 130   28    18377  113   1142 1694   3    5   3    88   0

1 2  826284 17608   71240  1144180 100  2380 25839  16380 1528 1179 19  9   12  61   0

2 1  854780 17688   34140  1208980 1     3108 25557  30967 1764 2238 43 13 16 28   0

0 8  867528 17588   32332  1226392 31    748   16524  27808 1490 1634 41 10 7   43   0

4 2  877372 17596   32372  1227532 213   632   10912  3337  678    932   33 7   3    57   0

1 2  885980 17800   32408  1239160 204   235   12347  12681 1033 982    40 12 2    46   0

4 2  900472 17980   32440  1253884 24    1034 17521  4856 934    1730 48 12 13  26   0

3 2  900512 17620   32470  1255184 20    324  14893  3456 144   430    42 17 14  26   0

 

由上面的输出结果可以看到:

q      用做缓冲区(buff)和快速缓存(Cache)的物理内存不断地增加,而空闲的物理内存(free)不断地减少,证明系统中运行的进程正在不断地消耗物理内存。

q      已经使用的虚拟内存(swpd)不断增加,而且存在着大量的页面交换(siso),证明物理内存已经不能满足系统需求,系统必须把物理内存的页面交换到磁盘               中去。

由此可以得到这样的结论:该主机上的物理内存已经不能满足系统运行的需要,内存已成为该系统性能的一个瓶颈。

原创粉丝点击