当前位置: 代码迷 >> AIX >> AIX下进程内存分配有关问题,无法分配超过256M的内存
  详细解决方案

AIX下进程内存分配有关问题,无法分配超过256M的内存

热度:844   发布时间:2016-05-20 04:50:06
【求助】AIX下进程内存分配问题,无法分配超过256M的内存
在启动一个进程时,分配256M内存时提示
malloc:Not Enough Space

根据提示,我理解是系统对用户内存分配限制问题,因此修改ulimit,内存相关全部修改为ulimited:
# ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         unlimited
stack(kbytes)        unlimited
memory(kbytes)       unlimited
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

然后执行分配256M内存时程序正常启动,但是当我关闭程序重启,并设置分配288M内存时,又出现相同错误。
问题是我已经显式设置ulimit中内存分配的部分为无限制了,是不是AIX系统下还有其他地方限制?
求高手解答。另外,系统内存是绝对足够的,有32G之多呢:
# lsattr -El mem0
ent_mem_cap          I/O memory entitlement in Kbytes           False
goodsize       32768 Amount of usable physical memory in Mbytes False
mem_exp_factor       Memory expansion factor                    False
size           32768 Total amount of physical memory in Mbytes  False
var_mem_weight       Variable memory capacity weight            False

------解决方案--------------------
还真没关注有这个限制
那lz看看你的环境中的限制参数 /etc/security/limits
------解决方案--------------------
AIX 这个限制和版本有关系,你可以试一下LDR_CNTRL环境变量,应该就能解决.
export LDR_CNTRL=MAXDATA=0x10000000  (上限512M) 
       LDR_CNTRL=MAXDATA=0x2000000   (上限768M)
       LDR_CNTRL=MAXDATA=0x3000000    (上限1024M) 
start_process


------解决方案--------------------
这是AIX32位的限制。若要使用超过236M内存。启用大
export LDR_CNTRL=0X200000(字节)
export MAXDATA=0x3000000 
将上述环境变量加到你用C的用户profile中。
在AIX5.3以后的系统。可直接改为64位也可
------解决方案--------------------
直接通过HMC很容易分配的
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!