破霜风

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

原文链接:http://blog.sina.com.cn/s/blog_592060b50100d4xr.html

 

在AIX有自己特殊的内存管理方法,应用程序的内存配置必须考虑到其特点,对于Oracle这种关键应用尤其要注意AIX内存配置。
    在AIX上键入topas命令会在屏幕的右边中间显示关于内存的信息

MEMORY
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的文件系统缓存。   
    上面的理解需要做点澄清:作为Cache使用的Noncomp内存是从操作系统级别来看的,比如Oracle的SGA中有各种Cache,但是AIX并不知道(即使知道,它也不在乎)这些Cache的存在,AIX仅仅把内存直接分配给Oracle,因此SGA中的Cache在AIX看来是分配给Oracle的Comp内存的一部分。

    进一步从操作系统的角度理解空闲内存,可以加深对于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参数的设置。
#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会自己处理自己的
posted on 2018-03-14 15:12  破霜风  阅读(2216)  评论(0编辑  收藏  举报