原文链接:http://blog.sina.com.cn/s/blog_592060b50100d4xr.html
在AIX有自己特殊的内存管理方法,应用程序的内存配置必须考虑到其特点,对于Oracle这种关键应用尤其要注意AIX内存配置。
在AIX上键入topas命令会在屏幕的右边中间显示关于内存的信息
MEMORY
Real,MB 31743
% Comp 20
% Noncomp 80
% Client 80
Real,MB 31743
% Comp 20
% Noncomp 80
% Client 80
这和Oracle的安装配置有什么联系呢?原来AIX把内存分为两部分1、“Comp内存”又称“计算内存”和2、“Noncomp内存”又称“文件内存”
具体的定义参见:AIX 5L 内存性能优化,第 1 部分: AIX Version 5.3 中内存的概述以及内存参数设置OS内存使用,控制缓存页面交换说了一大通,并不是很好理解。这里给出一个“不一定准确,但容易理解”的定义是:
- 计算内存(Comp内存)是提供给应用软件使用的内存。也就是一般意义上跑应用程序的内存。
- 文件内存(Noncomp内存)是在操作系统级别作为cache使用的内存,也就是AIX的文件系统缓存。
进一步从操作系统的角度理解空闲内存,可以加深对于AIX的Comp内存和Noncomp内存的理解。
看待操作系统的空闲(Free)内存,既需要从内核的角度来看,也需要从应用程序的角度来看。
简单来说:
从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参数的设置。
看待操作系统的空闲(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参数的设置。
#vmo -L |grep free
#vmo -L |grep perm
2、查询文件系统使用缓存比例
#vmo -a|grep perm%
3 设置最小使用文件系统缓存比例为5%,最大为25%
#vmo -p -o maxclient%=25
#vmo -p -o minperm%=5
#vmo -p -o maxperm%=25
4 查询缓存页设置情况
#vmo -L|grep perm
通过上述设置,把AIX的的文件系统缓存比例改为最小5%,最大为25%。毕竟Oracle会自己处理自己的