Configuration management for a shared pool of configurable computing resources

Disclosed aspects manage a shared pool of configurable computing resources. A set of scaling factor data is monitored. The set of scaling factor data is related to a workload on a configuration of the shared pool of configurable computing resources. A set of workload resource data associated with the workload is ascertained. Using the set of scaling factor data and the set of workload resource data, a triggering event is detected. In response to detecting the triggering event, a configuration action (with respect to the configuration of the shared pool of configurable computing resources) is performed.

BACKGROUND

This disclosure relates generally to computer systems and, more particularly, relates to managing a shared pool of configurable computing resources. The amount of data that needs to be managed by enterprises is increasing. Management of a shared pool of configurable computing resources may be desired to be performed as efficiently as possible. As data needing to be managed increases, the need for management efficiency may increase.

SUMMARY

Aspects of the disclosure can monitor a set of scaling factor data and automatically/dynamically resize one or more virtual machines. Virtualization/cloud software may be coupled for maintaining/managing virtual machines on hosts with scaling factors indicating resource requirements for features such as hardware components. Accordingly, a cloud environment configuration/arrangement may be dynamically reconfigured/rearranged. Such configuration actions may occur in an ongoing basis by monitoring scaling factors and by using management/optimization techniques with respect to the scaling factors/resource requirements.

Aspects of the disclosure include managing a shared pool of configurable computing resources. A set of scaling factor data is monitored. The set of scaling factor data is related to a workload on a configuration of the shared pool of configurable computing resources. A set of workload resource data associated with the workload is ascertained. Using the set of scaling factor data and the set of workload resource data, a triggering event is detected. In response to detecting the triggering event, a configuration action (with respect to the configuration of the shared pool of configurable computing resources) is performed.

DETAILED DESCRIPTION

Aspects of the disclosure can monitor a set of scaling factor data and automatically/dynamically resize one or more virtual machines. Virtualization/cloud software may be coupled for maintaining/managing virtual machines on hosts with scaling factors indicating resource requirements for features such as hardware components. Accordingly, a cloud environment configuration/arrangement may be dynamically reconfigured/rearranged (e.g., without utilizing user intervention when reconfiguring/rearranging). Such configuration actions may occur in an ongoing basis by monitoring scaling factors (e.g., in addition to or instead of monitoring memory usage or processor utilization) and by using management/optimization techniques (e.g., avoiding frequent resizes which can burden availability due to rebooting of virtual machines) with respect to the scaling factors/resource requirements.

Cloud management software may use templates/flavors to define a limited set of predefined resource configurations to ease in specifying the size of a virtual machine. It may then be the responsibility of the cloud administrator to work-out a portion of these templates for the various types of workloads to be run-on. Users may be faced with adjusting the values for individual virtual machines based on their own understanding of the workload and scale they intend to run. This can result in the users making decisions in areas they have little experience or in improperly sized virtual machines. As such, neither the cloud administrator nor cloud user may have appropriate information to efficiently manage resource requirements for the virtual machines for a given scale. Disclosed aspects may provide performance or efficiency benefits with respect to this characteristic.

Aspects of the disclosure include a method, system, and computer program product of managing a shared pool of configurable computing resources. A set of scaling factor data (e.g., transactions per day) is monitored. The set of scaling factor data is related to a workload (e.g., an instantiation of one or more images) on a configuration of the shared pool of configurable computing resources. A set of workload resource data associated with the workload is ascertained. Using the set of scaling factor data and the set of workload resource data, a triggering event is detected. In response to detecting the triggering event, a configuration action (with respect to the configuration of the shared pool of configurable computing resources) is performed.

In embodiments, the set of scaling factor data related to the workload is collected. The set of scaling factor data can include at least one of a set of transaction processing scaling factor data, a set of user access scaling factor data, a set of entity storage scaling factor data, a set of product usage scaling factor data, or a set of provider-defined scaling factor data. In embodiments, detecting the triggering event includes identifying that a first value of a parameter of the set of scaling factor data differs (e.g., exceeds a threshold difference) with respect to a second value of the parameter of the set of workload resource data.

