首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

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

2013-03-26 
【求助】AIX下进程内存分配问题,无法分配超过256M的内存在启动一个进程时,分配256M内存时提示malloc:Not Eno

【求助】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很容易分配的

热点排行