Appendix C. POWER7 optimization and tuning with third-party applications 195
Implementing Sybase IQ to POWER7
Sybase IQ is a specialized data server that is optimized for ad hoc queries and reporting on
data warehouses and data marts.
AIX kernel tunables for Sybase IQ are the same regarding virtual memory, I/O, network, and
ulimits as for Sybase ASE and Oracle.
However, there are some special environment variables and scheduler tunables that should
be considered, based on joint work between Sybase and AIX development teams. These
items were originally developed for POWER6, but are also applicable to POWER7. Some of
these are f
irm suggestions that we urge you to follow, and others are soft suggestions, as they
are helpful with specific workloads, and can be used at your discretion.
Environment variables
The environment variables are:
SPINLOOPTIME=500 (
Firm suggestion)
If a user thread cannot get a mutex, it spins for some time, hoping to acquire the lock
afterward. The environment variable SPINLOOPTIME controls the spin time duration. After
the period, the thread either goes to sleep or stays runnable (see YIELDLOOPTIME).
YIELDLOOPTIME=0 (
Firm suggestion)
It is more efficient for a runnable thread to resume than to wake up from sleep and run.
After the spin time is exhausted, the thread can go to sleep or give up CPU but stay
runnable. The environment variable YIELDLOOPTIME defines the number of times a thread
gives up the CPU before it sleeps.
AIXTHREAD_SCOPE=S (Same as AIXTHREAD_MNRATIO=1:1) (
Firm suggestion)
Setting AIXTHREAD_SCOPE=S means that user threads created with default attributes are
placed into system-wide contention scope. If a user thread is created with system-wide
contention scope, it is bound to a kernel thread, and it is scheduled by the kernel. The
underlying kernel thread is not shared with any other user thread.
AIXTHREAD_MNRATIO=8:1 (the default if AIXTHREAD_SCOPE is defaulted to P) (
Soft suggestion)
Setting AIXTHREAD_SCOPE=S means that user threads created with default attributes are
placed into system-wide contention scope. Defaulting to AIXTHREAD_SCOPE or specifying a
ratio greater than 1:1 for AIXTHREAD_MNRATIO=M:N means that kernel threads might be
shared by M user threads. M>N might be more efficient for highly threaded processes.
Sybase IQ start script start_iq ships with deprecated values for AIXTHREAD_MNRATIO,
SPINLOOPTIME, and YIELDLOOPTIME (
Firm suggestion)
Sybase IQ start scripts set both AIXTHREAD_SCOPE=S and AIXTHREAD_MNRATIO=4;1. The
latter overrides the former. The former is considered a starting point for systematic testing.
IQ start scripts also set SPINLOOPTIME and YIELDLOOPTIME to 40 without any explanation.
AIXTHREAD_MUTEX_FAST=ON (
Firm suggestion)
Setting the variable to ON forces threaded applications to use an optimized mutex locking
mechanism, resulting in increased performance.
MALLOCOPTIONS=multiheap:8,considersize (
Firm suggestion)
Multiheap defaults to 32 heaps, but a smaller number is suggested. The number must
equal the number of logical CPUs, or 32, whichever is less. Watson and Yorktown versions
of MALLOCOPTIONS are problematic for Sybase IQ.