In embodiments, the configuration action includes modifying the configuration of the shared pool of configurable computing resources. Modifying the configuration can include changing a configuration of at least one of a set of processing resources, a set of memory resources, a set of disk resources, or a set of virtual machines. Altogether, performance or efficiency benefits when managing a shared pool of configurable computing resources may occur (e.g., speed, flexibility, load balancing, responsiveness, resource usage, productivity). Aspects may save resources such as bandwidth, processing, or memory.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

As shown inFIG. 1, computer system/server110in cloud computing node100is shown in the form of a general-purpose computing device. The components of computer system/server110may include, but are not limited to, one or more processors or processing units120, a system memory130, and a bus122that couples various system components including system memory130to processing unit120.

Computer system/server110typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server110, and it includes both volatile and non-volatile media, removable and non-removable media. An example of removable media is shown inFIG. 1to include a Digital Video Disc (DVD)192.

System memory130can include computer system readable media in the form of volatile or non-volatile memory, such as firmware132. Firmware132provides an interface to the hardware of computer system/server110. System memory130can also include computer system readable media in the form of volatile memory, such as random access memory (RAM)134and/or cache memory136. Computer system/server110may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system140can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus122by one or more data media interfaces. As will be further depicted and described below, memory130may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions described in more detail below.

Program/utility150, having a set (at least one) of program modules152, may be stored in memory130by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules152generally carry out the functions and/or methodologies of embodiments of the invention as described herein.

Computer system/server110may also communicate with one or more external devices190such as a keyboard, a pointing device, a display180, a disk drive, etc.; one or more devices that enable a user to interact with computer system/server110; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server110to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces170. Still yet, computer system/server110can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter160. As depicted, network adapter160communicates with the other components of computer system/server110via bus122. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server110. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, Redundant Array of Independent Disk (RAID) systems, tape drives, data archival storage systems, etc.

Referring now toFIG. 2, illustrative cloud computing environment200is depicted. As shown, cloud computing environment200comprises one or more cloud computing nodes100with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA) or cellular telephone210A, desktop computer210B, laptop computer210C, and/or automobile computer system210N may communicate. Nodes100may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as Private, Community, Public, or Hybrid clouds as described hereinabove, or a combination thereof. This allows cloud computing environment200to offer infrastructure, platforms and/or software as services for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that the types of computing devices210A-N shown inFIG. 2are intended to be illustrative only and that computing nodes100and cloud computing environment200can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser).

Hardware and software layer310includes hardware and software components. Examples of hardware components include mainframes, in one example IBM System z systems; RISC (Reduced Instruction Set Computer) architecture based servers, in one example IBM System p systems; IBM System x systems; IBM BladeCenter systems; storage devices; networks and networking components. Examples of software components include network application server software, in one example IBM WebSphere® application server software; and database software, in one example IBM DB2® database software. IBM, System z, System p, System x, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide.

Virtualization layer320provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.

In one example, management layer330may provide the functions described below. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA. A cloud manager350is representative of a cloud manager (or shared pool manager) as described in more detail below. While the cloud manager350is shown inFIG. 3to reside in the management layer330, cloud manager350can span all of the levels shown inFIG. 3, as discussed below.

Workloads layer340provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics processing; transaction processing; and a configuration action360, which may be used as discussed in more detail below.

FIG. 4is a flowchart illustrating a method400of managing a shared pool of configurable computing resources according to embodiments. The shared pool of configurable computing resources may utilize a shared pool manager (e.g., a controller, a cloud manager) to execute/carry-out processes/tasks. For example, virtual machines in a cloud environment (e.g., public, private, hybrid) can be maintained, managed, configured, reconfigured, arranged, or rearranged utilizing resource requirements (e.g., number of virtual processors, amount of memory, disk space) for the virtual machines based on requirements for the workload and the scale which it is run. The shared pool manager may or may not be included in the shared pool of configurable computing resources. Method400may begin at block401.

