IP Library › Granted Patent US 8,799,870
Granted Patent B2
US 8,799,870 · App. 12/377,413 · Granted Aug 5, 2014

Method system and computer program for metering usage of software products based on real-time benchmarking of processing power

Inventors: Scot MacLellan (Rome, IT); Roberto Mulatti (Rome, IT); Antonio Perrone (Rome, IT)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,799,870
App. No.
12/377,413
Granted
Aug 5, 2014
Kind
B2
Abstract

A solution ( 300 ) for metering usage of software products on a data processing system is proposed. In this context, it is often necessary to known a processing power of each computer wherein a generic software product ran (for example, for licensing accounting based on differentiated charging rates). In the proposed solution, the processing power is estimated dynamically on the computer directly. For this purpose, a (single-threaded) benchmark program written in a low-level language is executed ( 308 - 322 ), such as at the startup or periodically. In this way, dividing ( 324 ) the measured execution time of the benchmark program by the known number of its instructions it is possible to determine an execution rate of a single microprocessor of the computer. This value multiplied ( 326 ) by the detected ( 306; 332 ) number of available microprocessors provides an accurate estimate of the processing power of the computer. The desired result is achieved without requiring any knowledge of the physical details of the computer; this is particularly advantageous when the computer consists of a logical guest machine implemented on a physical host machine.

Claims (78)

1. A method comprising:

launching execution of a benchmark program in response to a startup of a system, wherein the benchmark program is non-interruptable;

executing the benchmark program on the system, wherein the benchmark program performs a predetermined number of instructions;

determining an indication of an execution time of the benchmark program;

calculating a processing power of the system based on the execution time and the number of instructions, the processing power being calculated in units of instructions per second;

measuring a running index to determine runtime information indicative of a running of each one of a set of predefined software products on the system;

determining usage of each software product of the set of predefined software products on the system according to the running index and the processing power corresponding to each software product; and

calculating licensing fees for the set of predefined software products on the system based on said usage of each software product;

wherein the processing power corresponding to each software product is the processing power of one or more processors of the system that execute said each software product during the usage.

2. The method according to claim 1 , wherein the determining the indication of the execution time comprises:

recording a starting time of the benchmark program, wherein the starting time of the benchmark program occurs on the system after system bootup before execution of any other application programs;

recording an ending time of the benchmark program; and

calculating the execution time according to the difference between the ending time and the starting time.

3. The method according to claim 1 , wherein a processor time dedicated by a processor of the system to each process completed on the system is recorded, and wherein the determining the indication of the execution time comprises:

setting the execution time according to the processor time of a benchmark process used to execute the benchmark program.

4. The method according to claim 1 , wherein the benchmark program includes a set of instructions in a low-level language; and

wherein the benchmark program is single threaded.

5. The method according to claim 1 , wherein the system includes a number of processors higher than one and the benchmark program is adapted to be executed on a single one of the processors, and wherein the benchmark program is adapted to initially be executed on a single one of the processors and wherein the processors are identical, the method further comprising:

determining the number of processors; and

updating the processing power according to a multiplicative factor based on the number of processors.

6. The method according to claim 5 , further comprising:

detecting a change in the number of processors; and

performing said updating of the processing power in response to the detection of the change.

7. The method according to claim 1 , wherein the system includes a physical host machine implementing a plurality of logical guest machines, and wherein the executing the benchmark program, the determining the indication of the execution time, and the calculating the processing power are carried out on a selected one the guest machines.

8. A computer program product comprising:

a non-transitory computer-usable medium embodying a computer program, wherein the computer program upon being executed on a data processing system causes a system to:

launch execution of a benchmark program in response to a startup of the system, wherein the benchmark program is non-interruptable;

execute the benchmark program on the system, wherein the benchmark program performs a predetermined number of instructions;

determine an indication of an execution time of the benchmark program;

calculate a processing power of the system based on the execution time and the number of instructions, the processing power being calculated in units of instructions per second;

measure a running index to determine runtime information indicative of a running of each one of a set of predefined software products on the system; and

determine usage of each software product of the set of predefined software products on the system according to the running index and the processing power corresponding to each software product;

calculate licensing fees for the set of predefined software products on the system based on said usage of each software product;

