The IBM AIX platform handles memory differently than all other Lotus Domino supported platforms. AIX uses a segmented architecture that has both advantages and disadvantages. The primary advantage is increased performance. Of the disadvantages, a 32-bit program must be cognizant of the segmented architecture to take full advantage of the 32-bit address space. This article describes the possible segment layouts for a 32-bit application on the AIX platform as well as the layout that Lotus Domino uses currently. It also shows what happens to the layout as you use the different Domino memory options.
This article is intended for experienced Lotus Domino system administrators familiar with the AIX platform.
Understanding segment layouts
By default, the 32-bit virtual address space on AIX consists of 16 segments of 256 MB each. For any application that uses the default segment layout, the virtual address space looks like the one shown in figure 1:
- The first segment (0x0) is used for kernal text and data.
- The second segment (0x1) is used for user text.
- The third segment (0x2) is used for user stack and data.
- Segments four through thirteen (0x3 to 0xC) are available for user process if either shmat() or mmap() is called.
- Segment fourteen (0xD) is reserved for shared library text.
- Segment fifteen (0xE) is available for user process.
- The last segment (0xF) is used for pre-process shared library data.
For anyone unfamiliar with the terms used in figure 1, here are definitions:
- Text. Code that is read-only and executable. It can be of three-type kernel code, user code, and shared library code.
- Data. Read/write data area that can be of three type kernel data, user data, and shared library data.
NOTE: Shmat() and mmap() are used in Lotus Domino to get shared memory.
Figure 1. Virtual address space example
Programs that use the AIX large memory model have the following memory layout shown in figure 2:
- The first segment (0x0) is used for kernal text and data.
- The second segment (0x1) is used for user text.
- The third segment (0x2) is used for user stack and data.
- Segments four through seven (0x3 to 0x6) are reserved by the process heap.
- Segments eight through thirteen (0x7 to 0xC) are available for user process if either shmat() or mmap() is called.
- Segment fourteen (0xD) is reserved for shared library text.
- Segment fifteen (0xE) is available for user process.
- The last segment (0xF) is used for pre-process shared library data.
Current versions of Lotus Domino use the AIX large memory model.
Figure 2. AIX large memory model
In AIX 5L version 5.2 and later, there is a very large memory model. This is the model that we hope to use in the future with Lotus Domino, but it is not currently used. This model has three forms: the first form is for programs that have a process heap (user data) less than 2.5 GB and greater than 256 MB (see figure 3). The model looks similar to the default AIX segment layout, but segments four through eight (0x3 to 0x7) are available for user heap if dynamic segment allocation (DSA) is used. Also, segments 0xA to 0xE are available for user process if shmat() or mmap is called() by dynamic segment allocation.
Figure 3. AIX very large memory model: first form
The second form is for programs that have a process heap greater than 2.5 GB as shown in figure 4 in which:
- Segment one (0x0) is reserved for kernal text and data.
- Segment two (0x1) is reserved for user text.
- Segment three (0x2) is used for the user stack. However, shared library text and data are also used in this segment (0x2).
- Segments four through sixteen (0x3 to 0xF) are available for the user heap if used by dynamic segment allocation.
- Segments 0xB to 0xF are available for the user process if shmat() or mmap() is called by dynamic segment allocation.
Figure 4. AIX very large memory model: second form
The third form is for programs that have a process heap less than 256 MB (see figure 5). In this form:
- The first segment (0x0) is used for kernal text and data.
- The second segment (0x1) is used for user text.
- The third segment (0x2) is used for user stack and data. However, shared library text and data may also be stored in this segment.
- The rest of the segments (0x3 to 0xF) are available for the user process is shmat() or mmap() is called by dynamic segment allocation.
Figure 5. AIX very large memory model: third form
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页12 3 4 下一页
上一篇: Linux环境下Lotus Domino /Notes 6.0的安装与配置 下一篇:在 Lotus Notes/Domino 7 中创建邮件策略