64 位可执行文件中的 MAXDATA 参数
MAXDATA parameter in 64-bit executables
我开始明白,在 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... 到我们在旧的 32 位版本中设置的 2GB 左右的数字,以便能够初始化(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
您示例中的限制因素是 ulimit 'data' 值。如果设置为 'unlimited',您将观察到预期的输出。
我开始明白,在 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... 到我们在旧的 32 位版本中设置的 2GB 左右的数字,以便能够初始化(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
您示例中的限制因素是 ulimit 'data' 值。如果设置为 'unlimited',您将观察到预期的输出。