Limiting asynchronous IXGWRITE requests

The number of concurrent IXGWRITE requests for each connector to a log stream that requires asynchronous logger activity is limited. The limit is decided before the log block write request is accepted. If the amount of previous in-flight asynchronous writes is above the acceptable limit, then the newly requested write is rejected (the log data is not placed in the log stream). The limit of the connections for authorized IXGWRITE invokers is 10,000, and for unauthorized IXGWRITE invokers is 2000. An unauthorized invoker is the caller who is in supervisor state and has a PSW key 8 or larger.

Logger counts the number of IXGWRITE requests that require logger asynchronous activity based on a log stream connection. As the asynchronous activity is needed for an IXGWRITE request, logger increases the count for that log stream connector, and logger decreases this count when the asynchronous write activity completes. Examples of logger asynchronous activity for a write request include, but are not limited to, IXGWRITE threads that are waiting on completion of logger's XES write (IXLLIST WRITE) requests or logger's staging data set I/O (via Media Manager) requests.

If logger and the storage media used to hold the log blocks cannot keep pace with the incoming write requests, logger can eventually reach an asynchronous write threshold of 2000 for unauthorized callers or 10,000 for authorized callers. The limits are triggered for a short period of any new IXGWRITE requests for the log stream connector. IXGWRITE requests that complete synchronously are not included in the limit counting. However, when the limit is reached, all new IXGWRITE requests for the invoker are rejected with return code X'08', reason code X'0867'. For information about the return code X'08', reason code X'0867', see Return and Reason codes table in IXGWRITE in z/OS MVS Programming: Authorized Assembler Services Reference EDT-IXG.

Logger allows new or reissued IXGWRITE requests for this connector when the number of in-flight asynchronous writes is adequately reduced. The number is no more than 85% of the limit threshold in-flight, which must be no more than 1700 for unauthorized callers and 8500 for authorized callers. A logger ENF signal 48 is issued at this point indicating the log stream resources are available. Then, logger can track sufficient write requests and only reject the requests whose write rate and volume are beyond the limitation of logger.

Logger writes software symptom records to logrec and to logger's component trace area when logger has encountered this limit condition and when the limit is resolved. Sample portions of logger symptom records for these conditions after running EREP reports as the following output:
5752SCLOG RIDS/IXGF2WRT RIDS/IXGINLPA#L LVLS/709
FLDS/RETCODE VALU/H00000004 FLDS/REASON VALU/H04030017
IXGF2WRT ASYNC LIMIT REACHED

5752SCLOG RIDS/IXGF2WRT RIDS/IXGINLPA#L LVLS/709
FLDS/RETCODE VALU/H00000004 FLDS/REASON VALU/H04030018
IXGWRITE ASYNC LIMIT RELIEVED