Dynamic IMS Message Queue Performance Tuning

By default, the Enterprise Server TM system unilaterally flushes operating system buffers to your physical disk at key transactional points. These flushes are required to guarantee the transactional integrity of the message queue in the event of a failure that abnormally stops Enterprise Server TM. The overhead required for this default behavior can significantly degrade performance. However, you can improve performance by setting alternative options at startup, and by adjusting those options on the fly.

ES_TMC_AGGREGATE environment variable

To initialize performance settings for the IMS message queue, and to enable dynamic performance tuning, we provide the ES_TMC_AGGREGATE environment variable. Specifically, its twofold purpose is to:

  • Specify, at startup, either the default or an alternative method for flushing operating system buffers to disk.
  • Enable you to dynamically change the flushing method and apply it to the message queue without having to restart the enterprise server region.

Set ES_TMC_AGGREGATE for a specific enterprise server region by adding it to the [ES Environment] section in the Configuration Information field located on the Administration Server > Properties > General tab. Use the following syntax:

[ES-Environment]
ES_TMC_AGGREGATE={[,N|,D]|nnn,Y}
,N
Sets the default behavior, which is to unilaterally flush operating system buffers to your physical disk at each key transactional point. While this does not change the method used by default at startup, it does enable dynamic modification via ESMAC. Once set, you can then test the effect of various non-default settings by altering them dynamically.
,D
Disables the transactional flushing of operating system buffers to disk. This option can significantly enhance message queue performance; however it is at the expense of the transactional integrity of the message queue in the event of a system failure.
Note: To avoid unpredictable results when using this setting, we highly recommend that you also set the static options as follows on the Administration Server > Properties > MSS > IMS > TM > General tab:
  • Set Cold start to Everything (queue)
  • Check Persist

See Server Instance Properties: MSS IMS TM General for details.

nnn,Y
Enables the aggregated transactional flushing of operating system buffers to disk where nnn represents an interval of time, in milliseconds, during which additional buffers are allowed to accumulate before flushing. Valid values are 0 through 255.

Once a thread reaches a key transactional point and requests a flush, TM waits the specified interval to accumulate subsequent threads that also request a flush. At the end of the interval, one flush is performed for all accumulated requests thus potentially improving performance by reducing the number of flush commands issued to the operating system.

Note:
  • Threads requesting a flush wait until the flush is confirmed.
  • Generally, when the message queue resides on a higher performance I/O subsystem such as one using SSDs, a smaller value, e.g. 1 or 2, produces the best results. A value of 10 or higher seldom improves performance.

Dynamic changes using ESMAC

You can adjust and apply IMS message queue performance settings dynamically from the TM System Overview and Control section on the ESMAC IMS Control page. Use this feature to test various performance settings, and to adjust performance on the fly when required.

Important: Performance results produced by the ES_TMC_AGGREGATE environment variable settings and the associated dynamic ESMAC settings are strictly dependent on the hardware and operating system on which Enterprise Server is running. Test rigorously before committing these settings to a production system.