[z/OS][MQ 9.3.1 Oct 2022]

Queue data records Version 9.3.1 release

IBM® MQ 9.3.1 enhances the SMF queue statistics records introduced at IBM MQ 9.3.0. The improved statistics include all the DISPLAY QSTATUS information in the record, making it easier for you to monitor usage and performance of your queue over time.

For IBM MQ 9.3.0 use the information in Queue data records.

The format of the queue statistics data record is described in assembler macro thlqual.SCSQMACS(CSQDQQST).

The queue statistics record contains information on the performance of selected queues including:
  • Queue name (qqstqnam)
  • Whether the queue is private or shared (qqstdisp bit on means queue is shared)
  • Page set ID where the queue is located, if allocated and a private queue (qqstpsid)
  • Bufferpool ID used by the queue, if allocated and a private queue (qqstbpid)
  • Queue sharing group (QSG) name, if it is a shared queue (qqstqsgn)
  • Coupling facility (CF) structure name, if it is a shared queue (qqstcfst)
  • Queue depth at the time when the SMF data was captured (qqstdpth)
  • Number of handles that are currently open for output for the queue at the time when the SMF data was captured. For shared queues, the number returned applies only to the queue manager generating the record. The number is not the total for all the queue managers in the queue sharing group. (qqstopct)
  • Number of handles that are currently open for input for the queue at the time when the SMF data was captured. For shared queues, the number returned applies only to the queue manager generating the record. The number is not the total for all the queue managers in the queue sharing group. (qqstipct)
  • Interval, in microseconds, between messages being put on the queue and then being destructively read. Value based on the last few messages processed. For shared queues, the values shown are for measurements collected on this queue manager only (qqstqtst)
  • Interval, in microseconds, between messages being put on the queue and then being destructively read. Value based on a larger sample of the recently processed messages. For shared queues, the values shown are for measurements collected on this queue manager only (qqstqtlt)
  • Time, in store clock format, at which the last message was put to the queue since the queue manager started. For shared queues, the value shown is for measurements collected on this queue manager only (qqstlput)
  • Time, in store clock format, at which the last message was retrieved from the queue since the queue manager started. A message being browsed does not count as a message being retrieved. For shared queues, the value shown is for measurements collected on this queue manager only (qqstlget)
  • Age, in seconds, of the oldest message on the queue (qqstmage)
  • Indicates whether there are any uncommitted changes (puts and gets) pending for the queue (qqstuncm)
Notes:
  • When the record is for a private queue, the qqstqsgn and qqstcfst fields are blank.
  • When the record is for a shared queue, or the record is for a private queue that does not have a page set and bufferpool assigned to it, the values of qqstpsid and qqstbpid are -1 (x'FFFF').

All information provided in the queue statistics record are the correct values at the time of the SMF data collection. For example, if during the interval a queue's information is changed and it moves to a new page set, the new page set ID is provided in the record.

Some of the fields in the record correspond to fields in the output of a DISPLAY QSTATUS command. These fields are:
  • qqstopct (OPPROCS)
  • qqstipct (IPPROCS)
  • qqstqtst (QTIME)
  • qqstqtlt (QTIME)
  • qqstlput (LPUTDATE, LPUTTIME)
  • qqstlget (LGETDATE, LGETTIME)
  • qqstmage (MSGAGE)

As well as the entries in the preceding list, there is a flag in the queue statistics record that indicates whether the record contains full or partial data (qqstpart). When this flag is set there was an issue accessing the information on the queue, for example if there is a CF structure failure.

In a shared queue partial record the accuracy of qqstdpth, qqstmage, and qqstuncm cannot be guaranteed. Therefore, the fields qqstdpth and qqstmage are populated with x'00' and the qqstuncm flag is not set.

In a private queue partial record the accuracy of qqstmage cannot be guaranteed, therefore the field is populated with x'00'.

Example data

Full records


Queue                	  Disp       	  PSID      BPID  	QSG 	     CF       	  Dpth  	  OPPROC  	  IPPROC  	  QTIMES   	  QTIMEL  	      LPUT            	      LGET                MSGAGE  	    UNCOM     RecType 
Example.Queue.Private	  Private    	   2	       4	      	                   67	            2             1	           17567          17453            DBB3E8D820B60605         DBB3E8D820B60605	     156	     YES      	 FULL
Example.Queue.Shared 	  Shared     	  -1	      -1	 QSG1	  CFSTRUCTURE1	    12              1	           3	         10569           9875           DBB3E8D820B60605         DBB3E8DCEC8C0114         14	        NO        FULL

The example data shows two full queue records, one for a private queue and one for a shared queue.

In the private queue record (Example.Queue.Private) the queue can be seen using page set 2 and bufferpool 4. You can use this information in conjunction with page set and bufferpool statistics to give a better view of what is happening on the system. As the queue is private, the QSG name and the CF Structure name are blank. The current depth of the queue is 67, two handles are currently open for output and one is currently open for input. The short-term value for QTIME is 17567 microseconds and the longer-term value is 17453 microseconds. The last put time and last get time, in store clock format, are both DBB3E8D820B60605. The oldest message on the queue has currently been there for 156 seconds. There are uncommitted changes currently pending for this queue and the record is a full record.

In the shared queue record (Example.Queue.Shared) the queue exists in the QSG 'QSG1' and is located in 'CFSTRUCTURE1'. As the queue is shared the page set ID and bufferpool ID are -1. The queue has a current depth of 12, one handle is currently open for output and three are currently open for input. The short-term value for QTIME is 10569 microseconds and the longer-term value is 9875 microseconds. The last put time, in store clock format, is DBB3E8D820B60605 and the last get time is DBB3E8DCEC8C0114. The oldest message on the queue has currently been there for 14 seconds. There are no uncommitted changes currently pending for this queue and the record is a full record.

Partial records


Queue                	  Disp       	  PSID  	  BPID  	QSG 	    CF          	  Dpth  	  OPPROC  	  IPPROC  	  QTIMES   	  QTIMEL  	  LPUT            	  LGET             MSGAGE  	  UNCOM  	  RecType 
Example.Queue.Shared 	  Shared    	    -1            -1	       QSG1	 CFSTRUCTURE1	            0              1	           1	          22569	  25896	      DBB3F45BDA390805	  DBB3F4B9828DDC05	      0	          NO            PARTIAL

The example data shows a partial record for a shared queue. The information contained in the record for the disposition, QSG and CF Structure are all valid. The current depth of the queue and the message age are displayed as '0' and uncommitted is marked as NO, as there was an issue obtaining the correct information from the coupling facility. Therefore, the record is marked as PARTIAL to indicate the depth might not be correct.

Note that when formatting the data with IBM MQ SupportPac MP1B, QSTAT DD card, the potentially erroneous current depth, message age, and uncommitted information message are not formatted.