第一部分
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。
total = used + free
第2行 -/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是 实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是 系统当前实际可用内存。
free 2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行
buffer 与cache 的区别:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use
ubuntu # free total used free shared buffers cached Mem: 126100 123608 2492 0 392 51208 -/+ buffers/cache: 72008 54092 Swap: 746980 98452 648528
从这些数字中可以预测出,现在该机器在正常使用时的响应能力非常低,对于这些简单任务来说基本上还可以使用,
但是会非常频繁地访问磁盘,我肯定不喜欢使用它作为自己的主要机器。可以看到应用程序需要的内存总量大约是 170MB,但内存中只装入了 72MB,因此 98MB 被转移到交换空间。这有助于解释系统响应能力降低的原因!
一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;
应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存;
20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
[root@node1 ~]# vmstat 2 3 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 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0 0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0 0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0 l memory swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,
只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。 free列表示当前空闲的物理内存数量(以k为单位) buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,
如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 l swap si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。