1. Field of the Invention
The field of the invention is data processing, or, more specifically, methods, systems, and products for activating on-demand computer resources.
2. Description of Related Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely complicated devices. Today's computers are much more sophisticated than early systems such as the EDVAC. Computer systems typically include a combination of hardware and software components, application programs, operating systems, processors, buses, memory, input/output devices, and so on. As advances in semiconductor processing and computer architecture push the performance of the computer higher and higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Computer resource requirements for business and government applications often increase over a time period due to sales or employee growth. Over the same time period, the resource requirements may fluctuate dramatically due to inevitable peaks and valleys of day to day operations or from increased loads for seasonal, period-end, or special promotions. The peak resource requirements within a time period may be every different from the valley resource requirements. In order to be effective at all time, the computerized resources of a business must be sufficient to meet the current fluctuating needs of the business as well as projected needs due to growth.
To address such fluctuating and ever increasing resource demands, a customer conventionally purchases computing resources capable of accommodating at least its current peak requirement while planning for future requirements which are likely to be elevated. Customers therefore face the prospect of investing in more computerized resources than are immediately needed in order to accommodate growth and operational peaks and valleys. At any given time, therefore, the customer may have excess computing capacity—a very real cost. Such costs can represent a major expenditure for any computer customer.
To address this problem, computing architectures support ‘capacity on demand,’ allowing customers to own more computer resources than they have paid for. When the need for resources increases, due to a temporary peak demand or to permanent growth, customers may purchase or rent additional computer resources already installed on their computers. Such customers may obtain authorization in the form of security codes to activate these additional resources, called ‘on-demand computer resources,’ temporarily or permanently. Temporary activations may be of different types. A temporary activation may be ‘on/off,’ that is, an activation of a resource for a set period of time regardless of actual usage. A temporary activation may be a ‘reserve’ activation, that is, an activation effected only upon the detection of a predetermined level of demand. And a temporary activation may be a ‘trial’ activation, such as, for example, a promotional activation or a test activation at no charge to the customer.
Secure enablement codes for permanent activations of on-demand resources specify a numeric quantity of on-demand computer resources authorized for activation.
Enablement codes for temporary activations of on-demand computer resources specify an numeric quantity of resource utilization that represents utilization of a resource for a period of time, such as, for example, a processor-day or a gigabyte-day. For temporary activation, the customer is charged for each activation. The result is tremendous complexity: many enablement codes that system administrators must track and manage. In addition, this relatively rigid strategy does not allow a customer to alter in an economical way the quantity of resources or the relative ratios among quantities of resources to meet periodic, often daily or more frequent, up and downs in demand for resources. This rigid strategy is not dynamic enough to handle varying system loads. Processors, memory, and other resources cannot be added or removed from service without incurring an expense each time new resources are added.
Methods, systems, and products are disclosed that operate generally to enable activating on-demand computer resources according to a customer's selection of resources, regardless of the type of computer resource to be activated and regardless of the type of activation. Systems according to embodiments of the present invention operate generally by receiving a generic enablement code and activating an on-demand computer resource in dependence upon the generic enablement code. A generic enablement code typically includes a maximum weighted measure of on-demand computer resource utilization. Activating an on-demand computer resource in dependence upon the generic enablement code may be carried out by activating an on-demand computer resource in dependence upon a maximum weighted measure of on-demand computer resource utilization and upon one or more weighting coefficients of on-demand computer resource utilization for one or more on-demand computer resources.
Activating an on-demand computer resource in dependence upon the generic enablement code may include activating an on-demand computer resource in dependence upon a customer-provided quantity of on-demand computer resources to be activated. Activating an on-demand computer resource in dependence upon a generic enablement code also may be carried out in dependence upon one or more on-demand computer resource activation parameters. Activating an on-demand computer resource in dependence upon the generic enablement code may include selecting a weighting coefficient of on-demand computer resource utilization for the resource in dependence upon one or more on-demand computer resource activation parameters. On-demand computer resource activation parameters may include computer type, one or more computer hardware features, and operating system type. Activating an on-demand computer resource in dependence upon the generic enablement code may include receiving a customer request for activation of a quantity of the on-demand computer resource and activating the requested quantity of the on-demand computer resource if the activating will result in a sum of products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources no greater than a maximum weighted measure of on-demand computer resource utilization. Activating an on-demand computer resource in dependence upon the generic enablement code may include receiving a customer request for activation of a quantity of an on-demand computer resource and activating the requested quantity of on-demand computer resource only if the activation satisfies this expression:
where M represents a maximum weighted measure of on-demand computer resource utilization, N represents a number of on-demand computer resources having weighting coefficients of on-demand computer resource utilization, Wi represents a weighting coefficient of on-demand computer resource utilization for an ith on-demand computer resource, and Qi represents an activated quantity of utilization for an ith on-demand computer resource.
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular descriptions of exemplary embodiments of the invention as illustrated in the accompanying drawings wherein like reference numbers generally represent like parts of exemplary embodiments of the invention.
Exemplary methods, systems, and products for activating on-demand computer resources according to embodiments of the present invention are described with reference to the accompanying drawings, beginning with
A ‘provider’ is any entity that provides generic enablement codes for use in activating on-demand computer resources according to embodiments of the present invention. A provider may be the manufacturer of a customer's computer, an OEM or vendor of a customer's computer, a third party provider of activation services, or another entity as will occur to those of skill in the art. The term ‘customer computer’ is used in this specification to refer to any system configured to activate on-demand resources according to embodiments of the present invention. The system of
A generic enablement code is computer data configured to enable activation of on-demand computer resources regardless of the type of computer resource to be activated and regardless of the type of activation. Types of computer resources include any computer resource provided to a customer as an on-demand resource amenable to later activation, including, for example, processors, memory, input/output capacity, database metrics, additional licensed users, operating system modules, application programs, and so on as will occur to those of skill in the art. The generic enablement code (404) is structured as a string of 64 ASCII characters (112) divided into substrings that include a 32 character security code (106), a 20 character maximum weighted measure (108) of on-demand computer resource utilization, and 12 characters (110) for other uses, part of which here is reserved and part of which is used for a checksum. Clearly this is only one example of how to structure a generic enablement code, provided only for explanation, not for limitation. Any structure of a generic enablement code that will occur to those of skill in the art is well within the scope of the present invention.
In the system of
The arrangement of computers making up the exemplary system illustrated in
The customer computer (114) of
The customer computer of
More particularly, on-demand resource activation module (212), upon receiving a customer request for activation of a quantity of an on-demand computer resource, activates the requested quantity of the on-demand computer resource if the activating will result in a sum of products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources no greater than a maximum weighted measure of on-demand computer resource utilization. This condition for activation of on-demand computer resources in the on-demand resource activation module (212) of customer computer (114) may be expressed as
where M represents a maximum weighted measure of on-demand computer resource utilization, N represents a number of on-demand computer resources having weighting coefficients of on-demand computer resource utilization, Wi represents a weighting coefficient of on-demand computer resource utilization for an ith on-demand computer resource, and Qi represents an activated quantity of utilization for an ith on-demand computer resource.
Weighting coefficients may vary in value according to resource type, activation type, and values of resource activation parameters. Activation type may include permanent activation or temporary activation, including on/off activation, reserve activation, or trial activation. Resource activation parameters may include any system characteristics that may affect the cost or value of an activation, including, for example, system type, system age, which operating system is in use with an activated resource, memory word size, memory bus type, peripheral bus type, processor size (32 bit or 64 bit, for example), and so on, as will occur to those of skill in the art. Weighting coefficients for use in determining whether to activate an on-demand computer resource when requested to do so may be selecting from a plurality of such coefficients in dependence upon resource type, activation type, and resource activation parameter values.
Activating on-demand computer resources in accordance with the present invention is generally implemented with computers, that is, with automated computing machinery. In the system of
Stored in RAM (168) is a generic enablement code generation module (204), computer program instructions for generating and providing to customer systems generic enablement codes for use in activating on-demand computer resources according to embodiments of the present invention. Also stored RAM (168) is a data communications module (208), computer program instructions for use in transmitting or receiving a generic enablement code for use in activating on-demand computer resources according to embodiments of the present invention. Also stored in RAM (168) is an on-demand resource activation module (212), computer program instructions that receive a generic enablement code and activate an on-demand computer resource in dependence upon the generic enablement according to embodiments of the present invention. Also stored in RAM (168) is a generic enablement code (404), weighting coefficients (412) of on-demand computer resource utilization for one or more on-demand computer resources, resource activation parameters (418), and a customer-provided quantity (420) of on-demand resources to be activated, all for activating on-demand computer resources according to embodiments of the present invention. On-demand resource activation module (212) is programmed to receive, store, and utilize in activating on-demand computer resources such generic enablement codes (404), weighting coefficients (412), resource activation parameters (418), and customer-provided quantities (420) of on-demand resources to be activated.
Also stored in RAM (168) is an operating system (154). Operating systems useful in computers according to embodiments of the present invention include UNIX™, Linux™, Microsoft NT™, AIX™, IBM's i5OS™, and many others as will occur to those of skill in the art. Operating system (154), generic enablement code generation module (204), data communications module (208), on-demand resource activation module (212), generic enablement code (404), weighting coefficients (412), resource activation parameters (418), and a customer-provided quantity (420) of on-demand resources to be activated in the example of
In addition, generic enablement code generation module (204), data communications module (208), on-demand resource activation module (212), generic enablement code (404), weighting coefficients (412), resource activation parameters (418, and a customer-provided quantity (420) of on-demand resources to be activated in the example of
Computer (152) of
The example computer of
The exemplary computer (152) of
For further explanation,
In the method of
In the method of
In the method of
In the method of
For further explanation,
Table 1 sets forth an example for explanation of activating an on-demand computer resource in dependence upon relations among a maximum weighted measure, weighting coefficients of on-demand computer resource utilization, and corresponding activated quantities of on-demand computer resources. Table 1 illustrates a customer computer system having a maximum weighted measure of on-demand computer resource utilization set to the value 600. The customer computer system has weighting coefficients of on-demand computer resource utilization for on-demand processors, on-demand memory, and on-demand I/O channels of 50, 25, and 20 respectively. The customer computer system has corresponding activated quantities of on-demand computer resources of 4 on-demand processors, 12 gigabytes on-demand memory, and 3 on-demand I/O channels.
In this example, the products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources therefore are 200 for on-demand processors, 300 for on-demand memory, and 60 for on-demand I/O channels. The sum of the products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources therefore is 200+300+60=560. In this example, an unactivated quantity of weighted measure of on-demand computer resource utilization may be expressed as 600−560=40, and new requests for activation of on-demand resources whose products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources exceed this quantity will not be applied. That is, for example:
For further explanation,
where M (506) represents a maximum weighted measure of on-demand computer resource utilization, N (610) represents a number of on-demand computer resources having weighting coefficients of on-demand computer resource utilization, Wi (612) represents a weighting coefficient of on-demand computer resource utilization for an ith on-demand computer resource, and Qi (614) represents an activated quantity of utilization for an ith on-demand computer resource.
Again consider the example of Table 1. In this example, T=600. N=3, because there are three computer resources having weighting coefficients of on-demand computer resource utilization: processors, memory, and I/O channels. Then, if these three resources are numbered sequentially:
W1=50, Q1=4,
W2=25, Q2=12,
W3=20, Q3=3,
and the sum of the products Wi×Qi is 560. Any request for activation of an additional on-demand resource whose activation will result in a sum of the products Wi×Qi greater than 600 will be rejected. That is, any request for activation of an additional on-demand resource whose sum of the products Wi×Qi is greater than 40 will be rejected.
For further explanation,
The exemplary data structures of
The exemplary data structures of
For further explanation,
For further explanation,
In this example, a user has selected the on-demand resource ‘PROC’ or ‘processors’ (806) for activation. Mouse-clicking the ‘Activate’ button (808) causes the tool to display dialog box (824), which could not be displayed until after the user advise to tool of the type of resource to activate. When the tool knows the type of resource to activate, the tool may display the resource type (807). After the user enters the activation type (814), the tool may query a table such as, for example, the table illustrated at reference (700) in
In this way, a user can conveniently see that only those requests for activation of processors whose product of weighting coefficient and quantity to be activated is not greater than 150 will be accepted for activation. After the user enters the quantity to activate (816), the tool may display the product (820) weighting coefficient and quantity to be activated. Then when the user invokes the ‘Apply’ button (822), the tool accepts the user input as a request to activate a quantity of an on-demand computer resource, in this case 2 processors, and activates that requested quantity of the on-demand computer resource if the activating will result in a sum of products of weighting coefficients of on-demand computer resource utilization and corresponding activated quantities of on-demand computer resources no greater than the maximum weighted measure of on-demand computer resource utilization for this customer computer, that is, no greater than 500.
In view of the these explanations and examples, readers will understand that the benefits of activating on-demand computer resources according to embodiments of the present invention include the ability for customer's system administrators to dynamically increase or decrease the number of activated on-demand processors, the quantity of activated on-demand memory, and quantities of other on-demand resources so long as the overall measure of resources activated remains within the bounds set by a generic enablement code. Activating few processors or deactivating on-demand processors automatically makes available for activation a larger quantity of on-demand memory. Activating less on-demand memory or deactivating on-demand memory automatically makes available more I/O channels. And so on.
For further explanation of the advantages of activating on-demand computer resources according to embodiments of the present invention, consider a exemplary use case. In this example, a customer computer is used during the day to accept and process orders for goods from purchasers. At night, the customer computer is used for batch processing of ledger postings and other calculations in an accounting system. During the day, the computer is I/O bound. At night, it is processor-bound. The quantity of on-demand I/O capacity needed to meet the daytime requirement is 10. The quantity of on-demand I/O capacity needed to meet the nighttime requirement is 10. Under prior art, the customer would need to purchase 20 units of on-demand computer resources because under old art, the customer must buy the maximum needed to meet all peak demands. In activating on-demand computer resources according to embodiments of the present invention, the customer only needs to purchase 10 units of on-demand resource capacity. The customer can then activate 10 on-demand units of I/O capacity during the day, deactivating that capacity at night and replacing it with 10 units of processor capacity. In addition, the customer needs only one generic enablement code to support these activations.
Exemplary embodiments of the present invention are described largely in the context of fully functional computer systems for activating on-demand computer resources. Readers of skill in the art will recognize, however, that the present invention also may be embodied in a computer program product disposed on signal bearing media for use with any suitable data processing system. Such signal bearing media may be transmission media or recordable media for machine-readable information, including magnetic media, optical media, or other suitable media. Examples of recordable media include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and others as will occur to those of skill in the art. Examples of transmission media include telephone networks for voice communications and digital data communications networks such as, for example, Ethernets™ and networks that communicate with the Internet Protocol and the World Wide Web. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product. Persons skilled in the art will recognize immediately that, although most of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present invention without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.