AIX > Tips & Techniques > Application Development

Boosting Memory


Bookmark and Share Print Email

Increasingly customers are trying to access more memory in CATIA V5 and are receiving errors related to insufficient memory. Enhancements in AIX* 5.2 can help alleviate this problem. Let's dig into these enhancements and associated environment variables.

AIX Segment Information for 32-Bit Processes

In AIX, the system hardware divides the currently active 32-bit virtual address space (4 GB) into 16 independent segments. A separate segment register addresses each 256-MB segment. Table 1 shows the segment register layout for a generic 32-bit process within AIX.

For most applications, AIX uses Segment 2 as the process private segment. This segment contains most of the internal per-process information, including user data, user stack, kernel stack and user block. Because the system places user data and the user stack within this single segment, the system limits the maximum amount of stack and data to slightly less than 256 MB, an adequate size for many applications.

Segment Usage by CATIA V5 in Default Configuration

CATIA Version 5 (aka CNEXT) is built using the large memory model, with a bmaxdata value of four segments (i.e., 1 GB of memory). Typically the default environment is invoked by issuing the catstart command.

The concept of a large memory model application is simple. Segments previously used for shmats and mmaps now become available for use by the heap. Large memory model applications are built using the -bmaxdata option to specify the maximum size of the heap. Alternatively, the LDR_CNTRL environment variable with the MAXDATA option specifies the number of segments for use by the heap.

CNEXT uses OpenGL as its graphics API, which uses several segments for its own processing. These include:

  • Direct font access--The X Server stores data in a special read-only segment, with fonts as the most important of this data. CNEXT consumes a segment when it's using a direct context and rendering fonts using the gIXUseXFont subroutine.
  • Direct window access--This facilitates the ability for the graphics subsystem to communicate directly with the graphics adapter, resulting in high performance. A segment register and thus a segment is consumed.
  • Texture management--All graphics processes share the texture memory on the graphics accelerator. To maintain coherency, shared memory contains details about texture memory use. This practice consumes a segment.
  • Ancillary buffer extension (ABX)--ABX to the X Server manages hardware buffers (such as the Z buffer). To facilitate shared access of the accumulation buffer, shared memory is used. CATIA V5 doesn't use the accumulation buffer.
  • Synchronization--This segment is used when an application is rendering both with OpenGL and the X Window System. Synchronization between the APIs is achieved by calling glXWaitX and glXWaitGL. While some OpenGL applications use the synchronization routines, CNEXT doesn't use this.

Gary Hornyak is the Solution Relationship Manager for Dassault Systemes. Gary can be reached at ghornyak@us.ibm.com.

Jeanne Sparlin is the Solution Enablement Manager for Deep Computing Visualization. Jeanne can be reached at sparlin@us.ibm.com.

Advertisement

Buyers Guide

Search our new 2012 Buyer's Guide.

Search Companies


Search Products


Advertisement

Related Articles