In embodiments, a set of scaling factor data related to a workload may be collected at block410. Collection can include gathering current scaling factor values for the workload. Collection may be performed using a pull technique (e.g., retrieving the set of scaling factor data from the workload), a publish-subscription technique (e.g., the workload pushes-out the set of scaling factor data), or the like. An authentication key or credential may be registered/used to authorize collection of the set of scaling factor data (e.g., for the workload to allow/grant access/permission).

In various embodiments, collection of the set of scaling factor data may occur on a polling schedule (e.g., at a frequency of a temporal period at block416) or based on an event (e.g., in response to a usage event at block418). To illustrate, in response to collecting the set of scaling factor data related to the workload, an operation may wait for a temporal period (e.g., 0 minutes, 10 minutes, 24 hours). In response to waiting for the temporal period, the set of scaling factor data related to the workload may be collected (again). Implementing a collection frequency, as such, can deter configuration modifications for short-lived changes in the set of scaling factor data, scaling factors, scaling factor values, or the like. Similarly, collection may occur in response to a usage event related to the workload such as a usage change exceeding a threshold with respect to the set of scaling factor data, scaling factors, scaling factor values, or the like (e.g., transaction processing by the workload decreases by 35%, number of users accessing the workload increases by 15%).

At block420, a set of scaling factor data is monitored. For instance, monitoring can include querying (e.g., asking a question), searching (e.g., exploring for a reason), obtaining (e.g., recording a collection), probing (e.g., checking a property), scanning (e.g., reviewing a sample), or tracking (e.g., following a characteristic). To illustrate, the set of scaling factor data (e.g., which influences resource requirements) can include the number of transactions being processed, the number of users accessing the system, the number of entities being stored, etc. In embodiments, the set of scaling factor data can include a set of transaction processing scaling factor data421(e.g., number of transactions), a set of user access scaling factor data422(e.g., number of users), a set of entity storage scaling factor data423(e.g., number of objects for storage), a set of product usage scaling factor data424(e.g., number of entities being accessed/managed), or a set of provider-defined scaling factor data425(e.g., target scaling goals for the workload). For example, the set of transaction processing scaling factor data421may include 500 total transactions, 400 transactions per day, or twelve-hours of transactions. For instance, the set of user access scaling factor data422may include 100 total users, 45 current/active users, or 16 user-groups. Other possibilities related to the set of scaling factor data are considered and contemplated.

The set of scaling factor data is related to a workload on a configuration of the shared pool of configurable computing resources. Accordingly, the set of scaling factor data may indicate historical, current/actual, or expected/predicted asset/resource usage for the workload. The workload may include an instantiation of one or more images (e.g., a type/version of software configured to run) at block427. The workload can include an active workload (e.g., a running workload, an available workload, an online workload) at block428. As such, the set of scaling factor data may be collected/monitored with respect to the workload in a dynamic manner (e.g., in real-time while the workload is processing/operating). In embodiments, the configuration includes at least one of a configuration/arrangement of a set of processing resources at block431(e.g., 5 type A processors), a configuration/arrangement of a set of memory resources at block432(e.g., 2 gigabytes of type D memory), a configuration/arrangement of a set of disk resources at block433(e.g., 8 type H disk drives having 500 total gigabytes of storage), or a configuration/arrangement of a set of virtual machines at block434.

At block440, a set of workload resource data associated with the workload is ascertained. Ascertaining (e.g., finding-out, discovering, identifying) the set of workload resource data associated with the workload can include retrieving the set of workload resource data (e.g., from a registry). The set of workload resource data may include information received from a workload provider (e.g., company who designed software to execute such workloads). For example, applications/virtual appliance vendors may provide the set of workload resource data (e.g., information in the form of documentation or sizing tools) to be used with respect to resource requirements given some set of scaling factor values. In various embodiments, the set of workload resource data may indicate or map-to one or more configurations (e.g., based on one or more parameters/inputs/scaling factors). For example, the registry may store mappings of ranges to requirements (e.g., 1-500 transactions maps to 1 processor and 4 gigabytes of memory, 501-1000 transactions maps to 2 processors and 8 gigabytes of memory).

In certain embodiments, the set of workload data may be included/stored in a registry (e.g., a database, as part of the shared pool of configurable computing resources). For example, the registry can provide a programmatic interface for a supplier to register workload identifiers and supply their resource requirements based on scaling factors. Also, the registry can include the set of scaling factor data for a given workload and compute the resource requirements for the given workload. The registry may include a public registry (e.g., a publicly available database of templates/flavors defining one or more resource configurations), a nonpublic registry (e.g., a privately held database of templates/flavors defining one or more resource configurations), or a hybrid (e.g., combination of public/nonpublic).

At block460, a triggering event is detected using the set of scaling factor data and the set of workload resource data. In general, the triggering event may occur when scaling factors change. For example, the set of scaling factor data and the set of workload resource data may be compared. If the resource requirements have changed from previous resource requirements, the triggering event may occur (and be detected). For example, scaling factor values may have initially had 200 transactions per hour with 15 users having access. Such values may be associated with 2 type B processors and 1 gigabyte of type F memory. In running the workload, 400 transactions may be being carried-out per hour with 30 users actually accessing. Under those circumstances, typically 4 type B processors and 1.5 gigabytes of type E may would be called-for. As such, the triggering event may be detected.

In embodiments, detecting the triggering event (using the set of scaling factor data and the set of workload resource data) includes identifying that a first value of a parameter of the set of scaling factor data differs with respect to a second value of the parameter of the set of workload resource data at block465. For example, 400 transactions per hour (e.g., actual/current value) in the set of scaling factor data differs from 200 transactions per hour (e.g., initial/expected value) in the set of workload resource data. In various embodiments, by comparing the first value with the second value and using a threshold difference value, it may be computed that the threshold difference value is exceeded at block466. For instance, the threshold difference value may be 100 transactions per hour. Since the first and second values differ by 200 transactions per hour (400−200=200), the threshold difference is exceeded. In certain embodiments, detecting the triggering event (using the set of scaling factor data and the set of workload resource data) includes identifying a trend in the set of scaling factor data at block469. To illustrate, over time the amount of memory being used increases on an hour-over-hour basis. Thus, the trend of increasing memory can fulfill the triggering event (e.g., indicating potential appropriateness of a configuration action).

At block480, a configuration action is performed. The configuration action occurs with respect to the configuration of the shared pool of configurable computing resources. The configuration action is performed in response to detecting the triggering event. In embodiments, the configuration action includes modifying the configuration of the shared pool of configurable computing resources at block481. The configuration may be (dynamically) computed to resolve a flavor which specifies a size of a virtual machine for a type of workload and scale intended to be run/executed/processed. Accordingly, the configuration can be modified to process the workload (e.g., using one or more resized virtual machines). In certain embodiments, the configuration may be determined by resolving a set of resource attributes which indicates the configuration. Resolving the set of resource attributes can include determining/computing processing, memory, or disk types/features. For instance, various algorithms may be utilized which account for the set of scaling factor data. For certain workloads, a particular resource attribute such as memory may be prioritized with respect to another such processing power. For example, the set of resource attributes may be pulled from the registry to formulate an appropriate configuration.

For example, for a virtual machine resize operation, the shared pool manager may associate a virtual machine image (e.g., using the set of scaling factor data and other workload properties) with a workload identifier indicated in the set of workload data. The workload identifier can be associated with a configuration template/flavor and specified on the resize interfaces. To illustrate, the set of scaling factor data may include 950 expected transactions per day which can be accessed by 35 users. The set of workload data may indicate that for 900 to 1000 expected transactions per day which can be accessed by 20 to 50 users the appropriate configuration is identified as the flavor “2P-8M” which includes two processors and eight gigabytes of memory. In various embodiments, a workload estimator tool may be utilized which can define resource requirements or partition configurations.

In certain embodiments, a workload identifier is coupled with a configuration flavor (e.g., to form a couplet in a data store). The workload identifier can include a unique name, numeric, or other identifier for the workload within the shared pool or more globally. The configuration flavor can include an arrangement, organization, design, feature, component, or other aspect of one or more resources. The workload identifier and the configuration flavor may be coupled/connected/linked for efficiency in processing the determination of the configuration to be used. For example, certain couplets may be predetermined or computed in advance (e.g., the workload provided may have selected a configuration flavor based on how the workload was designed or for its intended usage). Other couplets may be based on machine learning or historical usage.

