Multiple I/O processor system
AssigneeUnisys Corporation
InventorsRobert H. Tickner, Philip A. Murphy, Jr., Wayne A. Genetti
Life of this patent
Estimating the term…
Abstract
The present invention involves the use of multiple I/O processors (204) and (206), configured in parallel in an I/O system (104), to increase system performance as well as enhance system resiliency. Performance is increased by programming one of the multiple I/O processors with the added ability to allocate received I/O job requests among the active I/O processors including itself, thus allowing for parallel processing. The I/O system resiliency is enhanced by ensuring that any one of the I/O processors can assume the tasks of any other I/O processor which may fail. The I/O system described above employs a load balancing algorithm to evenly distribute the I/O job functions among the active I/O processors.
Claims18
In a processing system including at least one CPU which issues I/O job function requests, a main memory and a plurality of I/O devices, a system for handling the I/O job function requests comprising:
- at least two I/O processor means, separate from the CPU, for performing I/O job functions including selecting paths and managing I/O devices;
- I/O controller means, coupled to the CPU, for allocating received I/O job function requests between the two I/O processor means;
- and
- data structure means for storing I/O device information used during allocation to the I/O job function requests,
- wherein the I/O controller means receives an I/O job function request from the one CPU, and responsive to the device information in the data structure means assigns the I/O job function to one of the I/O processor means.
In a processing system including at least one CPU which issues I/O job function requests, a main memory and a plurality of I/O devices, a system for handling the I/O job function requests comprising:
- at least two I/O processor means for performing I/O job functions including selecting paths and managing I/O devices;
- I/O controller means, coupled to the CPU, for allocating received I/O job function requests between the two I/O processor means, wherein one of the I/O processor means includes the I/O controller means;
- and
- data structure means for storing I/O device information used during allocation of the I/O job function requests,
- wherein the I/O controller means receives an I/O job function request from the one CPU, and responsive to the device information in the data structure means assigns the I/O job function to one of the I/O processor means.
In a processing system including at least one CPU which issues I/O job function requests, a main memory and a plurality of I/O devices, a system for handling the I/O job function requests comprising:
- at least one slave I/O processor (sIOP) means, separate from the CPU, for performing I/O job functions including selecting paths and managing I/O devices;
- master I/O processor (mIOP) means, separate from the CPU, for both performing I/O job functions including selecting paths and managing I/O devices, and allocating received I/O job function requests between the sIOP means and the mIOP means;
- and
- data structure means for storing information used during allocation of I/O job function request,
- wherein the mIOP, being coupled to the CPU, receives an I/O job function request from the at least one CPU, and based on the information in the data structure means either assigns the I/O job function to the sIOP means or the mIOP means.
In a processing system including at least one CPU which issues I/O job requests, a main memory, at least two I/O processors, and a plurality of I/O devices each assigned to be serviced by one of the I/O processors, a process for substantially evenly distributing the I/O jobs among the I/O processors, comprising the steps of:
- a) generating a value representing the number of I/O jobs handled by each I/O device during a predetermined time interval;
- b) calculating a total number of I/O jobs for each I/O processor as a sum of the value generated in step a) for each I/O device which is assigned to the I/O processor, wherein at least a highest total and a lowest total are obtained;
- c) calculating a difference value as the difference between the I/O processors with the highest and lowest totals from step b) for the I/O processors;
- d) comparing the difference value in step c) with a predetermined maximum allowable difference value;
- e) if the difference value in step c) is greater than a predetermined maximum allowable difference value,
- (i) reassigning from the I/O processor having the highest total in step b) to the I/O processor having the lowest total in step b) the I/O device with the value from step a) which is closest in value to the difference value from step c) divided by two, and
- (ii) repeating step e) using the remainder of the difference value from step c) as the difference value if the total number of I/O jobs reassigned is less than one-half the difference value from step c);
- f) resetting the I/O job counts for the I/O devices.
In a processing system including at least two I/O processors which both handle I/O job requests, and wherein one of the I/O processors also allocates I/O job requests between the at least two I/O processors, a process for detecting a failed non-allocating (slave) I/O processor and replacing that non-allocating (slave) I/O processor with the allocating (master) I/O processor to enhance system resiliency, comprising the steps of:
- a) issuing a check-in message from the allocating I/O processor to one of the non-allocating processors;
- b) detecting that the non-allocating I/O processor has not responded within a predetermined time period;
- c) disabling the non-responding, non-allocating I/O processor from the processing system;
- d) accessing any I/O job requests that the non-responding, non-allocating I/O processor had not handled;
- and
- e) re-allocating the any I/O jobs the non-responding, non-allocating I/O processor had not handled to another I/O processor in the processing system.
In a processing system including at least two I/O processors which both handle I/O job requests, and wherein one of the I/O processors also allocate I/O job requests between the two I/O processors, also including a console connected to each of the I/O processors with access to local memories of the I/O processors, a process for replacing the allocating (master) I/O processor with a non-allocating I/O processor to enhance system resiliency, comprising the steps of:
- a) detecting that the allocating I/O processor is no longer functioning properly;
- b) disabling the allocating I/O processor from the processing system;
- c) retrieving, by way of the console, any I/O job requests which the allocating I/O processor had not handled and any information in the local memory of the allocating I/O processor needed for allocating the I/O job requests;
- d) loading, by way of the console, the data retrieved in step c) into the non-allocating I/O processor;
- and
- e) restarting the processing system such that the non-allocating I/O processor is now an allocating processor.
Dependencies are inferred from the claim text.