1. Technical Field
The present invention relates to computer systems having multiple processors in general, and, in particular, to a method for activating processor cores within a computer system.
2. Description of Related Art
Today's computer servers often include multiple processors with each processor having multiple cores. If a customer needs more computing capacity from a computer server, the customer can simply buy (or lease) additional resources. Since those resources, such as processors, are already present within the computer server, the customer can activate the needed resources via a software tool after paying for the resources. One such service offered by International Business Machines Corporation is called the Capacity on Demand service. The Capacity on Demand service allows a user to activate processors and memory units on the user's computer server when the user's workload requires such additional resources. Those resources may be activated either for a specific time period, or permanently. After activation, those resources can be used seamlessly with the user's other resources that have already been activated previously.
Currently, the Capacity on Demand service simply activates processor cores randomly, as they become available within each processor. Thus, the server performance delivered to a user may not be the most optimal. Consequently it would be desirable to provide an improved method for activating processor cores within a computer system having multiple processors.
Performance can be improved when the characteristics of a task to be performed on the additional cores are known, and corresponding processor cores are activated accordingly. In accordance with a preferred embodiment of the present invention, a value representing a number of processor cores to be enabled within a computer system is received. The computer system includes multiple processors, and each of the processors includes multiple processor cores. Next, a scale variable value representing a specific type of tasks to be optimized during an execution of the tasks within the computer system is received. From a pool of available processor cores within the computer system, a subset of processor cores can be selected for activation. The subset of processor cores is activated in order to achieve system optimization during an execution of the tasks.
All features and advantages of the present invention will become apparent in the following detailed written description.
The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
Referring now to the drawings and in particular to
The management of processors 13a-13d, memory devices 15 and storage subsystem 16 may be performed via a software tool known as a hypervisor 11. In addition, hypervisor 11 enables multiple operating systems to share the hardware resources within computer system 10 by allowing each operating system to “think” it has exclusive control of all the hardware resources within computer system 10. Hypervisor 11 allocates resources to each operating system and ensures the operating systems cannot interfere with each other. As part of its resource allocation function, hypervisor 11 can also enable and disable various resources within computer system 10.
Another software tool known as a management console 18 enables a human system manager to configure various system components as appropriate to various tasks computer system 10 is expected to perform. Management console 18 communicates system configuration changes to hypervisor 11 that performs the necessary component activation and deactivation.
If the nature of a task to be performed on computer system 10 is known, computer system 10 can be configured to perform such task better. For example, if a task is processor-intensive, system performance can be improved by allocating the task to the processor cores within a minimum number of processors. This may also leave some processors unused, which can be turned off to save power. On the other hand, if a task requires intensive communication with memory while not processor-intensive, system performance can be improved by allocating the task to processor cores spreading out over a maximum number of processors.
A human system manager can use management console 18 to specify the above-mentioned task requirement to direct hypervisor 11 to enable the appropriate processor cores among processors 13a-13d within computer system 10. The complete allocation can be performed during the boot up period of computer system 10. Once the allocation has been completed, hypervisor 11 saves that configuration in a non-volatile memory (not shown) so computer system 10 will have the correct configuration on subsequent boots until the next configuration change by the human system manager.
With reference now to
Alternatively, instead of obtaining from a user for information such as a desired number of processors cores to be enabled and/or a scale variable related to a desired task optimization, those information can be automatically obtained from a historical database (not shown). The historical database keeps track of the number of processors cores enabled as well as the scale variable for each task that was being optimized in the past.
After the number of processor cores and the scale variable have been defined and entered into management console 18 by the user, management console 18 passes those parameters to a hypervisor, such as hypervisor 11 from
Hypervisor 11, in block 24, determines how many processor cores in which processors to enable by using the following equation:
where n represents the number of processor core to be enabled, S represents a scale variable, m represents the total number of processors within a computer system, and Xn represents a processor number. The notation ┌z┐ refers to the smallest integer equal to or greater than z, i.e., a rounding up of z to the next integer.
As an example, computer system 10 (from
so processor core 1 should be assigned to processor 3.
so processor core 2 should be assigned to processor 3.
so processor core 3 should be assigned to processor 3.
so processor core 4 should be assigned to processor 3.
so processor core 5 should be assigned to processor 3.
so processor core 6 should be assigned to processor 3.
so processor core 7 should be assigned to processor 3.
so processor core 8 should be assigned to processor 3.
so processor core 9 should be assigned to processor 2.
so processor core 10 should be assigned to processor 2.
Hence, eight processor cores are to be activated in processor 3, and two processor cores are to be activated in processor 2. Since a maximum number of processor cores has been packed into as few chips as possible, maximizing performance can be achieved for processor-centric tasks.
Next, consider the same computer system 10, the same need to enable ten processor cores, but optimizing for I/O-centric tasks instead. Now, m=4 and S=1 (i.e., the minimum number). Equation (1) will be used to solve for each of the ten processor cores to be enabled, as follows:
so processor core 1 should be assigned to processor 3.
so processor core 2 should be assigned to processor 2.
so processor core 3 should be assigned to processor 1.
so processor core 4 should be assigned to processor 4.
so processor core 5 should be assigned to processor 3.
so processor core 6 should be assigned to processor 2.
so processor core 7 should be assigned to processor 1.
so processor core 8 should be assigned to processor 4.
so processor core 9 should be assigned to processor 3.
so processor core 10 should be assigned to processor 2.
In this case, two processor cores are activated in processor 1, three processor cores are activated in each of processors 2 and 3, and two processor cores are activated in each of processor 4. Processor cores are spread out among as many processors as possible in order to maximize system performance for I/O-centric tasks.
Next, consider the same computer system 10, the same need to enable ten processor cores, but not optimizing for either type of task, so the user has set S=4. Equation (1) will be used to solve for each of the ten processor cores to be enabled, as follows:
so processor core 1 should be assigned to processor 3.
so processor core 2 should be assigned to processor 3.
so processor core 3 should be assigned to processor 3.
so processor core 4 should be assigned to processor 3.
so processor core 5 should be assigned to processor 2.
so processor core 6 should be assigned to processor 2.
so processor core 7 should be assigned to processor 2.
so processor core 8 should be assigned to processor 2.
so processor core 9 should be assigned to processor 1.
so processor core 10 should be assigned to processor 1.
In this case, two processor cores are activated in processor 1, and four processor cores are activated in each of processors 2 and 3. Processor cores have been allocated in an arrangement in between the two extremes.
Hence, a hypervisor does not need to have special code for each different type of performance optimization a user might require. Instead, using the scale value, number of processor cores to be allocated, and number of processor cores per processor in a computer system, the hypervisor can allocate processor cores appropriate to any optimization within the range. This gives a user the ability to fine tune system performance for a particular task, by comparing performance obtained with various scale value settings and selecting the setting resulting in the best performance.
As has been described, the present invention provides a method of activating processor cores within processor chips to optimize for the types of tasks expected to be performed.
It is also important to note that although the present invention has been described in the context of a fully functional computer system, those skilled in the art will appreciate that the mechanisms of the present invention are capable of being distributed as a program product in a variety of computer-readable device or media such as compact discs and digital video discs.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.