下面是free的运行结果,一共有4行。为了方便说明,我们加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:
- FO[2][1] = 999212
- FO[3][2] = 305404
1 2 3 4 5 6
1 total used free shared buffers cached
2 Mem: 999212 967476 31736 0 50668 223000
3 -/+ buffers/cache: 693808 305404
4 Swap: 2048276 154524 1893752
第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free)
第二行:total 内存总数: 999212 used 已经使用的内存数: 967476 free 空闲的内存数: 31736
shared
当前已经废弃不用,总是0 buffers Buffer Cache内存数: 50668
cached Page Cache内存数: 223000
- 999212KB(缺省时free的单位为KB)物理内存,即FO[2][1];
- 在这些物理内存中有967476KB(即FO[2][2])被使用了;
- 还用31736KB(即FO[2][3])是可用的;
- 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.
也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。Linux和其他成熟的操作系统(例如windows),为了提高IO
read的性能,总是要多cache一些数据,这也就是为什么FO[2][6](cached memory)比较大,而FO[2][3]比较小的原因。
第三行:
-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数:693808 (等于第1行的 used - buffers -
cached)
+buffers/cache 的内存数: 305404 (等于第1行的 free + buffers +
cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数
阅读(1073) | 评论(0) | 转发(0) |