[MQ 9.3.3 Jul 2023][z/OS]

Queue data records Version 9.3.3 release

IBM® MQ 9.3.3 enhances the SMF queue statistics records introduced at IBM MQ 9.3.0 and enhanced in IBM MQ 9.3.1. The latest improvements to the queue statistics give insight into what happened with your queue during the last SMF interval. This includes information on message flow, expiry, high and low watermarks and more.

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

For IBM MQ 9.3.1 use the information in Queue data records Version 9.3.1 release.

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 and includes the following fields:
QQSTID – Control block identifier
The identifier for the queue statistics control block; is always x'D80F'.
QQSTLL – Length of control block
The length of a queue statistics record.
QQSTEYEC – Control block eyecatcher
The eyecatcher used to make identification of the control block easier; is always 'QQST'
QQSTQNAM – Queue name
The name of the queue.
QQSTFLAG
An array of bits containing the following information about the queue:
QQSTDISP – Queue disposition
This bit identifies whether the queue is of private or shared disposition. If the bit is on, then it is a shared queue.
QQSTPART – Partial record identifier
This bit identifies whether the record is a full or partial record. If the bit is on, then it is a partial record. 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'.
QQSTUNCM – Uncommitted changes pending
This bit indicates whether there are any uncommitted changes (puts and gets) pending for the queue. If the bit is on, there are uncommitted changes.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would if run at the time the SMF record was generated.
If the queue is a shared queue and QQSTPART is set, this bit is always off as there might have been an issue obtaining the correct value.
QQSTPSID – Page set ID
The page set ID where the queue is located, if allocated and a private queue. If the queue is a shared queue, or a private queue that does not have a page set assigned to it, this field is set to -1 (x'FFFF').
This value is correct at the time the SMF record was generated. It is possible that the page set changed during the SMF interval, in which case, the value reflected in the next SMF record will be the new page set.
QQSTBPID – Buffer pool ID
The buffer pool ID used by the queue, if allocated and a private queue. If the queue is a shared queue, or a private queue that does not have a buffer pool assigned to it, this field is set to -1 (x'FFFF').
This value is correct at the time the SMF record was generated. It is possible that the buffer pool changed during the SMF interval. In this case, the value reflected in the SMF record is the new buffer pool.
QQSTQSGN – QSG name
The Queue Sharing Group name that the queue manager is a member of, if it is a shared queue. If the queue is a private queue this field is blank.
QQSTCFST – CF Structure name
The coupling facility (CF) structure name the queue uses if it is a shared queue. If the queue is a private queue this field is blank.
QQSTDPTH – Current depth
The depth of the queue at the time the SMF data was captured.
If the queue is a shared queue and QQSTPART is set, this value is always zero as there might have been an issue obtaining the correct value.
QQSTOPCT – Current open for output count
The 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.
This is the same as OPPROCS from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTIPCT – Current open for input count
The 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.
This is the same as IPPROCS from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTMAGE – Oldest message age
The age, in seconds, of the oldest message on the queue.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
If QQSTPART is set, this value is always zero as there might have been an issue obtaining the correct value.
QQSTQTST – Short term QTIME
The 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.
This is the same as the first value in QTIME from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTQTLT – Long term QTIME
The interval, in microseconds, between messages being put on the queue and then being destructively read. The value is 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.
This is the same as the second value in QTIME from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTLPUT – Last put date/time
The 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 messages put by this queue manager only.
This is the same as LPUTDATE and LPUTTIME from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTLGET – Last get date/time
The time, in store clock format, at which the last message was retrieved from the queue since the queue manager started. For shared queues, the value shown is for messages put by this queue manager only.
A message being browsed does not count as a message being retrieved.
This is the same as LGETDATE and LGETTIME from a DISPLAY QSTATUS command.
This is checked and set at the time of the SMF data collection and provides the same result as a DISPLAY QSTATUS command would, if run at the time the SMF record was generated.
QQSTDPHI – Highest depth
The highest depth reached by the queue during the SMF interval.
For shared queues, queue managers only have partial information about the change in depth of the queue over time. The QQSTDPHI value is based off this partial information as follows:
  • At the start of the interval the value of QQSTDPHI is set to zero.
  • When an application puts a message to the queue in the interval the queue manager checks the depth of the queue, including the message just being put. If this value is higher than the current value of QQSTDPHI, then it is used as the new value of QQSTDPHI.
  • When SMF data for the queue is collected, the queue manager will check if the current queue depth is higher than QQSTDPHI, if so the current queue depth is used as the new value of QQSTDPHI.
