64位可执行文件中的MAXDATA参数

时间:2016-01-19 20:32:58

标签: aix

我已经明白,在AIX上为64位应用程序设置-bmaxdata或LDR_CNTRL = MAXDATA ...只需要在进程的堆大小上设置 limit 。换句话说,没有必要像32位可执行文件那样提出任何限制。

在特定的AIX 7.1系统上,其中OBJECT_MODE=64 dump -ov my-executable显示maxdata为0x00000000而LDR_CNTRL未设置,我必须将LDR_CNTRL = MAXDATA ...设置为2GB-ish数字我们在我们的旧版32位版本中设置为能够甚至初始化(initgroups()失败,pthread_create失败等)我的64位应用程序。

在64位进程中是否需要设置MAXDATA以便在堆大小上没有一些古老的256MB-ish上限?

# /usr/bin/ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

# OBJECT_MODE=64 dump -ov bin/httpd

bin/httpd:

                        ***Object Module Header***
# Sections      Symbol Ptr      # Symbols       Opt Hdr Len     Flags
         4      0x000c78b0           8683               120     0x1002
Flags=( EXEC DYNLOAD DEP_SYSTEM )
Timestamp = "Oct 05 19:03:19 2015"
Magic = 0x1f7  (64-bit XCOFF)

                        ***Optional Header***
Tsize       Dsize       Bsize       Tstart      Dstart
0x0007c66a  0x00009d06  0x00003c08  0x1000001f8  0x110000862

SNloader    SNentry     SNtext      SNtoc       SNdata
0x0004      0x0002      0x0001      0x0002      0x0002    

TXTalign    DATAalign   TOC         vstamp      entry
0x0007      0x0003      0x1100091b8  0x0001      0x110003a70

maxSTACK    maxDATA     SNbss       magic       modtype
0x00000000  0x00000000  0x0003      0x010b        1L

1 个答案:

答案 0 :(得分:1)

您的示例中的限制因素是ulimit'数据'值。如果设置为'无限制'你会观察到预期的输出。