1. Statement of the Technical Field
The present invention relates to the field of distributed and on-demand computing, and more particularly to application metering in a distributed and on-demand computing environment.
2. Description of the Related Art
Among the many challenges faced by those who manage the capacity and performance of an enterprise system is the characterization of resource consumption by a particular application or workload. The continuing movement towards distributed systems has complicated this activity as there are several methods for collecting transaction data on a single system. For instance, a transaction processing monitor can be configured to capture some form of resource consumption data. Similarly, some database management systems provide facilities for capturing transaction activity within the context of each access request.
Facilities within a particular operating system also may have a built-in notion of what a transaction is and will store or report information related to that transaction. Furthermore, application developers can imbed instrumentation within application code in order to obtain application specific transaction data. Finally, application profilers for a particular operating environment can gather large amounts of data characterizing the behavior of an application hosted within the operating environment. In all cases, however, when applied to the distributed environment, it can be difficult to track transaction-level resource consumption when several elements in a distributed environment contribute towards the completion of a transaction
Traditional resource metering records the usage of a resource and the attributes of the resource-consuming party. In a traditional computing environment, resources are assigned statically, or at fixed, known intervals by an operator. Accounting for usage in the ordinary circumstance, while tedious, was possible. In contrast, in an on-demand environment, on-demand service managers often allocate and remove resources as needed to support a given level of service.
In an on-demand computing environment, resources can be allocated from and returned to shared free pools. Specifically, the resources from the shared free pools can be assigned autonomically to the consuming services as needed to support a given level of service. As such, operators may not immediately become aware of the resource assignments. At best, it remains possible only to determine resource allocation by examining the logs maintained by the autonomic service level managers and provisioning systems.
Conventional resource metering approaches, however, have proven deficient when the consumption of resources must be determined at a finer granularity than resource assignment. For example, if the consumption of CPU cycles must be determined, understanding simply that a processor has been assigned to a consumer is not sufficient. CPU cycle consumption records themselves are also insufficient, as the owner of the CPU resource may not be clearly identified by the CPU cycle consumption records.
Embodiments of the present invention address the deficiencies of the art in respect to application metering and provide a novel and non-obvious method, system and apparatus for metering dynamically provisioned resources. A method for metering dynamically provisioned resources can include capturing resource usage data (or retrieving captured resource usage data) for dynamically provisioned resources, retrieving resource allocation data for the dynamically provisioned resources collected by a resource provisioning system, and correlating the captured resource usage data with the retrieved resource allocation data. In particular, the capturing step can include capturing resource allocation records (or retrieving captured resource allocation records) from provisioning systems driven by associated service level managers.
A system for metering dynamically provisioned resources can include a resource meter and consolidation logic coupled to the resource meter. The consolidation logic can be programmed to capture resource usage data (or retrieving captured resource usage data) for dynamically provisioned resources, to retrieve resource allocation data collected by a communicatively linked resource provisioning system, and correlate the captured resource usage data with the retrieved resource allocation data. The system further can include an accounting system configured to receive correlated captured resource usage data and retrieved resource allocation data.
Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:
Embodiments of the present invention provide a method, system and apparatus for metering dynamically provisioned resources. In accordance with an embodiment of the present invention, resource metrics can be consolidated with resource provisioning records provided by a resource provisioning manager to produce a composite set of records of the consumption of resources of particular resource consumers. Specifically, the resource provisioning manager can store resource ownership data separately from the collection of resource usage data provided to a resource meter. A consolidation process can scan the resource ownership data to match the resource ownership data with the resource usage data to provide a consolidated, granular view of the resource metrics among dynamically provisioned resources.
In further illustration,
One or more client computing processes 110 can be communicatively coupled to the resource provisioning manager 140 over a data communications network 120. In this regard, the client computing processes 110 can be arranged in a client-server fashion in respect to the provisionable computing resources 130, or the client computing processes 110 can be partially hosted within other servers (not shown). Notably, the distributed system can be an on-demand environment in which the dynamically provisionable resources 130 can be allocated and de-allocated on-demand as required by the client computing processes 110. Specifically, the provisionable computing resources 130 can be grouped together into a free pool 180 for use by the client computing processes 110. For example, the communicatively coupled client computing processes 110 can be Web applications requiring the use of Web application servers which can be viewed as the resources 130.
The resource provisioning manager 140 can determine when to allocate the resources 130 in the free pool 180 to requesting ones of the client computing processes 110. Consequently, the resource provisioning manager 140 can record the ownership of assigned ones of the dynamically provisionable resources 130 in a data store of resource ownership 150. By comparison, resource usage data 170 for the dynamically provisionable resources 130 can be collected separately from the resource ownership data 150.
In this regard, while the resource provisioning manager 140 can collect the resource ownership data 150, a resource meter 160 can collect the resource usage data 170. Importantly, however, consolidation logic 200 can receive the resource usage data 170 in addition to or on behalf of the resource meter 160. The consolidation logic 200 can access the resource ownership data 150 collected by the resource provisioning manager 140 and can match the resource ownership data 150 with the resource usage data 170 to provide a more granular view of resource usage for the dynamically provisionable resources 130.
In more specific illustration,
In block 220, resource allocation records can be captured from the provisioning systems driven by the service level managers. The resource allocation records indicate when and to whom or what a given resource has been allocated from a free pool, or removed from the free pool. Thus, the resource allocation records from the provisioning system provide a chronological record of resource ownership. Subsequently, the resource allocation records can be passed on to the consolidation component. Finally, in block 230, the resource allocation records can be cross-referenced to the consumption records provided by the resource itself to correctly associate consumption of the resources by consumers at particular times during a desired time frame given that any one resource can have multiple consumers as the resource may have been repeatedly allocated from and returned to the free pool to and from different consumers at different times.
Optionally, the correctly associated resource consumption records can be passed to business support systems or operational support systems. A traditional accounting system for rating, cost allocation or billing is an example of a business support system, whereas a capacity planning system is an example of an operational support system. In the accounting system example, the sum of CPU cycles consumed for a given period by a given consumer might include: 1) all of the cycles reported as used on dedicated CPUs; and 2) the cycles reported as used on CPUs that were temporarily assigned during a period of peak traffic. The sum will not include those cycles consumed by another consumer during periods where the temporary CPUs were re-allocated to that other consumer. Similarly, in the capacity planning system example, future consumer-specific CPU requirements can be inferred from consumption trends established by the observing consumer-specific CPU consumption.
Embodiments of the present invention can be realized in hardware, software, or a combination of hardware and software. An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein.
A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product on a computer usable medium, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods.
It is important to note that while embodiments of the present invention have been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of embodiments of the present invention are capable of being distributed in the form of a computer usable medium of instructions and a variety of forms and that embodiments of the present invention apply equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer usable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer usable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. Significantly, this invention can be embodied in other specific forms without departing from the spirit or essential attributes thereof, and accordingly, reference should be had to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.