Skip to main content

     
  TPF : Library : Newsletters
  Products > Software > Host Transaction Processing > TPF > Library > Newsletters >

TPF MQSeries Enhancement on PUT 13

David Hu, Sylvia Warner, and Alice Williams-Obleton, IBM TPF Development

Moving MQSeries Messages from a Deactivated Processor

With the availability of MQSeries local queue manager support for TPF, users may occasionally need a function to recover MQSeries messages from a deactivated processor in a TPF loosely coupled complex. With APAR PJ27351, a new functional message has been added to allow TPF users to move MQSeries messages from a normal local queue in a deactivated processor.

Note: This function does not work with a transmission queue.

The ZMQSC MOVEMSGS functional message moves MQSeries messages saved on a normal local queue (memory queue) residing in a deactivated processor to the same queue in the processor in which the functional message is entered. For more information about this functional message, see the TPF Operations manual. The following shows examples of ZMQSC MOVEMSGS functional message commands:

For normal use, enter ZMQSC MOVEMSGS Q-Q1 CPU-C

When a previous MOVE message abends, enter ZMQSC MOVEMSGS Q-Q2 CPU-D FORCE to force the next move message.

TPF MQSeries Client TCP/IP Support

Have you been hoping to use the MQSeries client on TPF to talk to a remote MQSeries server using a TCP/IP network? With APAR PJ27230 you have a choice of using either LU 6.2 or TCP/IP for communicating with remote MQSeries servers. Previously, TPF only supported LU 6.2 channels for our MQSeries clients.

Newsletter Article Illustration

To use this support:

  1. Using either a 3172 or 3746 communication controller, set up the TPF TCP/IP link. See TPF Transmission Protocol/Internet Protocol for detailed setup instructions.
  2. See the TPF Migration Guide for information about how to build and load all the programs needed for APAR PJ27230.
  3. Enter ZMQID DEFINE to define a channel with TCP specified as the value for the TRPTYPE parameter. The value of the CONNECTION (or CONN) parameter can be either a host name or an IP address; for example:
    1. ZMQID DEFINE CH-CHL1 TRPTYPE-TCP QM-QMNGR1 CONN-9.117.147.98
    2. ZMQID DEFINE CH-CHL1 TRPTYPE-TCP QM-QMNGR1 CONN-star.pok.ibm.com
    3. ZMQID DEFINE CH-CHL1 TRPTYPE-TCP QM-QMNGR1 CONN-9.117.147.98(2000)
    4. ZMQID DEFINE CH-CHL1 TRPTYPE-TCP QM-QMNGR1 CONN-star.pok.ibm.com(2000) The port number of the server can be specified in parentheses at the end of the CONNECTION parameter if the port number is not well-known port 1414.
  4. Define channel CHL1 and MQSeries queue manager QMNGR1 on the remote MQSeries server.
  5. Multiple channels can be defined by using the ZMQID functional message to the same remote MQSeries server with either TRPTYPE-TCP or TRPTYPE-APPC specified (if an LU 6.2 connection will be used) at the same time.
  6. Enter ZMQID DISPLAY to display the information for the channels defined in the TPF system; for example:
    zmqid disp ch-*
    CSMP0097I 19.20.50 CPU-B SS-BSS  SSU-HPN  IS-01
    MQID0013I 19.20.50 START OF ZMQID DISPLAY
    CHANNEL               chl1
     CONNECTION           9.117.249.98(2000)
     QMNAME               qmngr1
    CHANNEL               chl2
     CONNECTION           TPFNET.LU
     QMNAME               qmngr1
    CHANNEL               chl3
     CONNECTION           9.117.249.98
     QMNAME               qmngr3
    END OF DISPLAY
    
    zmqid disp ch-chl1
    CSMP0097I 19.22.12 CPU-B SS-BSS  SSU-HPN  IS-01
    MQID0012I 19.22.12 START OF ZMQID DISPLAY
    CHANNEL               chl1
    CONNECTION            9.117.249.98(2000)
    TRPTYPE               TCP
    MODE
    TPNAME
    QMNAME                qmngr1
    DESCR
    RCVDATA
    RCVEXIT
    SCYDATA
    SCYEXIT
    SENDDATA
    SENDEXIT
    MAXMSGL              30000
    END OF DISPLAY
    
    zmqid disp ch-chl2
    CSMP0097I 19.23.01 CPU-B SS-BSS  SSU-HPN  IS-01
    MQID0012I 19.23.01 START OF ZMQID DISPLAY
    CHANNEL               chl2
    CONNECTION            TPFNET.LU
    TRPTYPE               APPC
    MODE                  TPFLU62
    TPNAME                TPFTP
    QMNAME                qmngr1
    DESCR
    RCVDATA
    RCVEXIT
    SCYDATA
    SCYEXIT
    SENDDATA
    SENDEXIT
    MAXMSGL              30000
    END OF DISPLAY
    
    

    MQSeries Slow Queue Sweeper

    For PUT 12, turbo MQSeries APAR PJ27023 introduced TPF customers to the sweeper, which is an agent used to remove messages residing in memory for local memory queues to TPF collection support (TPFCS) files, thus cleaning up unused system work blocks. This sweeper targets queues that are not being serviced in a user-specified period of time. Now, with MQSeries PUT 13 (APAR PJ27351), it is time to "hang that old mop out to dry" and use the new and improved slow queue sweeper (SQS). The SQS expands on the performance of the sweeper by freeing up resources from local memory queues (now including transmission queues) based on the rate at which they are serviced.

    What is a slow queue and how is the service rate determined?

    The service rate of the local memory queue is defined as the ratio of MQPUTs performed by an application versus the total number of messages retrieved from the queue. When the size of the queue in memory is twice the retrieval rate, the queue becomes known as a slow queue because the size of the queue appears to be growing faster than the rate at which we are removing messages. Slow queues are known for their potential to take over (or hog) large amounts of system work blocks (SWBs) that the old sweeper overlooks because the queue is being serviced in a user-specified period of time. The SQS, however, detects this condition and targets these slow queues in addition to those targeted by the old sweeper.

    How will the SQS affect system performance?

    This mechanism frees up even more SWBs for immediate use by other system services, thus enhancing the overall performance. The SQS does not sweep everything from memory; it actually leaves a small buffer of messages on the queue in an attempt to accommodate the slow incoming requests from applications. By allowing a few messages to remain in memory, the SQS limits the amount of unsweeping required for each application request.

    Because you brought it up, how will SQS affect the unsweep process?

    Unsweep contains some minor enhancements to allow for the changes made to the SQS, such as the unsweeping of transmission queues; but the basic structure and performance remain unchanged.

    Will the SQS generate a lot of unnecessary sweep activity?

    If the local memory queue is a dead queue, the sweeper will free up its SWBs from memory and the queue will be "forgotten" until an application issues a request for that queue. If, however, the queue is just slow, there may be a vicious cycle of sweep/unsweep requests. To break up this cycle, the concept of skipping sweeps is introduced. After each unsweep, an indicator is set to alert the sweeper that the queue has just been unswept. In this case, the sweeper skips over the queue and continues on to the next queue, giving the system a chance to process any outstanding MQGETs and/or pre-fetch requests uninterrupted. The skipped queue will be swept during the next sweep interval, which is 5 seconds.

    Can I turn off the SQS?

    Sure. To disable the SQS, just set the sweep value to OFF in the Queue Manager profile and this will turn off the sweeper for the entire system. When defining queues, the default value for the SWEEP parameter is ON, so there is no need to specify this in the queue definition unless you specifically want to turn off the sweeper for the queue.

    Note: We do not recommend that you turn off the sweeper.

    How easy is it to migrate from the old sweeper to the new SQS?

    Not a problem at all! Just follow the instructions listed in the TPF Migration Guide to load APAR PJ27351 and all predefined queues will be updated to use the SQS. There is no longer a SWEEPTIME parameter, so all queues as well as the queue manager will now display a parameter called SWEEP with a value of ON or OFF. Removing the APAR is also a breeze with the SQS; any queue that is defined with a SWEEP parameter value of ON will now display a sweep time of 30; those with a value of OFF will display a value of 0. The original values of all other queues as well as the queue manager will be restored.

    Third Quarter 2000 - Table of Contents