gtpm6m0wMain Supervisor Reference

Interprocessor Communications (IPC)

Interprocessor communications (IPC) allows you to move data between loosely coupled processors using the Multi-Processor Interconnect Facility (MPIF) licensed feature and channel-to-channel (CTC) communication links. The MPIF path active exit establishes a MPIF connection across each CTC communication link between processors. The system whose name is first in the alphabetic generally initiates connection processing.

IPC maintains an internal control block structure. The IPC global table (IGT) contains control information and one entry for each processor in a loosely coupled complex. Each entry contains data collection counters and a chain of IPC connection definition blocks (ICDBs) mapped by data macro DCTICD. An ICDB is established for each IPC connection between processors. For example, if 3 CTC links exist between processors A and B, the IGT entry for B in processor A contains a chain of 3 ICDBs. The ICDB contains the connection token, the identify token (IDTOK) for the resident system, and a pointer to the relevant IGT entry. CCCTIN allocates the IPC control block area based on the maximum number of links between loosely coupled processors in keypoint record E (CTKE) and places the address of the IGT in the CINFC table.

Restart

IPC restart:

  1. Initializes the IGT and ICDBs and initiates processing to establish communication with other processors.
  2. Uses the CINFC macro to locate the IPC control blocks and CTKE to determine the maximum number of connections allowed between processors.
  3. Initializes the IGT, ICDBs, and ICDB block list. The ICDB block list contains addresses of available ICDBs. The number of ICDBs allocated is the product of the number of processors in the complex and the maximum number of connections between processors.
  4. Uses the MPIFC macro to identify itself to MPIF.
  5. Places the IDTOK in the IGT.
  6. Uses MPIFC QUERY to query all MPIF users named IPC. The QUERY reply area contains the hardware CPUID for each system.
  7. Scans CTKI for a match of hardware CPUIDs. A match is found if the system is located in the loosely coupled complex.
  8. Initializes the appropriate entry in the IGT.
  9. Issues MPIFC CONNECT across each active path if the resident system name is alphabetically ahead of the other system name.

Sending Data

The SIPCC macro invokes the staging and transmit function to pass data to other processors within a loosely coupled complex. This function then:

  1. Verifies that the requested destination processor is active.
  2. Selects a connection to send the data over for each active processor. Connections are selected on a rotational basis to balance loads.
  3. Maintains a pointer to the next connection to send over in each IGT entry.
  4. Builds the send parameter list, the IPC 24-byte control area, and data area 1 in a system work block.
  5. Copies data area 2 to a core block for each destination processor.
  6. Assigns an IPC sequence number to the IPC item. IPC uses this number to keep IPC items in order in the receiving system.
  7. Executes MPIFC SEND for each destination processor. If no connections exist to the remote system, the IPC item is queued. If the IPC sequence number is about to roll over to zero, the IPC item is queued until restart notification is received from the remote system.

The SIPCC macro passes IPC items to destination users in sequence. The MPIF data received exit queues items until they can be presented in sequence. The sending system halts transmission when its send sequence number reaches the largest positive value (X'FFFFFFFF'). When the receiving system has received all pending messages, a message (with sequence number zero) is returned. Transmission then begins with send sequence number 1.

Receiving Data

MPIF activates the receive function when data is received from IPC. Receive is also activated following a successful send if Device End notification was requested in the send parameter list.

If the data received exit has been activated for Device End notification, the receive function places the IPC item on the ready list to be passed to the IPC user by the IPC post interrupt routine. Otherwise, receive checks the sequence number and if the received item is next in sequence places the item on the ready list for IPC post interrupt processing. If the received item is not next in sequence, receive queues it for resequencing. Resequencing occurs when an in-sequence item is received. If the receive sequence number is about to roll over to zero, receive sends a restart message to the remote system. This message (with an IPC sequence number of zero) informs the remote system to send IPC items again. Receive then releases the block containing the data received exit parameter list.

Timing Out

This function returns IPC items to the sender when data is not transmitted within the required time period. The timing function scans the IGT for remote systems that don't have connections to the local system. When such a system is found, timing decrements the time-out count for the items on the output queue. When the count reaches zero, timing sends a message to the operator. If the SIPCC return option was specified, each queued item is returned to the sender. Otherwise, the core blocks are released.

Displaying and Altering IPC Information

The ZSIPC command allows the operator to display and alter the IPC status, time intervals, number of IPC paths, class of IPC paths, and transmit or receive counts to any or all processors.

ZSIPC DISPLAY displays status and processor counts. The STATUS display shows the restart connection time-out value, the amount of time IPC will wait, the maximum number of IPC paths, and the IPC path class. The COUNTS parameter displays a processor's total activity and a breakdown of receiving processor activity.

ZSIPC ALTER alters the IPC timing values, the maximum number of paths between processors, the path class IPC uses, and resets the IPC counters. You can use the INTERVAL parameter to modify IPC time values. Use the TIME subparameter to set the length of the IPC interval and the TOUT subparameter to set the number of IPC intervals to wait before timing out.

Performance Considerations

Increasing the number of connections defined for IPC to use between processors improves IPC performance. Also, you can dynamically tune IPC for optimum system performance by altering the IPC timing values.

Cross References

For more information on IPC see: