前两天一台128G内存的oracle主机发生故障触发kdump,最终由于var目录空间不足,导致kdump生成不完全。结合之前redhat给出的建议,crash设置的空间最好大于memory 空间。对此我们做了一个简单的计算,认为kdump主机生成的是运行在内存里的信息 ,虽然主机有128G的内存,不过通过top查看并计算后发现我实际上只使用7G多的大小,而使用free -m查看时已经使用了80G左右的内存 。站在DBA的角度看的话,这部分内存提前分配给了sga ,貌似也可以讲通。记得之前看过taobao褚霸写的一篇分析。这里再结合该文章算算。
通过褚霸的Linux Used内存到底哪里去了?我们已经了解到内存主要消耗在三个方面:1. 进程消耗。 2. slab消耗 3.pagetable消耗。
由于不便于直接在现网oracle主机上进行操作,这里就以本blog的云主机为例进行测试。
一、查看已用内存总量
[root@91it ~]# free -m
total used free shared buffers cached
Mem: 996 908 88 0 174 283
-/+ buffers/cache: 450 546
Swap: 0 0 0
关于已用内存和可用内存这已经是一个老生长谈的问题了。这里看到的信息如下:
1、总内存996M ,已用内存908M
2、由于buffers + cached内存实际上也是可用内存,该内存也可以通过echo 3 > /proc/sys/vm/drop_caches 回收pagechae、dentries and inodes ,所以实际上已经使用的内存是450M 。
注: