当前位置: 技术问答>linux和unix
【求助】AIX下进程内存分配问题,无法分配超过256M的内存
来源: 互联网 发布时间:2017-02-08
本文导语: 在启动一个进程时,分配256M内存时提示 malloc:Not Enough Space 根据提示,我理解是系统对用户内存分配限制问题,因此修改ulimit,内存相关全部修改为ulimited: # ulimit -a time(seconds) unlimited file(blocks) ...
在启动一个进程时,分配256M内存时提示
根据提示,我理解是系统对用户内存分配限制问题,因此修改ulimit,内存相关全部修改为ulimited:
然后执行分配256M内存时程序正常启动,但是当我关闭程序重启,并设置分配288M内存时,又出现相同错误。
问题是我已经显式设置ulimit中内存分配的部分为无限制了,是不是AIX系统下还有其他地方限制?
求高手解答。另外,系统内存是绝对足够的,有32G之多呢:
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
|
AIX 这个限制和版本有关系,你可以试一下LDR_CNTRL环境变量,应该就能解决.
export LDR_CNTRL=MAXDATA=0x10000000 (上限512M)
LDR_CNTRL=MAXDATA=0x2000000 (上限768M)
LDR_CNTRL=MAXDATA=0x3000000 (上限1024M)
start_process
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位也可
export LDR_CNTRL=0X200000(字节)
export MAXDATA=0x3000000
将上述环境变量加到你用C的用户profile中。
在AIX5.3以后的系统。可直接改为64位也可
|
还真没关注有这个限制
那lz看看你的环境中的限制参数 /etc/security/limits
那lz看看你的环境中的限制参数 /etc/security/limits
|
直接通过HMC很容易分配的