+

Search Tips | Advanced Search

Tuning performance for nonpersistent messages on AIX

If we are using AIX V5.3 or later, consider setting your tuning parameter to use full performance for nonpersistent messages.

To set the tuning parameter so that it takes effect immediately, issue the following command as a root user:
/usr/sbin/ioo -o j2_nPagesPerWriteBehindCluster=0
To set the tuning parameter so that it takes effect immediately and persists over reboots, issue the following command as a root user:
/usr/sbin/ioo -p -o j2_nPagesPerWriteBehindCluster=0

Normally, nonpersistent messages are kept only in memory, but there are circumstances where AIX can schedule nonpersistent messages to be written to disk. Messages scheduled to be written to disk are unavailable for MQGET until the disk write completes. The suggested tuning command varies this threshold; instead of scheduling messages to be written to disk when 16 kilobytes of data are queued, the write-to-disk occurs only when real storage on the machine becomes close to full. This is a global alteration and might affect other software components.

On AIX, when using multithreaded applications and especially when running on machines with multiple processors, we strongly recommend setting AIXTHREAD_SCOPE=S in the mqm ID .profile or setting AIXTHREAD_SCOPE=S in the environment before starting the application, for better performance and more solid scheduling. For example:
export AIXTHREAD_SCOPE=S
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.


File descriptors

When running a multi-threaded process such as the agent process, you might reach the soft limit for file descriptors. This limit gives you the IBM MQ reason code MQRC_UNEXPECTED_ERROR (2195) and, if there are enough file descriptors, an IBM MQ FFST™ file.

To avoid this problem, we can increase the process limit for the number of file descriptors. To do so, alter the nofiles attribute in /etc/security/limits to 10,000 for the mqm user ID or in the default stanza.


System Resource Limits

Set the system resource limit for data segment and stack segment to unlimited using the following commands in a command prompt:
ulimit -d unlimited
ulimit -s unlimited
Parent topic: Improving performance of non-persistent messages

Last updated: 2020-10-04