This approach means that the value of QQSTDPHI does not take into account messages put by other queue managers in the queue sharing group, unless those messages contributed to the queue depth at the point where SMF data is collected.
QQSTDPLO – Lowest depth
The lowest depth reached by the queue during the SMF interval.
For shared queues, queue managers only have partial information about the change in depth of the queue over time. The QQSTDPLO value is based off this partial information as follows:
  • At the start of the interval the value of QQSTDPLO is set to a special value.
  • The first time during the interval the queue manager obtains the depth of the queue, QQSTDPLO to that value.
  • When an application puts a message to the queue in the interval the queue manager checks the depth of the queue, including the message just being put. If this value is lower than the current value of QQSTDPLO, then it is used as the new value of QQSTDPLO.
  • When SMF data for the queue is collected, the queue manager will check if the current queue depth is lower than QQSTDPLO, if so the current queue depth is used as the new value of QQSTDPLO.
This approach means that the value of QQSTDPLO does not take into account messages got by other queue managers in the queue sharing group, unless those messages contributed to the queue depth at the point where SMF data is collected.
QQSTPUTS – MQPUT count
The number of messages put to the queue using MQPUT during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPUT1 – MQPUT1 count
The number of messages put to the queue using MQPUT1 during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTNPPT – Non-persistent MQPUT count
The number of non-persistent messages put to the queue using MQPUT during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPPT – Persistent MQPUT count
The number of persistent messages put to the queue using MQPUT during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTNPP1 – Non-persistent MQPUT1 count
The number of non-persistent messages put to the queue using MQPUT1 during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPP1 – Persistent MQPUT1 count
The number of persistent messages put to the queue using MQPUT1 during the SMF interval.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPUTB – MQPUT bytes
The number of bytes of message data, including any message properties, put to the queue using MQPUT during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPT1B – MQPUT1 bytes
The number of bytes of message data, including any message properties, put to the queue using MQPUT1 during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTNPPB – Non-persistent MQPUT bytes
The number of bytes of non-persistent message data, including any message properties, put to the queue using MQPUT during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTPPB – Persistent MQPUT bytes
The number of bytes of persistent message data, including any message properties, put to the queue using MQPUT during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTNP1B – Non-persistent MQPUT1 bytes
The number of bytes of non-persistent message data, including any message properties, put to the queue using MQPUT1 during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTP1B – Persistent MQPUT1 bytes
The number of bytes of persistent message data, including any message properties, put to the queue using MQPUT1 during the SMF interval. This does not include message headers in the calculation of the size.
For shared queues, the count only includes messages put through the queue manager that generated the SMF record.
QQSTFLPT – Failed MQPUT count
The number of MQPUT calls targeting the queue, which failed with a completion code of MQCC_FAILED, during the SMF interval.
For shared queues, the count only includes failed puts attempted through the queue manager that generated the SMF record.
QQSTFLP1 – Failed MQPUT1 count
The number of MQPUT1 calls targeting the queue, which failed with a completion code of MQCC_FAILED, during the SMF interval.
For shared queues, the count only includes failed puts attempted through the queue manager that generated the SMF record.
QQSTFPTC – Fast puts to a waiting getter count
The number of MQPUT and MQPUT1 calls targeting the queue, that were fast put to a waiting getter during the SMF interval.
Note: Put to a waiting getter is a technique whereby a message might not actually be put onto a queue if there is an application already waiting to get the message. Certain conditions must be satisfied for this to occur, in particular the message must be non-persistent and the putting and getting application must be processing the message outside syncpoint control.

