Oracle Corporation SPEC CPU Flags: Oracle-Solaris-Studio-x86_64

Compilers: Oracle Solaris Studio Express 5/10

Operating systems: Solaris 10 10/09

Last updated: 17-Mar-2010 jlh

The text for many of the descriptions below was taken from the Oracle Studio Compiler Documentation, which is copyright © 2007-2010 Oracle Corporation, Inc. The original documentation can be found at docs.sun.com.

This document has both optimization flags (in the immediately following section) and a description of Platform Settings

Sections

Selecting one of the following will take you directly to that section:


Optimization Flags


Compiler Flags


Other Flags


Forbidden Flags


System and Other Tuning Information

Platform settings

One or more of the following settings may have been applied to the testbed. If so, the "Platform Notes" section of the report will say so; and you can read below to find out more about what these settings mean.

Boot time, BIOS settings

Intel VT-d: Disabled
VT-d, if enabled, supports remapping of I/O DMA transfers for virtualization.

Hardware Prefetch
This BIOS option allows the enabling/disabling of a processor mechanism to prefetch data into the cache according to a pattern-recognition algorithm.

Adjacent Cache Line Prefetch
This BIOS option allows the enabling/disabling of a processor mechanism to fetch the adjacent cache line within an 128-byte sector that contains the data needed due to a cache line miss.

C-State : Disabled
Enable/Disable CPUs to enter C-State (lower power CPU state) while the system is idle. This helps to lower power consumption when enabled.

Data Reuse Optimization : Disabled
Enabling this BIOS option reduces the frequency of L3 cache updates from L1.

This may improve performance by reducing the internal bandwidth consumed by constantly updating L1 cache lines in L3.

Since this results in more fetches to main memory, setting this option to Disabled may improve performance in some cases. Users should only disable this option after performing application benchmarking to verify improved performance in their environment.

/etc/system settings

autoup=<n>
When the file system flush daemon fsflush runs, it writes to disk all modified file buffers that are more than n seconds old.

lpg_alloc_prefer=<n>
0 = the OS may allocate remote pages if the size requested is readily available in a remote locality group (default)
1 = Set lgroup page allocation to strongly prefer local pages.

maxusers=<n>
To increase the number of user processes derived by the system

rlim_fd_cur=<n>
Defines the soft limit on file descriptors that a single process can have open.

tune_t_fsflushr=<n>
Controls the number of seconds between runs of the file system flush daemon, fsflush.

zfs:zfs_arc_max=<n>
Controls the amount of memory used in bytes by ZFS for caching of file system buffers.

Other Configurations

ZFS RAIDZ
In mirrored storage pool configuration, ZFS provides a RAID-Z configuration with either single or double parity fault tolerance. Single-parity RAID-Z is similar to RAID-5. Double-parity RAID-Z is similar to RAID-6.

Environment/shell variables

OMP_DYNAMIC=<TRUE|FALSE>
Enables (TRUE) or disables (FALSE) dynamic adjustment of the number of threads available for execution of parallel regions. The default is TRUE.

OMP_NESTED=<TRUE|FALSE>
Enables or disables nested parallelism. Value is either TRUE or FALSE. The default is FALSE.

OMP_NUM_THREADS=<n>
If programs have been compiled with -xautopar, this environment variable can be set to the number of processors that programs should use.

PARALLEL=<n>
If programs have been compiled with -xautopar, this environment variable can be set to the number of processors that programs should use.

STACKSIZE=<n>
Set the size of the stack (temporary storage area) for each slave thread of a multithreaded program.

SUNW_MP_PROCBIND=<n>
This environment variable can be used to bind the LWPs (lightweight processes) managed by the microtasking library, libmtsk, to processors. Performance can be enhanced with processor binding, but performance degradation will occur if multiple LWPs are bound to the same processor.
The value for SUNW_MP_PROCBIND can be:

Integers in the above denote the "logical" processor IDs to which the LWPs are to be bound. Logical processor IDs are consecutive integers that start with 0, and may or may not be identical to the actual processsor IDs. If n processors are available online, then their logical processor IDs are 0, 1, ..., n-1.
By default, LWPs are not bound to processors. It is left up to the operating system, Solaris, to schedule LWPs onto processors.
If the value "TRUE" is used, the operating system will bind processes to processors, starting with processor 0.

SUNW_MP_THR_IDLE=SPIN
Controls the end-of-task status of each helper thread executing the parallel part of a program. You can set the value to spin, sleep ns, or sleep nms. The default is SPIN -- the thread spins (or busy-waits) after completing a parallel task until a new parallel task arrives.

ulimit -s <n>
Sets the stack size to n kbytes, or "unlimited" to allow the stack size to grow without limit.

The Submit Command

submit=echo 'pbind -b...' > dobmk; sh dobmk
When running multiple copies of benchmarks, the SPEC config file feature submit is sometimes used to cause individual jobs to be bound to specific processors. If so, the specific command may be found in the config file; here is a brief guide to understanding that command: