对于内存负载分析其中关键的字段是:
swpd:虚拟内存的使用总量。
si:每秒从虚拟内存读入内存的大小。
so:每秒从内存写入虚拟内存的大小。
如果这3个字段的值比较高说明出现了内存瓶颈。
也可以使用free 来标识内存的负载情况.
root@newboy:~# cat /proc/meminfo
MemTotal: 3096648 kB
MemFree: 964132 kB
Buffers: 47752 kB
Cached: 425412 kB
SwapCached: 0 kB
Active: 1575616 kB
Inactive: 316444 kB
Active(anon): 1428260 kB
Inactive(anon): 16 kB
Active(file): 147356 kB
Inactive(file): 316428 kB
这些都有点令人糊涂,究竟当前系统使用了多少内存呢?
2.究竟使用了多少内存
这些命令的本身都是很好的查看内存的工具,给出了很好的参考价值,但是就是没有给出一个较为直观的内存占用的信息。这些工具显示的数据没有错误,造成不能准确的显示Linux下系统程序占用内存的真正原因是Linux本身的特性决定的。
众所周知,Linux系统本身的特点是会将大量的工作在内存中进行,这样就能减少系统的I/O时间。故有很多数据和使用过的结构在内存中都会保留,以备程序重新运行所用。linux在统计使用的内存的过程中包括了buffer的内存和cached的内存。前者是那些即将写到磁盘的数据的临时存放区,后者是那些将继续被cpu读取的数据的存放区。所以使用内存的情况包括:程序使用的内存的大小,还包括linux buffer的部分和cache的部分。从free的命令结果中也可以看出来:
root@newboy:/proc/1593# free -m
total used free shared buffers cached
Mem: 3023 901 2122 0 50 417
-/+ buffers/cache: 434 2589
Swap: 0 0 0
从上面的数据可以看出来901=50+417+434 这个数据说明被使用的内存中包含了buffer的内容也包含了cached的内容。当然实际的使用内存的数量还不全是434M内存,
上面的内存数据还可以得到一下的等式:3023=901+2122, 3023=50+417+434+2122, 3023=434+2589。这些等式说明了linux使用内存的情况