Skip Navigation Links | |
Exit Print View | |
Oracle Solaris Studio 12.3: OpenMP API User's Guide Oracle Solaris Studio 12.3 Information Library |
2. Compiling and Running OpenMP Programs
3. Implementation-Defined Behaviors
6. Automatic Scoping of Variables
8.1 Some General Performance Recommendations
8.2 False Sharing And How To Avoid It
Oracle Solaris supports features that improve the performance of OpenMP programs without hardware upgrades, such as Memory Placement Optimizations (MPO) and Multiple Page Size Support (MPSS), among others.
MPO emables the OS to allocate pages close to the processors that access those pages. SunFire E20K and SunFire E25K systems have different memory latencies within the same UniBoard as opposed to between different UniBoards. The default MPO policy, called first-touch, allocates memory on the UniBoard containing the processor that first touches the memory. The first-touch policy can greatly improve the performance of applications where data accesses are made mostly to the memory local to each processor with first-touch placement. Compared to a random memory placement policy where the memory is evenly distributed throughout the system, the memory latencies for applications can be lowered and the bandwidth increased, leading to higher performance.
The MPSS feature enables a program to use different page sizes for different regions of virtual memory. The default Oracle Solaris page size is relatively small (8 KB on UltraSPARC processors and 4 KB on AMD64 Opteron processors). Applications that suffer from too many TLB misses could experience a performance boost by using a larger page size.
TLB misses can be measured using the Oracle Solaris Studio Performance Analyzer.
The default page size on a specific platform can be obtained with the Oracle Solaris OS command: /usr/bin/pagesize . The -a option on this command lists all the supported page sizes. (See the pagesize(1) man page for details.)
The three ways to change the default page size for an application are:
Use the Oracle Solaris OS command ppgsz(1).
Compile the application with the -xpagesize, -xpagesize_heap, and -xpagesize_stack options. See the compiler man pages for details.
Use MPSS specific environment variables. See the mpss.so.1(1) man page for details.