Chinaunix

标题: AIX 5.3 复制一个文件或者利用系统调用write写文件时物理内存减少 [打印本页]

作者: sinosinux    时间: 2010-12-30 11:35
标题: AIX 5.3 复制一个文件或者利用系统调用write写文件时物理内存减少
各位专家好!
小白请教个aix系统问题 ;)

系统配置:
aix 5.3 4cpu   8G mem

我们的一个应用系统在进行压力测试时,打开nmon监控系统资源状态,发现可用物理内存不断减少,减少的量大约和系统产生的日志量相同,应用系统停止运行后物理内存没有被释放。
经调查,发现是日志模块中write函数不断写文件导致的:随着日志的不断生成,可用物理内存不断减少,应用系统停止运行后物理内存不释放。但是手工删除产生的日志文件,物理内存被释放。

测试系统中的cp命令,发现赋值一个大约500M的文件,可用物理内存大约减少500M。

根据以上情况推断,我推测以上情况是由于aix的某种内存分配策略导致的,进一步调查,以上现象是操作系统的page cache导致的,aix提供了一个系统调用sync_range,可以指定一个选项NO_CACHE,强制释放一个文件对应的page cache。 修改应用系统日志代码,在write调用后调用sync_range强制释放page cache,再次进行压力测试,在较短时间内,物理内存表现平稳,没有明显下降。  但是经过4,5个小时的运行后,系统可用物理内存还是下降了将近30%,我想这部分内存消耗可能是因为我们应用系统使用的一些中间件系统产生的日志导致的。

另外,据我了解其他类unix系统上都有一个守护进程定时的清理缓存。我测试的服务器上确实也有一个进程在运行:
"xxxxxx   xxxxxx    xxxxx      syncd 60"

但是,我们在第一次压力测试结束后第二天进行第二次测试时,发现可用物理内存并没有回到第一次压力测试开始时的水平。

综上,请教各位专家:
1、求 aix page cache策略方面的详细资料;
2、是否有方法全局设置aix内存分配策略,在写文件时不分配物理内存,或者是否有策略可以回收这些已分配的物理内存

小白接触aix不久,还请专家指教,谢谢;)
作者: mike79    时间: 2010-12-30 11:44
不要老想着内存不够用,空闲内存越多越好。内存空在那,闲着也是闲着,如果没有其他应用要用的话,给文件系统做缓存有什么不好。
就好比你赚了钱,会都放在家里光看着?总会想办法去投资些什么吧?实在没有渠道,存银行也好歹有些利息。
作者: sinosinux    时间: 2010-12-30 13:41
回复 2# mike79


    我们的测试环境曾经把物理内存跑光过,系统hang住了,所以才考虑调查这个问题
作者: mike79    时间: 2010-12-30 16:19
回复  mike79


    我们的测试环境曾经把物理内存跑光过,系统hang住了,所以才考虑调查这个问题
sinosinux 发表于 2010-12-30 13:41

把内存跑光,是因为文件系统占用内存太多,还是应用占用内存太多?
作者: sinosinux    时间: 2010-12-30 16:30
回复 4# mike79


    是文件系统站的内存
作者: mike79    时间: 2010-12-30 16:47
回复  mike79


    是文件系统站的内存
sinosinux 发表于 2010-12-30 16:30

你看一下vmo中的几个参数minperm/maxperm还有maxclient
作者: InfoSVC    时间: 2011-01-24 23:39
楼上说的vmo中的minperm/maxperm还有maxclient
这一个办法
还可以将文件系统的mount方式做一下修改
改成dio或者cio的方式
这样就不太消耗内存了
但是这两种方法都会影响性能




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2