In various example embodiments, affinity/anti-affinity properties returned from a registry query for a workload identifier can return rules referencing other workload identifiers. A shared pool manager may use these rules to define its policies and filters in its placement arrangement logic. In certain example embodiments, storage types returned from the registry for a workload identifier can return information such as the required storage attachment technology (e.g. N-Port ID Virtualization (NPIV), Internet Small Computer System Interface (iSCSI)), number of paths to storage for redundancy and throughput, or Input/Output Operations Per Second (IOPS).

In various embodiments, in response to modifying the configuration of the shared pool of configurable computing resources, use of the configuration of the shared pool of configurable computing resources is metered at block483. For example, the configuration may be measured based on factors such as quantity of assets configured, temporal periods of configuration/arrangement, actual usage of assets, available usage of assets, etc. Such factors may correlate to charge-back or cost burdens which can be defined in-advance (e.g., utilizing usage tiers) or scaled with respect to a market-rate. An invoice or bill presenting the usage, rendered services, fee, and other payment terms may be generated based on the metered use at block484. The generated invoice may be provided (e.g., displayed in a dialog box, sent or transferred by e-mail, text message, traditional mail) to the user for notification, acknowledgment, or payment.

In certain embodiments, the configuration action can include a notification at block489. For example, a notification may be provided regarding the configuration of the shared pool of configurable computing resources. In response to providing the notification, components may wait for a temporal period (e.g., 0 seconds, 2 minutes, 1 hours, 2 days). In response to waiting for the temporal period, the configuration of the shared pool of configurable computing resources may be modified.

Method400concludes at block499. Aspects of method400may provide performance or efficiency benefits for managing a shared pool of configurable computing resources. For example, aspects of method400may have positive impacts with respect to resizing one or more virtual machines (e.g., properties, placement arrangement). Altogether, performance or efficiency benefits when managing a shared pool of configurable computing resources may occur (e.g., speed, load balancing, flexibility, responsiveness, resource usage, productivity).

FIG. 5shows an example system500for managing a shared pool of configurable computing resources according to embodiments. In embodiments, method400may be implemented within aspects of the example system500(e.g., within cloud environment550). Components, features, or elements depicted inFIG. 6need not be present, utilized, or located as such in every such similar system, and such components are presented as an illustrative example. Aspects of example system500may be implemented in hardware, software or firmware executable on hardware, or a combination thereof.

The shared pool of configurable computing resources (e.g., cloud environment550) can include (but need not include) a shared pool manager523, a registry521, a resizer529, a monitor525, a collector524, and a virtual machine527having a workload528. One or more virtual machines can cooperate to provide a computing capability (e.g., store data using memory, process data using a processor). Workload provider520, cloud management user526, and cloud management administrator522may also be included in the example system500. Disclosed aspects may associate a workload identifier with a virtual machine image in order to retrieve a set of scaling factor data (e.g., scaling factors and other workload properties) from the registry521(e.g., a workload resource requirements registry). Examples of scaling factors include number of transactions per hour, number of users, number of products, etc. Examples of other properties include affinity/anti-affinity rules and storage types. Of course, example system500could include many other features or other functions known in the art which are not shown inFIG. 5.

Aspects of example system500includes a Scaling Factor Monitor framework which includes the monitor525, the collector524, and the resizer529. The Scaling Factor Monitor framework can prescribe programmable collection interfaces that when implemented, collect a set of scaling factor data (e.g., the current scaling factor values) for the workload528. The collection interfaces could be implemented within one or more components making up the workload528or a separate piece of software that interrogates the workload528to ascertain/determine the set of scaling factor data (e.g., a third-party agent reads statistics which the workload software provides and implements the collection interfaces). The collector524may include an application program or software that implements the collection interfaces. The collector524may register credentials or a collection frequency with the monitor525. The collection frequency can be configured to avoid resizes for temporary or short-lived changes in scaling factors.

