Computer resource requirements for commercial and government applications often increase or otherwise fluctuate over time. For instance, a business may experience periods of peak activity that exceed comparable processing or memory requirements of other periods. In another scenario, sales or employee growth may similarly burden existing computing resources with increased requirements. When faced with these increased resource demands, a user would conventionally have to purchase new hardware resources capable of accommodating the elevated computing needs. Such purchase requirements can represent a major, if not preclusive, expenditure for a user, who may have insufficient capital or time to react to rapid growth requirements.
To this end, computing architectures such as the “capacity on demand” design, developed by International Business Machines Corporation, allow customers to effectively “rent” resources such as processors on an as-needed basis. More particularly, a customer may temporarily enable standby processors that are initially dormant within their machine. Where desired, the standby processors are not included in the up front, baseline cost of the machine. As such, for a relatively smaller initial capital investment, a customer may activate and deactivate standby processors as needed for a fee.
Such selective utilization of standby processors provides customers with another layer of customized processor access and optimized usage. Conversely, capacity on demand systems supply system providers with a creative way to satisfy customer performance and cost requirements, while additionally providing an increased revenue source.
Despite the flexibility provided by the capacity on demand applications, the economies associated with standby resources generally remain confined to their host computer. That is, the standby resources are typically constructed integrally with their respective computer. Thus, it is often unfeasible to physically remove and reapportion standby processors as between different computers. As a consequence, a scenario can develop where a user having two computers with standby resources must activate additional standby resources on a first computer to handle an increased workload. At the same time, active standby resources of the second computer may remain underutilized. Such a situation may occur where computers are geographically dispersed and/or are subjected to peak work loads at different times. For instance, a company's computers may operate in different time zones. As such, while the user may theoretically have enough active standby resources between both computers to handle the workload of the computers, the standby resources cannot be practically physically distributed amongst the computers in proportion to their respective workloads to address the work requirement discrepancy.
In such a circumstance, having to activate additional standby resources on the first computer negatively affects production quotas and can be viewed by the customer as frustrating and wasteful. To mitigate expenses, users meticulously plan work allocations as between computers, where possible. However, it is typically very difficult to predict work requirements in most applications. Another effort to limit the activation of additional standby processors includes load balancing. Load balancing involves the transfer of work between computers. Ideally, the workload of an overburdened computer can be redistributed to a computer having underutilized standby resources. However, even where feasible, the electronic transfer of data is time consuming, inconvenient and inefficient. As a consequence, the user is often relegated to activating additional standby resources at the computer experiencing elevated workloads, despite having available active resources at another computer. Consequently, improved mechanisms are needed for addressing varying workloads within capacity on demand systems.