显示标签为“memory”的博文。显示所有博文
显示标签为“memory”的博文。显示所有博文

2011年4月12日星期二

内存大小

经常看到有人询问Linux下的内存大小小于实际安装的内存。这是因为内核有保留部分内存使用。

台式机:
$ dmesg |grep Memory
[ 0.000000] Memory: 3457776k/4980736k available (5716k kernel code, 1313348k absent, 209612k reserved, 5375k data, 912k init)
3457776+1313348+209612=4980736

笔记本:
$ dmesg |grep Memory
[ 0.000000] Memory: 2002160k/2056956k available (5716k kernel code, 452k absent, 54344k reserved, 5375k data, 912k init)
2002160+452+54344=2056956

某VPS:
$ dmesg|grep Memory
[ 0.000000] Memory: 603080k/629760k available (2591k kernel code, 388k absent, 26292k reserved, 5287k data, 460k init)
603080+388+26292=629760

不过另一个VPS上的数据稍微有点出入:
$ dmesg|grep Memory
[    0.000000] Memory: 107040k/131072k available (5434k kernel code, 384k absent, 23488k reserved, 5022k data, 448k init)
107040+384+23488=130912

结论,系统保留的内存大小是absent+reserved的和。

最近在自己的Wiki上活跃了,那里更适合一些探索性的东西。

2010年11月13日星期六

内存大小

VPS上查看内存大小:
$ free -b
total used free shared buffers cached
Mem: 110288896 105762816 4526080 0 4096 63508480
-/+ buffers/cache: 42250240 68038656
Swap: 268427264 1064960 267362304
我一算内存大小没有他们宣称的128MB啊,128MB应该是134217728字节。

然后客服回答说:
Some memory is reserved for the kernel. In previous kernel versions, reserved memory was counted as part of the kernel free -m output, now it is not. You can verify that you have the full 128MB by reading dmesg.
后来在IRC问了问,对比了一下他们贴的结果,发现dmesg里面的这行:

[    0.000000] Memory: 107040k/131072k available (5434k kernel code, 384k absent, 23488k reserved, 5022k data, 448k init)
里面的131072k就是所有的物理内存大小,正好是128MB,因为131072/1024=128。看来客服没撒谎。

这次也发现我台式机所谓的2G内存实际是有水分的:

[    0.000000] Memory: 1781996k/1833856k available (5708k kernel code, 452k absent, 51408k reserved, 5382k data, 908k init)
1833856/1024=1790.875。只有1790MB,这和BIOS中看到的数字是一样的。这个数字其实是扣除了用于显存的内存大小256MB。

2010年9月10日星期五

free, top, vmstat输出结果对应关系

top和free的对应(相同颜色标记的输出是一样的):
vmstat和free的对应(相同颜色标记的输出是一样的):