The monitor525can retrieve/receive the set of scaling factor data or workload resource data for the workload528by using various interfaces. Using this information and credentials registered by the collector524, the monitor525can periodically (e.g., based on a frequency value) invoke the collection interfaces to the collector524to retrieve/receive the set of scaling factor data (e.g., current scaling factor values) and may use the returned values to invoke a sizing logic to determine if a resize is required or may be beneficial. If so, it invokes the resizer529. The resizer529can implement a set of interfaces that the Scaling Factor Monitor framework defines to initiate resize operations. The resizer529may use cloud management interfaces to perform a resize or send a notification to the cloud management administrator522to perform the resize.

FIG. 5includes an example set of flow operations (some of which may be configured to repeat according to embodiments). At flow operation501, the workload provider520may register a workload identifier, its scaling factors, and resource requirements based on scaling factors. At flow operation502, the cloud management administrator522can registers workload identifier with a flavor. At flow operation503, the cloud management administrator522may register credentials and frequency for the workload identifier with the collector524. At flow operation504, the collector524can register credentials and collection frequency for the workload identifier with monitor525. At flow operation505, the monitor525may get scaling factors for the workload identifier from the registry521.

At flow operation506, the cloud management user526may request to create a virtual machine for a flavor having a specific workload. At flow operation507, the shared pool manager507can retrieve/receive scaling factors for the workload from the registry521. At flow operation508, the shared pool manager523may get values for the scaling factors from the cloud management user526. At flow operation509, the shared pool manager523can retrieve/receive resource requirements from the registry521given the scaling factor values and the workload. At flow operation510, the shared pool manager523may use returned resource requirements in establishing an appropriately sized virtual machine527.

At flow operation511, a frequency may be registered and, using credentials for the workload and scaling factors, the monitor525can request the set of scaling factor data (e.g., scaling factor values) from the collector524for the workload528. At flow operation512, the collector may interface to the workload528in the virtual machine527to get the set of scaling factor data (in embodiments, the collector may be collecting these values on a separate polling schedule or via event-based methods). At flow operation513, the monitor525may request resource requirements from the registry given the set of scaling factor data (e.g., the current scaling factor values). At flow operation514, if the resource requirements have changed from previous resource requirements for the virtual machine527, the monitor525may invoke the resizer529to initiate resizing the virtual machine527. At flow operation515, the resizer529may invoke the shared pool manager523to request the virtual machine527to be resized. At flow operation516, the shared pool manager523can perform the virtual machine resize (or send a notification to the cloud management administrator522to perform the resize).

Aspects of example system500may provide performance or efficiency benefits when managing a shared pool of configurable computing resources. For example, aspects of system600may save resources such as bandwidth, processing, or memory (e.g., properly sized virtual machines). Altogether, a shared pool of configurable computing resources may be managed more efficiently.

In addition to embodiments described above, other embodiments having fewer operational steps, more operational steps, or different operational steps are contemplated. Also, some embodiments may perform some or all of the above operational steps in a different order. The modules are listed and described illustratively according to an embodiment and are not meant to indicate necessity of a particular module or exclusivity of other potential modules (or functions/purposes as applied to a specific module).

Typically, cloud-computing resources are provided to a user on a pay-per-use basis, where users are charged only for the computing resources actually used (e.g., an amount of storage space used by a user or a number of virtualized systems instantiated by the user). A user can access any of the resources that reside in the cloud at any time, and from anywhere across the Internet. In context of the present disclosure, a user may access applications or related data available in the cloud. For example, the nodes used to create a stream computing application may be virtual machines hosted by a cloud service provider. Doing so allows a user to access this information from any computing system attached to a network connected to the cloud (e.g., the Internet).

Embodiments of the present disclosure may also be delivered as part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. These embodiments may include configuring a computer system to perform, and deploying software, hardware, and web services that implement, some or all of the methods described herein. These embodiments may also include analyzing the client's operations, creating recommendations responsive to the analysis, building systems that implement portions of the recommendations, integrating the systems into existing processes and infrastructure, metering use of the systems, allocating expenses to users of the systems, and billing for use of the systems.