进一步从操作系统的角度理解空闲内存,可以加深对于AIX的Comp内存和Noncomp内存的理解。
看待操作系统的空闲(Free)内存,既需要从内核的角度来看,也需要从应用程序的角度来看。
- 从应用程序的角度看:不被应用程序使用的内存就属于空闲内存。空闲内存=物理内存-每一个应用程序占用内存之和。
- 从操作系统内核看:内核不需做任何其他工作就可以直接分配的内存,称为空闲内存。空闲内存=物理内存-每一个应用程序占用内存之和-(系统Buffer+系统Cache)
操作系统系统之所以这么做是因为:空闲内存“闲着也是闲着”,还不如把最近使用过的内存缓存起来(如从磁盘中读取的数据),这样再次需要这些数据时可以直接从内存中取,而不需要有一个漫长的磁盘操作,这样可以提高系统的整体性能。
简单来说:
从AIX角度看:作为文件系统缓存的这部分内存就是
文件内存(Noncomp内存)从Solairs角度看:Solaris在系统参数中有一个segmap,大约也就是Noncomp的意思。参见:
Segmap tuning - Siwiki这个参数到到Solaris10,似乎也逐渐废弃了。
从linux角度看:Linux的free命令的结果给我们提示:(参见:
ChinaUnix 八楼)
total used free shared buffers cached
Mem: 500 355 145 0 67 249
-/+ buffers/cache: 38 462
Swap: 996 1 994
在这个结果中的第一行是从内核角度来看系统内存使用状态的,可以看到free的内存只有145M;
第二行是从应用层的角度来看系统内存的使用状况,可以看到free的内存有462M; 这个462这个值的妙处呢在于462 := 145 + 249 + 67
从Windows角度看:我们常常发现Windows有很多空闲内存(我的本本有2G内存),你为何就不能让系统跑的快点呢?有人说这就是Windows处理Free内存的机制没有 Linux优秀。你可以通过“任务管理器”来查看,你会发现吧所有应用程序使用的“内存使用”全部加起来却不等于最下面状态栏中的“提交更改”的内存值。这也应该是“提交更改”
注:Windows任务管理器中的“提交更改”英文为Commit Charge,翻译过来叫“提交负荷”这里是中文WinXP的一个翻译BUG(参见:新浪的iask 以及wiki:Commit charge )。 说了这么一大通,对于AIX上的Oracle来说,必须要提高系统计算内存(Comp内存)的占用百分比,减少文件内存(Noncomp内存)占用百分比。否则即使AIX系统的物理内存很大,但却都作为了文件内存而不能被Oracle这个应用程序使用到。
在AIX上的具体操作是:
1、查看minfree,maxfree,minperm,maxperm参数的设置。