【求助】AIX下进程内存分配问题,无法分配超过256M的内存

kmkjwjf 2012-02-28 11:48:16
在启动一个进程时,分配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
...全文
593 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jesson246 2012-03-06
  • 打赏
  • 举报
回复
直接通过HMC很容易分配的
wqc_zj1 2012-03-02
  • 打赏
  • 举报
回复
这是AIX32位的限制。若要使用超过236M内存。启用大
export LDR_CNTRL=0X200000(字节)
export MAXDATA=0x3000000
将上述环境变量加到你用C的用户profile中。
在AIX5.3以后的系统。可直接改为64位也可
争取今天 2012-02-29
  • 打赏
  • 举报
回复
AIX 这个限制和版本有关系,你可以试一下LDR_CNTRL环境变量,应该就能解决.
export LDR_CNTRL=MAXDATA=0x10000000 (上限512M)
LDR_CNTRL=MAXDATA=0x2000000 (上限768M)
LDR_CNTRL=MAXDATA=0x3000000 (上限1024M)
start_process

justkk 2012-02-28
  • 打赏
  • 举报
回复
用vmstat 看看呢
kmkjwjf 2012-02-28
  • 打赏
  • 举报
回复
上面的排版不好,重新来一次
data maximum Size of data segment for a process (malloc call)
stack maximum Size of stack segment for a process.

Data and stack are tied together。Combined, they can never be greater than 256 MB.
justkk 2012-02-28
  • 打赏
  • 举报
回复
还真没关注有这个限制
那lz看看你的环境中的限制参数 /etc/security/limits
kmkjwjf 2012-02-28
  • 打赏
  • 举报
回复
在网上查到一个资料:http://www.ahinc.com/aix/security.htm

data maximum Size of data segment for a process (malloc call) Data and stack are tied together. stack maximum Size of stack segment for a process. Combined, they can never
be greater than 256 MB.
kmkjwjf 2012-02-28
  • 打赏
  • 举报
回复
用NMON监控内存的使用,也是显示有大量空闲内存,怎么才能让我的程序用上呢?

qtopas_nmonqqA=Async-I/OqqqqqqqqHost=WQqqqqqqqqqqqqqRefresh=2 secsqqq00:46.50qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Memory qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
x Physical PageSpace | pages/sec In Out | FileSystemCache x
x% Used 10.0% 2.0% | to Paging Space 0.0 0.0 | (numperm) 0.7% x
x% Free 90.0% 98.0% | to File System 0.0 0.0 | Process 4.0% x
xMB Used 3283.0MB 10.4MB | Page Scans 0.0 | System 5.3% x
xMB Free 29485.0MB 501.6MB | Page Cycles 0.0 | Free 90.0% x
xTotal(MB) 32768.0MB 512.0MB | Page Steals 0.0 | ------ x
x | Page Faults 0.0 | Total 100.0% x
x------------------------------------------------------------ | numclient 0.7% x
xMin/Maxperm 952MB( 3%) 28549MB( 87%) <--% of RAM | maxclient 87.1% x
xMin/Maxfree 960 1088 Total Virtual 32.5GB | User 1.7% x
xMin/Maxpgahead 2 8 Accessed Virtual 3.0GB 9.1%| Pinned 5.7%
kmkjwjf 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]
用vmstat 看看呢
[/Quote]

# vmstat

System configuration: lcpu=32 mem=32768MB ent=8.00

kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------------------
r b avm fre re pi po fr sr cy in sy cs us sy id wa pc ec
1 1 775698 7548738 0 0 0 0 0 0 22 763 193 0 0 99 0 0.00 0.0

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