wherein the processing power corresponding to each software product is the processing power of one or more processors of the system that execute said each software product during the usage.

9. A system comprising:

a plurality of identical processors;

an agent configured to:

launching execution of a benchmark program in response to a startup of the system, wherein the benchmark program is non-interruptable;

executing the benchmark program on a single one of the plurality of identical processors, wherein the benchmark program:

performs a predetermined number of instructions;

determines an indication of an execution time of the benchmark program; and

calculates a processing power of the system based on the execution time and the number of instructions, the processing power being calculated in units of instructions per second; and

a monitoring program configured to:

measuring a running index to determine runtime information indicative of a running of each one of a set of predefined software products on the system; and

determining usage of each software product of the set of predefined software products on the system according to the running index and the processing power corresponding to each software product; and

calculating licensing fees for the set of predefined software products on the system based on said usage of each software product;

wherein the processing power corresponding to each software product is the processing power of one or more processors of the system that execute said each software product during the usage.

10. The computer program product according to claim 8 , wherein the determining the indication of the execution time comprises:

recording a starting time of the benchmark program, wherein the starting time of the benchmark program occurs on the system after system bootup before execution of any other application programs;

recording an ending time of the benchmark program; and

calculating the execution time according to the difference between the ending time and the starting time.

11. The computer program product according to claim 8 , wherein a processor time dedicated by a processor of the system to each process completed on the system is recorded, and wherein the determining the indication of the execution time comprises:

setting the execution time according to the processor time of a benchmark process used to execute the benchmark program.

12. The computer program product according to claim 8 , wherein the benchmark program includes a set of instructions in a low-level language; and

wherein the benchmark program is single threaded.

13. The system according to claim 9 , wherein the determining the indication of the execution time comprises:

recording a starting time of the benchmark program, wherein the starting time of the benchmark program occurs on the system after system bootup before execution of any other application programs;

recording an ending time of the benchmark program; and

calculating the execution time according to the difference between the ending time and the starting time.

14. The system according to claim 9 , wherein a processor time dedicated by a processor of the system to each process completed on the system is recorded, and wherein the determining the indication of the execution time comprises:

setting the execution time according to the processor time of a benchmark process used to execute the benchmark program.

15. The system according to claim 9 , wherein the benchmark program includes a set of instructions in a low-level language; and

wherein the benchmark program is single threaded.

16. The computer program product according to claim 9 , wherein the system includes a number of processors higher than one and the benchmark program is adapted to be executed on a single one of the processors, and wherein the benchmark program is adapted to initially be executed on a single one of the processors and wherein the processors are identical, wherein the computer program upon being executed on the data processing system causes a system to:

determine the number of processors; and

update the processing power according to a multiplicative factor based on the number of processors.

17. The system according to claim 9 , wherein the benchmark program is adapted to initially be executed on a single one of the processors and wherein the processors are identical, wherein the agent performs activities further comprising:

determining the number of processors; and

updating the processing power according to a multiplicative factor based on the number of processors.

18. The method according to claim 1 , wherein the running index is used in licensing calculations for each one of the set of predefined software products.

19. The computer program product according to claim 8 , wherein the running index is used in licensing calculations for each one of the set of predefined software products.

20. The system according to claim 9 , wherein the running index is used in licensing calculations for each one of the set of predefined software products.

21. The method according to claim 1 , wherein said processing power of the system is calculated by dividing the execution time by the predetermined number of instructions; and

wherein said predetermined number of instructions is an arithmetic operation performed the predetermined number of times.

22. The computer program product according to claim 8 , wherein said processing power of the system is calculated by dividing the execution time by the predetermined number of instructions; and

wherein said predetermined number of instructions is an arithmetic operation performed the predetermined number of times.

23. The system according to claim 9 , wherein said processing power of the system is calculated by dividing the execution time by the predetermined number of instructions; and

wherein said predetermined number of instructions is an arithmetic operation performed the predetermined number of times.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2009
From: MACLELLAN, SCOT; MULATTI, ROBERTO; PERRONE, ANTONIO
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 022527/0627 →
Priority Claims (1)
EP 05112286 · Dec 16, 2005 · regional
Continuity (1)
Related Publication 20100218170A1 · Aug 26, 2010