The current invention relates generally to data processing systems, and more particularly to methods for the licensing and distribution of I/O functions within a computer system.
Many businesses are challenged with ensuring that their data processing systems keep pace with expanding and peak demands. As a result, data processing systems have been developed that have adaptable performance mechanisms for providing additional performance when needed. Commonly-assigned U.S. patent application entitled “Authorization Key System for Selectively Controlling the Performance of a Data Processing System”, Ser. No. 09/676,162 which is incorporated herein by reference in its entirety, discloses an exemplary system employing processor keys to assist in the adaptation of system resources to user needs.
Other adaptive data processing systems have been developed that utilize hardware and software elements constructed to accommodate a partitioning of a computer system for multiple user purposes. A partitioned system may be established as a result of a contract for computer services between a business user and a computer supplier. A partition is a grouping of resources that are allocated to execute in a cooperative manner to perform one or more assigned tasks. Each partition determined in the contract may specify an instruction processor (IP) performance level so that a business user can apply the partition to computing tasks that his business needs to perform.
For example, a partition may be formed that includes one or more predetermined instruction processors (IPs) and Input/Output Processors (IOPs), and a predetermined amount of memory within a shared main memory. A second partition may be created to include different processors, IPs and IOPs, and another memory range. Each of these partitions may operate independently from the other, each partition having its own operating system instance, so that a number of tasks may be executed in parallel within the system. When a system needs to be changed to adapt to a changing business requirement, the partitions can be redefined. For instance, if needed, processing resources may be allocated to the same partition and assigned to execute a single high-priority task.
Just as additional processors may be employed to adapt to a changing business requirement by engaging additional processors, so too can memory be expanded in a partition. Current systems may be constrained by other partition resources which are not yet expandable. It may be desirable for input/output (I/O) functions to be expanded as well as processor and memory capacity in order to meet a changing customer need. Additionally, the utilization of such an expanded partition resource may be a source of revenue for computer supplier if additional resources are needed by a user. Typically, an I/O expansion has been accomplished by adding additional modules or cards containing I/O channel capacity to a computer system. There is currently no built-in mechanism for the expansion of I/O resources within a partitioned computer system which can provide the system user with access and control of more I/O resources and the computer system supplier with more revenue.
Thus, there is a need for a mechanism in partitioned computer systems to provide additional I/O resources which are easily expandable to meet system user needs. The present invention addresses the aforementioned needs and solves them with additional advantages as expressed herein.
A method of providing an allocation of input/output (I/O) resources to a partitioned computer system involves identifying if the system is to be an I/O limiting system or an I/O licensing system. If the system is an I/O limiting system, a fixed amount of I/O resource is allocated to each active partition within the system. If the system is to be an I/O licensing system, an I/O key is read, and this allocates a system-wide maximum limit of I/O resources. The system wide resource may be evenly divided among the active partitions and each partition may use the divided portion assigned to each partition.
In one embodiment, a user may enter into a partition and raise or lower the amount of I/O resource that a partition uses in order to customize the system performance. Additional allocation for a particular partition may be provided if there is unallocated I/O resources available within the system. The user may decrease the allocation of I/O resources of other partitions in order to generate unallocated resources for another partition to use.
In one embodiment, a dynamic allocation may occur when a new partition is added to the computer system under the condition where there are no unallocated I/O resources. In this instance, a dynamic allocation may occur where some partitions may have their I/O allocations reduced to generate unallocated I/O resources for the new partition. The new partition may thus be able to come on-line with a sufficient amount of I/O resources available for basic operations. A system user may then balance the partition-to-partition allocations to optimize the system.
The foregoing summary, as well as the following detailed description of preferred embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, there is shown in the drawings exemplary constructions of the invention; however, the invention is not limited to the specific methods and instrumentalities disclosed. In the drawings:
Partitioned Computer Environment
The system further includes processing modules (PODs) 20A and 20B. A POD provides the processing capability for partitions within the computer system. A greater or lesser number of PODs may be included in the system than are shown in
Each of the PODs is coupled to each of the MSU devices via a dedicated, point-to-point connection referred to as an MSU Interface (MI), individually shown as MIs 30A through 30D. For example, MI 30A interfaces POD 20A to MSU device 10A, and MI 30B interfaces POD 20A to MSU 10B device. Other MI units are similarly interfaced to other PODs.
Each POD includes two sub-processing modules (Sub-PODs) and a crossbar module (XBAR). For example, POD 20A includes sub-PODs 50A and 50B and XBAR 60A. Other PODS and XBARS are similarly configured. Each sub-POD is interconnected to the respective crossbar module (XBAR) through a dedicated point-to-point interface.
The system of
In the exemplary system of
The system of
Finally, the system of
The architecture of
Processor and I/O Keys
A partition is a grouping of resources that are allocated to execute in a cooperative manner to perform one or more assigned tasks. A partitioned computer system provides that each partition has processor, memory and I/O resources. The system manufacturer provides a key to the system user so that specific partition resources are made available to the system user. Computing performance in partitioned computer systems may be determined by the use of a processor key. A processor key enables functionality within a partition and may establish processor performance limits within the partition. Generally, there may be one processor key per established partition. The processor key for the partition defines baseline and ceiling processor performance parameters, expiration date and a maximum time of use for the identified partition. Patent application Ser. No. 09/676,162 entitled “Authorization Key System for Selectively Controlling the Performance of a Data Processing System” discloses the use of processor keys and is incorporated herein by reference.
A processor key may be modified to indicate that an I/O key is needed to establish I/O performance for a given partition. For example, a processor key may have two bits; one which specifies if the system is an I/O limiting system and one bit which specifies if the system is to be an I/O licensing system. An internal format example embodiment of a processor key requiring the use of an I/O key may encode the following data in 256 bits as shown in Table 1:
The processor key in Table 1 is compatible with an instruction processor (IP) licensing scheme as in reference patent application Ser. No. 09/676,162 filed Sep. 29, 2000 entitled “Authorization Key System for Selectively Controlling the Performance of a Data Processing System”. Consequently, the functions of the Table 1 data fields such as type, version, images, reporting features, identifiers, and image descriptions may be specific to the licensing of IPs within a partitioned computer system. In addition, the processor key of Table 1 supports the use of memory and I/O licensing.
Notable fields placed in the processor key of Table 1 are the memory licensing field and the two I/O related fields. Memory licensing may be an option on a partitioned computer system. The exemplary processor key of Table 1 also provides an indication as to the necessity of a memory licensing key in the system. The I/O fields of I/O licensing and I/O limiting provide direct support for I/O features within a partitioned system using a processor key.
Since a processor key may be read first in a partitioned computer system, the processor key can provide the first indication to a computer system that an I/O key is needed to authorize the use of I/O resources. The processor key of Table 1 also shows an I/O licensing field which indicates whether an I/O licensing key is required. The I/O limiting bit field of Table 1 may be used to indicate that the key is to be used in an I/O limiting system. Normally, either the I/O licensing bit is set or the I/O limiting bit is set, but not both. These I/O indicators are generally in accordance with a contract between the system user and the system provider. It is assumed that a computer system is provided to a system user with more I/O capability than that which the user may currently need to allow growth in I/O use, if desired by the user.
If the system is an I/O limiting system, then no I/O key is needed to configure the I/O of the system. In this instance, the processor key is examined by a software support module (IP1SUPPORT) running on an instruction processor (IP) in association with an operating system. The I/O software support module is a program that contains an object library that manages licensing aspects of the present invention. An example operating system is the Master Control Program (MCP) available from Unisys® Corporation. If a processor key indicates that a system is to be of the I/O limiting type then a fixed maximum I/O rate is fixed per partition of the system. For example, if the I/O limit set on an I/O limiting system is 30K I/O, then each active partition may have a maximum of 30K I/O per unit time (a second) and no further allocation may be granted.
If an installed processor key indicates that the system requires an I/O license, then a different process may be expected. Under the condition where a system is to be governed by an I/O key license, but no I/O key is available, the I/O software support (IP1SUPPORT) program running in the operating system in a partition can sense the absence of the I/O key. The I/O license software support (IP1SUPPORT) may then establish a restricted limit on the I/O resource on a per partition basis. For example, in a I/O licensing system where no I/O key is yet installed, an I/O limit of 5K I/O may be placed on all partitions. This limitation is communicated to the system support software 96 where it is available in shared memory for any IP to read. Until a valid I/O key is installed, no further I/O capability may be granted.
In one embodiment, an I/O key may be an encrypted field that is input to the system control software 96 of
The <52 characters> are encrypted/decrypted using a modified data encryption standard. Decrypted data is 256 bits (32 bytes). In one embodiment, the system server 96 having a software application for I/O licensing support called IP1SUPPORT can decode the <52 characters>. An example external (encrypted) I/O key may be as follows:
Where the IO1 prefix identifies the key as an I/O key as opposed to a processor key which may have an IP1 prefix. The system licensing support software (IP1SUPPORT) may then decrypt the I/O key such that an internal or decrypted format of the external I/O key results.
The internal format of an I/O key encodes the following data in 256 bits as shown in Table 2:
The key type field may be permanent or temporary. Generally, a permanent key has no expiration date whereas a temporary key may have a finite expiration date. Expiration time may be expressed in Posix time format refers to the number of seconds since midnight Jan. 1, 1970. The I/O key may indicate the manufacturing control number (MCN) as well as a machine ID to identify the specific computer system the key was encoded to service. The number of days that a temporary key may be active as well as a key ID are also encoded. The I/O rate field of the I/O key specifies the system-wide I/O limit in kilo I/Os per second. An I/O throughput may also be established with an I/O key by specifying a system-wide limit in megabytes per second.
I/O Resource Distribution
In a system where a processor key has a I/O license bit set and an I/O key is available, the system may have a greater availability of I/O resources.
The IP in the active partition then determines the total number of active partitions in the partitioned system (step 220) by accessing shared information in the system control software. Once known, the amount of total I/O license availability is divided by the number of active partitions and a per partition allocation of I/O is determined (step 225). This information is written into the shared memory of the system control software so that other partitions may access it. The active partition may then be enabled and authorized to access the per partition allocation of I/O resources. (step 230). This process results in a fixed resource operating environment (step 235) as long as the number of partitions remains a constant.
In the event that a single partition attempts to exceed the I/O limit, the operating system limits the actual I/O utilized by throttling the IOPs of that partition. For example, if a system has a page or packet size of 4 K bytes, and the I/O limit on the partition is 30K I/Os, then the partition can transfer (4 K bytes×30K I/Os) 120 M bytes per second. The 30K I/O limit is essentially the total number of a packet transfers in the partition where the packet size may be a variable. If the transfer rate of the partition attempted to exceed the 30K I/O per second rate, then the transfers would be stopped for a unit of time until the rate fell below the 30K I/O per second rate. In one embodiment, this throttling of the I/O in a partition is accomplished by the operating system monitoring the total I/Os of a system and controlling the I/O operations on a per partition basis.
From the fixed resource operating position of step 235, a user may alter the I/O resource limits on a partition by accessing the IP within a partition and requesting change in the I/O resource allocation for that partition. In one embodiment, an operator display terminal, connected to one of the I/O channels of an IOP may be used to communicate with the I/O support software running via the operating system (e.g. MCP) in the partition. If the user wishes to reduce the amount of I/O allocated to a partition, then the user may use a user interface command, such as an IOACTIVATE command, and set a specific lower I/O allocation to the partition. If a user wishes the increase the allocation, the I/O support software will check the system wide I/O allocation against the sum of I/O allocation across all partitions to determine if any excess allocation remains. If there is allocation available, then the partition I/O software support may adopt the I/O increase. If there is no unallocated I/O resource available, then the request for additional I/O resources for that partition will be denied.
If additional allocation is denied, yet the user still wishes to add I/O resources to a specific partition, then the user must decide which one or more partitions he wishes to borrow I/O resources from and access those partitions. In one embodiment, each partition is preferably accessed via an operator display terminal associated with an IOP of the partition. Each partition that desirably is to be reduced may be reduced by the user and subsequent I/O operations within that partition will be limited. When a sufficient amount of I/O allocation has been reduced from existing active partitions, then the resources can be reallocated to the partition of interest. For example, in a partitioned computer system where four partitions are operating at 25K I/O each and where the system I/O license limit is 100K I/O, partition number four cannot be increased to 40K I/O because there is no unallocated I/O resources in the system. The user may access any or all of partitions 1-3 and reduce the total allocation of I/O such that 15K I/O is unallocated. The user may then access partition 4 and add in the unallocated 15K I/O to the 4th partition bringing its total of allocation up to 40K I/O.
Returning to
In the event that a new partition is to be added (step 260 of
In one embodiment, a balance between any two partitions in a partitioned computer system may be performed dynamically. In such an embodiment, a user would initiate an I/O balancing command from one partition specifying another partition to which the balance of I/O allotment is to be shared. The instruction processor (IP) of the first partition may acquire the allocation of the second partition from the shared storage area of the system server and calculate an even distribution between the two partitions. The IP of the first partition may then send commands to the IP of the second partition and both may reallocate I/O resources evenly between the two. For example, if the I/O allocation of partition 5 (40K I/Os) is to be balanced with the I/O allocation of partition 7 (50 K I/Os), the even distribution would be 45 K I/Os. The IP of partition 5 could work with the IP of partition 7 to redistribute the I/O in each partition accordingly. Additionally, if additional allocation were available, say 30K of unallocated I/Os within the system, the redistribution may result in an allocation of 60K I/Os in each of partitions 5 and 7.
User Interface
In one embodiment, a user software interface allows a user to install and manage software keys, including system-wide keys for processor performance, I/O performance, and memory capacity. As an example, the syntax for the interface may be in the form of a set of install keys (IK) commands. The following illustrates an exemplary set of IK command syntax specific to I/O licensing.
An exemplary response to an IK IOSHOW ALL command may be displayed as follows:
The display indicates that the system has an MCN/MACH number of 00ABE/0220 and that Partition 1 is being accessed for the information. The I/O rate for the system is 20K I/Os per second divided as 13K I/Os in partition 1 and 7K I/Os in partition 2. The I/O key is key number 5, is active, and is of the permanent type.
As mentioned above, while exemplary embodiments of the invention have been described in connection with various computing devices, the underlying concepts may be applied to any computing device or system in which it is desirable to implement an I/O licensing method. Thus, the methods and systems of the present invention may be applied to a variety of applications and devices. While exemplary programming languages, names and examples are chosen herein as representative of various choices, these languages, names and examples are not intended to be limiting. One of ordinary skill in the art will appreciate that there are numerous ways of providing object code that achieves the same, similar or equivalent systems and methods achieved by the invention.
As is apparent from the above, all or portions of the various systems, methods, and aspects of the present invention may be embodied in hardware, software, or a combination of both. When embodied in software, the methods and apparatus of the present invention, or certain aspects or portions thereof, may be embodied in the form of program code (i.e., instructions). This program code may be stored on a computer-readable medium, such as a magnetic, electrical, or optical storage medium, including without limitation a floppy diskette, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, magnetic tape, flash memory, hard disk drive, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer or server, the machine becomes an apparatus for practicing the invention. A computer on which the program code executes will generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. The program code may be implemented in a high level procedural or object oriented programming language. Alternatively, the program code can be implemented in an assembly or machine language. In any case, the language may be a compiled or interpreted language.
While the present invention has been described in connection with the preferred embodiments of the various figures, it is to be understood that other similar embodiments may be used or modifications and additions may be made to the described embodiment for performing the same function of the present invention without deviating therefrom. Therefore, the invention should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims.
The patent is based on and claims priority from a provisionally filed U.S. Patent Application Ser. No. 60/557,216 filed on Mar. 29, 2004. The following co-pending application has subject matter in common with the current application: Patent application Ser. No. 09/676,162 filed Sep. 29, 2000 entitled “Authorization Key System for Selectively Controlling the Performance of a Data Processing System”, attorney docket number RA-5311, which is incorporated herein in its entirety.
Number | Date | Country | |
---|---|---|---|
60557216 | Mar 2004 | US |