二 内存的监控

作为一名linux系统管理员,监控内存的使用状态是非常重要的,通过监控有助于了解内存的使用状态,比如内存占用是否正常,内存是否紧缺等等,监控内存最常使用的命令有free、top等,下面是某个系统free的输出:

[haixigov@WEBServer ~]$ free

total used free shared buffers cached

Mem: 16402432 16360492 41940 0 465404 12714880

-/+ buffers/cache: 3180208 13222224

Swap: 8193108 264 8192844

我们解释下输出结果中每个选项的含义:

首先是第一行:

  •  total:物理内存的总大小。
  •  used:已经使用的物理内存多小。
  •  free:空闲的物理内存值。
  • shared:多个进程共享的内存值。
  •  buffers/cached:磁盘缓存的大小。

第二行Mem:代表物理内存使用情况。

第三行(-/+ buffers/cached):代表磁盘缓存使用状态。

第四行:Swap表示交换空间内存使用状态。

free命令输出的内存状态,可以通过两个角度来查看:一个是从内核的角度来看,一个是从应用层的角度来看的。

1.从内核的角度来查看内存的状态

就是内核目前可以直接分配到,不需要额外的操作,即为上面free命令输出中第二行Mem项的值,可以看出,此系统物理内存有16G,空闲的内存只有41940K,也就是40M多一点,我们来做一个这样的计算:

16402432-16360492=41940

其实就是总的物理内存减去已经使用的物理内存得到的就是空闲的物理内存大小,注意这里的可用内存值41940并不包含处于buffers和cached状态的内存大小。

如果你认为这个系统空闲内存太小,那你就错了,实际上,内核完全控制着内存的使用情况,linux会在需要内存的时候,或在系统运行逐步推进时,将buffers和cached状态的内存变为free状态的内存,以供系统使用。