If these conditions are met, then the message is transferred from the putting application's buffer into the getting application's buffer without actually touching the IBM MQ queue. This removes a lot of processing involved in putting the message on the queue and therefore leads to increased throughput and lower CPU costs.

QQSTFPTB – Fast puts to a waiting getter bytes
The number of message and properties bytes from MQPUT and MQPUT1 calls targeting the queue, that were fast put to a waiting getter during the SMF interval. This does not include message headers in the calculation of the size.
QQSTSTRM – Streamed message count
The number of messages that were successfully streamed from the queue during the interval. This is always zero if STREAMQ is not set for the queue.
QQSTMSMI – Minimum message size put
The minimum message size, in bytes, put to the queue during the SMF interval.
This includes message and properties bytes, and does not include message headers such as the MQMD.
QQSTMSMA – Maximum message size put
The maximum message size, in bytes, put to the queue during the SMF interval.
This includes message and properties bytes, and does not include message headers such as the MQMD.
QQSTMSAV – Average message size put
The average message size, in bytes, put to the queue during the SMF interval.
This includes message and properties bytes, and does not include message headers such as the MQMD.
QQSTGETS – Destructive MQGET count
The number of messages got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTNPDG – Non-persistent destructive MQGET count
The number of non-persistent messages got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTPDG – Persistent destructive MQGET count
The number of persistent messages got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTGETB – Destructive MQGET byte count
The number of message and properties bytes got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTNPDB – Non-persistent destructive MQGET bytes
The number of non-persistent message and properties bytes got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTPDB – Persistent destructive MQGET bytes
The number of persistent message and properties bytes got from the queue using destructive MQGET during the SMF interval.
For shared queues, the count only includes messages got through the queue manager that generated the SMF record.
QQSTBRWS – Non-destructive MQGET count
The number of messages browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTNPBR – Non-persistent non-destructive MQGET count
The number of non-persistent messages browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTPBR – Persistent non-destructive MQGET count
The number of persistent messages browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTBRWB – Non-destructive MQGET bytes
The number of message and properties bytes browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTNPBB – Non-persistent non-destructive MQGET bytes
The number of non-persistent message and properties bytes browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTPBB – Persistent non-destructive MQGET bytes
The number of persistent message and properties bytes browsed from the queue during the SMF interval.
For shared queues, the count only includes messages browsed through the queue manager that generated the SMF record.
QQSTFLGT – Failed destructive MQGET count
The number of destructive MQGET calls targeting the queue, that failed with a completion code of MQCC_FAILED, during the SMF interval.
Also included in the count is MQCC_WARNING when accompanied by a return code of MQRC_TRUNCATED_MSG_FAILED. However, not included in this count is any MQGET with a wait that receives MQRC_NO_MSG_AVAILABLE.
For shared queues, the count only includes failed MQGET attempts through the queue manager that generated the SMF record.
QQSTNMAG – Failed destructive MQGET with MQRC_NO_MSG_AVAILABLE count
The number of destructive MQGET calls, without wait, targeting the queue, that failed with both a completion code of MQCC_FAILED and a return code of MQRC_NO_MSG_AVAILABLE, during the SMF interval.
This value is a subset of QQSTFLGT.
For shared queues, the count only includes failed MQGET, without wait, attempts through the queue manager that generated the SMF record.
QQSTTMFB – Failed destructive MQGET with MQRC_TRUNCATED_MSG_FAILED count
The number of destructive MQGET calls targeting the queue, that failed with both a completion code of MQCC_WARNING and a return code of MQRC_TRUNCATED_MSG_FAILED, during the SMF interval.
This value is a subset of QQSTFLGT.
For shared queues, the count only includes failed MQGET attempts through the queue manager that generated the SMF record.
QQSTFLGW – No message available for destructive MQGET with a wait count
The number of times that there is no message available for destructive MQGET calls with a wait, targeting the queue, causing the MQGET to continue waiting, during the SMF interval.
QQSTRDGW – Re-driven destructive MQGET with a wait count
The number of times that destructive MQGET calls with a wait are re-driven to check if there is a message on the queue that matches their criteria, during the SMF interval.
When a new message arrives on the queue, all eligible waiting MQGET calls are woken up to attempt to get the message. Each MQGET with a wait that is woken up to check for a valid message increments this count by one. If any of these MQGET with wait fails to get the message, QQSTFLGW is incremented by one and the MQGET goes back into a waiting state.
QQSTFLBW – No message available for non-destructive MQGET with a wait count
The number of times that there is no message available for non-destructive MQGET calls with a wait, targeting the queue, causing the MQGET to continue waiting, during the SMF interval.
QQSTRDBW – Re-driven non-destructive MQGET with a wait count
The number of times that non-destructive MQGET calls with a wait are re-driven to check if there is a message on the queue that matches their criteria, during the SMF interval.
When a new message arrives on the queue, all eligible waiting MQGET calls are woken up to attempt to browse the message. Each MQGET with a wait that is woken up to check for a valid message increments this count by one. If any of these MQGET with wait fails to browse the message, QQSTFLBW is incremented by one and the MQGET goes back into a waiting state.
QQSTSAGT – Destructive MQGET with MQRC_SIGNAL_REQUEST_ACCEPTED count
The number of destructive MQGET calls targeting the queue, that complete with both a completion code of MQCC_WARNING and a return code of MQRC_SIGNAL_REQUEST_ACCEPTED, during the SMF interval.
QQSTSABR – Non-destructive MQGET with MQRC_SIGNAL_REQUEST_ACCEPTED count
The number of non-destructive MQGET calls targeting the queue, that complete with both a completion code of MQCC_WARNING and a return code of MQRC_SIGNAL_REQUEST_ACCEPTED, during the SMF interval.
QQSTIPHI – High watermark for IPPROC
The highest number of concurrent input handles open on the queue during the SMF interval.
For shared queues, the watermark only includes handles owned through the queue manager that generated the SMF record.
QQSTIPLO – Low watermark for IPPROC
The lowest number of concurrent input handles open on the queue during the SMF interval.
For shared queues, the watermark only includes handles owned through the queue manager that generated the SMF record.
QQSTOPHI – High watermark for OPPROC
The highest number of concurrent output handles open on the queue during the SMF interval.
For shared queues, the watermark only includes handles owned through the queue manager that generated the SMF record.
QQSTOPLO – Low watermark for OPPROC
The lowest number of concurrent output handles open on the queue during the SMF interval.
For shared queues, the watermark only includes handles owned through the queue manager that generated the SMF record.
QQSTOPEN – Successful MQOPEN count
The number of times the queue was successfully opened during the SMF interval. This does not include opens performed as part of an MQPUT1 call.
For shared queues, the count only includes when the queue is opened through the queue manager that generated the SMF record.
QQSTCLOS – MQCLOSE count
The number of times the queue was successfully closed using MQCLOSE, during the SMF interval.
For shared queues, the count only includes when the queue is closed through the queue manager that generated the SMF record.
QQSTINQR – MQINQ count
The number of MQINQ calls that completed with a completion code of MQCC_OK or MQCC_WARNING, during the SMF interval.
QQSTSET – MQSET count
The number of MQSET calls that completed with a completion code of MQCC_OK during the SMF interval.
QQSTEXPR – Expired messages count
The number of expired messages cleared from the queue during the SMF interval.
This includes messages expired by an application issuing an MQGET, by the expired message scanning task or by a REFRESH QMGR TYPE(EXPIRY) command.
QQSTRBPT – Rolled back MQPUT counts
The number of messages that were put to the queue, that have been rolled back off the queue, during the SMF interval.
QQSTRBGT – Rolled back MQGET counts
The number of messages destructively read from the queue, that have been rolled back onto the queue, during the SMF interval.