Multiple page size application support considerations

Issues concerning 32-bit processes, thread stacks, shared libraries, or large page data can affect the ability of AIX® to support multiple page sizes.

32-bit Processes

With the default AIX 32-bit process address space model, the initial thread stack and data of a process are located in the same PowerPC® 256 MB segment. Currently, only one page size can be used in a segment. Thus, if different page sizes are specified for the stack and data of a standard 32-bit process, the smaller page size will be used for both.

A 32-bit process can use different page sizes for its initial thread stack and data by using one of the alternate address space models for large and very large program support that locate a process's data heap in a segment other than its stack.

Thread Stacks

By default, the thread stacks for a multi-threaded process come fromthe data heap of a process. Thus, for a multi-threaded process, the stack page size setting will only apply to the stack for the initial thread of a process. The stacks for subsequent threads will be allocated from the data heap of a process, and these stacks will use pages of the size specified by the data page size setting.

Also, using 64 KB pages rather than 4 KB pages for the data of a multi-threaded process can reduce the maximum number of threads a process can create due to alignment requirements for stack guard pages. Applications that encounter this limit can disable stack guard pages and allow for more threads to be created by setting the AIXTHREAD_GUARDPAGES environment variable to 0.

Shared Libraries

On systems that support 64 KB pages, AIX will use 64 KB pages for the global shared library text regions to improve performance.

Large Page Data

The DATAPSIZE environment variable will override the LARGE_PAGE_DATA environment variable. Also, the DATAPSIZE settings in an application's XCOFF binary will override any lpdata setting in the same binary.