System, method, and program for generating transaction profile for measuring and analyzing computer system performance

A system for generating a transaction profile includes a communication status analyzer, a consumed resource quantity analyzer, an analyzer for analyzing an association between a processing group and a process, an analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups, a transaction profile generator, and a transaction profile.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a system for generating a transaction profile in a computer system performance measuring and analyzing system, a method of generating a transaction profile using such a system for generating a transaction profile, and a program for performing such a method of generating a transaction profile.

2. Description of the Related Art

Computer system performance is analyzed by a conventional computer system performance measuring and analyzing system according to the following process (see Japanese laid-open patent publication No. 2003-157185 and “Measurement and analysis of system operation using a hybrid monitoring process”, Information Processing Society Research Report, Mar. 16, 1991, Vol. 91, No. 28 (OS-50), p. 81–87). 1) A measuring probe is embedded in the software of a computer to be measured. 2) A program to be measured is executed. 3) A profile generator analyzes the performance using, as input data, event trace data generated as a result of the program sequence. Details of event trace data are shown inFIG. 1of the accompanying drawings.

The profile generator performs the following two types of tabulating operation using process switching events (events “resume” and “save” inFIG. 1): 1) The difference between a time (e.g., t4 inFIG. 1) when an event “save” occurs and a time (e.g., t1 inFIG. 1) when a corresponding event “resume” occurs is determined to calculate a CPU consumption time for the process run in the time zone (the process “web” in the time zone t1–t4 inFIG. 1), and such CPU consumption times are tabulated. 2) Since communication events (e.g., an event “receive” occurring at time t2 and an event “send” occurring at time t3 in the time zone t1–t4) occurring between an event “save” (e.g., t4 inFIG. 1) and an event “resume” (e.g., t1 inFIG. 1) mean communications that are performed by the process run in the time zone (the process “web” in the time zone t1–t4 inFIG. 1), data sizes for respective communication paths (each uniquely determined by a combination of its own port number, the companion address, and the companion port number) of communications performed by the process are tabulated. These tabulating operations make it possible to obtain figures on consumed resource quantities (CPU consumption times) and figures on communications (transmitted data sizes and received data sizes for respective communication paths) for respective processes.

According to the conventional event tracing analysis, however, in order to obtain transaction information (figures on consumed resource quantities and communications) about transaction processing required for a system performance simulation based on figures tabulated for respective processes, it is necessary to 1) identify processes with respect to the transaction processing and 2) check and tabulate profiles about the processes with respect to the transaction processing.

If a transaction is processed by software components as a plurality of program parts, then in order to perform a simulation on the assumption that the software components are placed in different servers, profiles need to be tabulated for a set of processes (processing group) involved in the processing of the transaction with the software components. To meet such a need, it is necessary to 1) identify processes involved in the processing (i.e., designate names or process numbers of those processes) and 2) determine an association between those processes and processing groups.

The above practice is possible if all computer programs used by a system are self-made products, and software components and execution statuses are recognized. However, if commercially available package software and self-made software are combined into a system, as practiced at present, then it would be difficult and not practical to attain detailed information about components and execution statuses of package software. According to the conventional practice, therefore, it is difficult to make a detailed analysis of loaded locations with respect to each component and only insufficient information is available for optimizing system performance.

SUMMARY OF THE INVENTION

It is an object of the present invention to provide a system for generating a transaction profile in a computer system performance measuring and analyzing system, a method of generating a transaction profile using such a system for generating a transaction profile, and a program for performing such a method of generating a transaction profile, to be able to classify processes involved in transaction processing into processing groups and calculate profiles with respect to the respective processing groups simply by designating a process serving as a starting point of the transaction processing.

According to the present invention, there is provided a system for generating a transaction profile in a computer system performance measuring and analyzing system, from communication event trace data sampled by a measuring probe incorporated in a computer to be measured, using a port number table containing a first Index value as a unique identifier, a port number used for communications of a process by the computer, and a processing group for classifying therein a process involved in transaction processing, comprising a communication status analyzer having means for generating, from the communication event trace data, a table of extracted communication events which contains a second Index value as a unique identifier, a process ID for identifying a process with which the computer has communicated, an own port number as a port number used by the process to send data, a companion address as an address number of a computer which runs a companion process with which the process has communicated, and a companion port number as a port number used by the companion process to receive data, a consumed resource quantity analyzer having means for calculating and holding a period of time from the occurrence of an event “resume” to the occurrence of an immediately succeeding event “save” for each the process, as a CPU consumption quantity, an analyzer for analyzing an association between a processing group and a process, having means for processing the table of extracted communication events to generate a communication relation table containing, as representing an analyzed communication relation, a third Index value as a unique identifier, a first process ID for identifying the process which has sent data, an own port number used by the process identified by the first process ID to send data, a second process ID for identifying a companion process which receives data, and a companion port number used by the process identified by the second process ID to receive data, an analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups, having means for calculating a CPU consumption quantity for each process which is held by the consumed resource quantity analyzer, and a sent data size and a received data size with respect to communications performed from the occurrence of the event “resume” to the occurrence of the event “save” for each process, and holding the set of the sent data size and the received data size and data representing, as identifiers, the own port number and the companion port number for each process, as a consumed resource quantity and a communication quantity for each process, and means for comparing the own port number and the companion port number in the communication relation table with the port number in the port number table, and, if either one of the own port number and the companion port number agrees with the port number in the port number table, holding the consumed resource quantity and communication quantity of a process referred to by the third index value of the own port number or the companion port number in the communication relation table, as the consumed resource quantities and communication quantities of the processing group referred to by the first index value in the port number table, and recording an association between the processing group and the process in a table of processing groups and processes associated therewith, and a transaction profile generator having means for outputting profiles of the CPU consumption quantity, the sent data size, and the received data size tabulated for each process, as transaction profiles tabulated for each processing group.

According to the present invention, there is also provided a program for enabling a computer or a microprocessor to function as the above system for generating a transaction profile.

According to the present invention, there is further provided a method of generating a transaction profile using a system for generating a transaction profile in a computer system performance measuring and analyzing system, from communication event trace data sampled by a measuring probe incorporated in a computer to be measured, using a port number table containing a first Index value as a unique identifier, a port number used for communications of a process by the computer, and a processing group for classifying therein a process involved in transaction processing, the system comprising a communication status analyzer, a consumed resource quantity analyzer, an analyzer for analyzing an association between a processing group and a process, an analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups, and a transaction profile generator, the method comprising the steps of causing the communication status analyzer to generate, from the communication event trace data, a table of extracted communication events which contains a second Index value as a unique identifier, a process ID for identifying a process with which the computer has communicated, an own port number as a port number used by the process to send data, a companion address as an address number of a computer which runs a companion process with which the process has communicated, and a companion port number as a port number used by the companion process to receive data, causing the consumed resource quantity analyzer to calculate and hold a period of time from the occurrence of an event “resume” to the occurrence of an immediately succeeding event “save” for each the process, as a CPU consumption quantity, causing the analyzer for analyzing an association between a processing group and a process to process the table of extracted communication events to generate a communication relation table containing, as representing an analyzed communication relation, a third Index value as a unique identifier, a first process ID for identifying the process which has sent data, an own port number used by the process identified by the first process ID to send data, a second process ID for identifying a companion process which receives data, and a companion port number used by the process identified by the second process ID to receive data, causing the analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups to calculate a CPU consumption quantity for each process which is held by the consumed resource quantity analyzer, and a sent data size and a received data size with respect to communications performed from the occurrence of the event “resume” to the occurrence of the event “save” for each process, and to hold the set of the sent data size and the received data size and data representing, as identifiers, the own port number and the companion port number for each process, as a consumed resource quantity and a communication quantity for each process, and means for comparing the own port number and the companion port number in the communication relation table with the port number in the port number table, and, if either one of the own port number and the companion port number agrees with the port number in the port number table, to hold the consumed resource quantity and communication quantity of a process referred to by the third index value of the own port number or the companion port number in the communication relation table, as the consumed resource quantities and communication quantities of the processing group referred to by the first index value in the port number table, and to record an association between the processing group and the process in a table of processing groups and processes associated therewith, and causing the transaction profile generator to output profiles of the CPU consumption quantity, the sent data size, and the received data size tabulated for each process, as transaction profiles tabulated for each processing group.

In the above method, the step of causing the analyzer for analyzing an association between a processing group and a process to process the table of extracted communication events to generate a communication relation table, comprises the steps of 1) referring to the second index value as a unique identifier in rows of the table of extracted communication events, as i, and setting the value of i in a first row to 1, 2) setting the maximum value of the second index value to N, comparing the second index value i and the second index value N with each other, if the second index value i is smaller than or equal to the second index value N, going to step 3), and if the second index value i is greater than the second index value N, putting the method to an end, 3) referring to the second index value in the table of extracted communication events, as j, and setting the value of j in a first row to 1, 4) setting the maximum value of the second index value to N, comparing the second index value j and the second index value N with each other, if the second index value j is smaller than or equal to the second index value N, going to step 7), and if the second index value j is greater than the second index value N, going to step 5), 5) recording the row i corresponding to the second index value i as an external communication event in the communication relation table, and going to step 6), 6) incrementing the second index value i by 1, and returning to step 2), 7) comparing the own port number in the row i and the companion port number in the row j corresponding to the second index value j with each other, and if the own port number and the companion port number are equal to each other, going to step 9), and if the own port number and the companion port number are not equal to each other, going to step 8), 8) incrementing the second index value j by 1, and returning to step 4), and 9) recording an association between the row i and the row j in the communication relation table, and going to step6).

In the above method, the step of causing the analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups to record an association between the processing group and the process in the table of processing groups and processes associated therewith, comprises the steps of 1) referring to the third index value as a unique identifier in rows of the communication relation table, as i, and setting the value of i in a first row to 1, 2) setting the maximum value of the third index value to N, comparing the third index value i and the third index value N with each other, if the third index value i is smaller than or equal to the third index value N, going to step 3), and if the third index value i is greater than the third index value N, putting the method to an end, 3) determining whether the own port number in the row i corresponding to the third index value i in the communication relation table and the port number in the row j corresponding to the first index value j as a unique identifier in the rows of the port number table agree with each other or not, as looped based on the value of j, and if the own port number and the port number agree with each other, going to step 4), and if the own port number and the port number do not agree with each other, returning to step 2), 4) classifying the first process which has used the own port number in the row i of the communication relation table to send data into the processing group in the row j of the port number table, giving the first process a unique processing group name, 5) determining whether the own port number in the row i of the communication relation table and the port number in the row j of the port number table agree with each other or not, as looped based on the value of j, and if the own port number and the port number agree with each other, going to step 6), and if the own port number and the port number do not agree with each other, returning to step 2), and 6) classifying the second process which has used the companion port number in the row i of the communication relation table to receive data into the processing group in the row j of the port number table, giving the second process a unique processing group name, and returning to step 2).

According to the present invention, there is also provided a program for enabling a computer or a microprocessor to perform the above method of generating a transaction profile.

The present invention offers the following advantages:

The system has the communication status analyzer, the consumed resource quantity analyzer, the analyzer for analyzing an association between a processing group and a process, the analyzer for analyzing consumed resource quantities and communication quantities for respective processing groups, and the transaction profile generator, as described above. The system thus constructed is capable of classifying processes involved in transaction processing into processing groups and calculating profiles with respect to the processing groups, simply by designating a process serving as a starting point of the transaction processing. The reasons for the above advantages are as follows:

For software programs that are required to communicate with other components according to TCP, it is generally the customary practice to disclose TCP port numbers used for such communications, and hence it is easy to know TCP port numbers used for communications between software components. For a single computer to perform communications normally, it is necessary for one component to use one port number exclusively. According to the present invention, a series of components making up one transaction, as being joined through communications, can be classified using TCP port numbers as identifiers. Consequently, simply designating a process serving as a starting point of the transaction processing, processes involved in the transaction processing can be classified into processing groups and profiles can be calculated with respect to the processing groups.

Specifically, a transaction made up of software components as a plurality of program parts is measured, and communication events directed to TCP port numbers (well known port numbers) used for communications between those software components are used to separate and tabulate loads for the software components making up the transaction, thereby generating a profile of the transaction.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

FIG. 2shows in block form system100for generating a transaction profile in a computer system performance measuring and analyzing system. System100generates transaction profile108using port number table102from communication event trace data109sampled by measuring probe101that is incorporated in a computer to be measured. System100comprises communication status analyzer103, consumed resource quantity analyzer104, analyzer105for analyzing an association between a processing group and a process, analyzer106for analyzing consumed resource quantities and communication quantities for respective processing groups, and transaction profile generator107.

Measuring probe101comprises a means having codes for sampling events in a certain area of an operating system (OS) of the computer and a function to record sampled codes. Such a means can be realized by those skilled in the art based on the known technology and the conventional art disclosed in Japanese laid-open patent publication No. 2003-157185 referred to above.

Communication event trace data109are sampled by measuring probe101and comprise, as shown inFIG. 1, Index values201recorded to hold a time sequence of events, times202at which events have actually occurred, event types203, process IDs204which have caused events to occur, port numbers (own port numbers)205used by the computer to be measured for processes to communicate (send), addresses (companion addresses)206of computers which have run companion processes with which the processes have communicated, port numbers (companion port numbers)207used by the companion processes to communicate (receive), and data sizes208which have actually been transmitted. Own port numbers205and companion port numbers207may be represented by any identifiers insofar as they are capable of identifying processes that are run by the computers, and may be according to a communication protocol other than TCP. Companion addresses206may be represented by any identifiers insofar as they are capable of uniquely identifying computers which have run companion processes with which the processes have communicated, and are not limited to IP addresses, but may be identical to the sender's address.

As shown inFIG. 3, port number table102contains Index values601as unique identifiers, port numbers602, and processing groups603.

Communication status analyzer103generates a table of extracted communication events as shown inFIG. 4from event trace data109. The table of extracted communication events contains Index values301as unique identifiers, process IDs302for identifying processes which have communicated, own port numbers303, companion addresses304, and companion port numbers305. Process IDs302, own port numbers303, companion addresses304, and companion port numbers305are extracted from the table shown inFIG. 1, and hence have the same meanings and data attributes as the table shown inFIG. 1.

Consumed resource quantity analyzer104comprises a means for calculating, as a CPU consumption time, a period of time from the occurrence of an event “resume”, as indicated by event types203inFIG. 1, to the occurrence of an immediately succeeding event “save” for each of process IDs204inFIG. 1, and a function to hold the calculated CPU consumption time. In the example shown inFIG. 1, consumed resource quantity analyzer104calculates a period of time from the event “resume” represented by Index=1 to the event “save” represented by Index=4, i.e., the period of time t4–t1, as a CPU consumption time during the process ID=web.

Analyzer105for analyzing an association between a processing group and a process has a function to perform a process shown inFIG. 5on the table of extracted communication events shown inFIG. 4to generate a communication relation table shown inFIG. 6which represents an analyzed communication relation. The communication relation table shown inFIG. 6contains Index values501as unique identifiers, process IDs502for identifying processes which have communicated (sent), port numbers (own port numbers)1503used by processes to communicate (send), port numbers (companion port numbers)2504used by companion processes to communicate (receive), and process IDs2505representative of the processes.

Analyzer106for analyzing consumed resource quantities and communication quantities for respective processing groups has a means for calculating CPU consumption quantities for respective processes that are held by consumed resource quantity analyzer104, and a sent data size and a received data size with respect to communications that have been carried out from the occurrence of an event “resume” to the occurrence of an event “save”, as with the CPU consumption quantities for the respective processes shown inFIG. 1, and holding the set of two data and data representing, as identifiers, an own port number and a companion port number for each process in the communication relation table as consumed resource quantities and communication quantities for each process. Analyzer106also has a function to compare the own port number and the companion port number with port numbers described in the port number table shown inFIG. 3, and, if either the own port number or the companion port number agrees with one of the port numbers in the port number table, to hold the consumed resource quantity and communication quantity of the process referred to by the Index value of the own port number or the companion port number in the communication relation table, as consumed resource quantities and communication quantities of the processing group referred to by the Index value. If own port number1503and port number602agree with each other, then analyzer106regards process DI1502referred to by Index value501at the time as processing group603referred to by Index value601at the time, and records their associated relation in a table of processing groups and processes associated therewith as shown inFIG. 7. Similarly, analyzer106has a function to, if companion port number2504and port number602agree with each other, a set of process ID2505referred to by Index value501at the time and processing group603referred to by Index value601at the time, as an analyzed result in the table shown inFIG. 7.

As shown inFIG. 8, transaction profile generator107has a means for outputting profiles of CPU consumption quantities903, sent data sizes905,906, and received data sizes904,907tabulated for respective processes, as transaction profiles tabulated for respective processing groups, according to a particular format depending on the data structure of the transaction profiles.

A process of outputting an analyzed communication relation, of operation of the system according to the embodiment of the present invention, will be described in detail below with reference toFIGS. 4 and 5.

First, Index values301serving as unique identifiers in the rows of the table of extracted communication events shown inFIG. 4are referred to as i, and the value of i in the first row is set to 1 in step S401shown inFIG. 5. Then, the maximum one of Index values301shown inFIG. 4is set to N, and Index value i and Index value N are compared with each other in step S402. If Index value i is smaller than or equal to Index value N, then control goes to step S403. If Index value i is greater than Index value N, then the process is put to an end. Index values301in the table of extracted communication events shown inFIG. 4are referred to as j, and the value of j for the first row is set to 1 in step S403. Then, the maximum one of Index values301shown inFIG. 4is set to N, and Index value j and Index value N are compared with each other in step S404. If Index value j is smaller than or equal to Index value N, then control goes to step S407. If Index value i is greater than Index value N, then control goes to step S405. In step S405, the row i corresponding to Index value i is regarded as an external communication event and recorded in the communication relation table inFIG. 6, after which control goes to step S406. In step S406, the value of i is incremented by 1, after which control returns to step S402. In step S407, own port number303of the row i and companion port number305of the row j corresponding to Index value j are compared with each other. If own port number303and companion port number305are equal to each other, then control goes to step S409. If own port number303and companion port number305are not equal to each other, then control goes to step S408. Companion port number305of the row i and own port number303of the row j are similarly compared with each other in step S407. In step S408, the value of j is incremented by 1, after which control returns to step S404. In step S409, the association between the row i and the row j is recorded in the communication relation table shown inFIG. 6, after which control goes to step S406.

A process of analyzing an association between a processing group and a process, of operation of the system according to the embodiment of the present invention, will be described in detail below with reference toFIGS. 3,6, and9.

First, Index values501serving as unique identifiers in the rows of the communication relation table shown inFIG. 6are referred to as i, and the value of i in the first row is set to 1 in step S701shown inFIG. 9. Then, the maximum one of Index values501shown inFIG. 6is set to N, and Index value i and Index value N are compared with each other in step S702. If Index value i is smaller than or equal to Index value N, then control goes to step S703. If Index value i is greater than Index value N, then the process is put to an end. In step S703, it is determined whether own port number1503of the row i corresponding to Index value i in the communication relation table shown inFIG. 6and port number602of the row j corresponding to Index value j which is a unique identifier in the port number table shown inFIG. 3agree with each other or not. Step S703is looped based on the value of j. If own port number1503and port number602agree with each other, then control goes to step S704. If own port number1503and port number602do not agree with each other, then control goes back to step S702. In step S704, process ID1502of the row i in the communication relation table shown inFIG. 6is classified into processing group603of the row j in the port number table shown inFIG. 3, giving itself a unique processing group name. Then, it is determined in step S705whether companion port number2504of the row i in the communication relation table shown inFIG. 6and port number602of the row j in the port number table shown inFIG. 3agree with each other or not. Step S705is looped based on the value of j. If companion port number2504and port number602agree with each other, then control goes to step S706. If companion port number2504and port number602do not agree with each other, then control goes back to step S702. In step S706, process ID2505of the row i in the communication relation table shown inFIG. 6is classified into processing group603of the row j in the port number table shown inFIG. 3, giving itself a unique processing group name.

According to the above process, in the example shown inFIG. 7, a process with process ID=web is classified into processing group Cweb, a process with process ID=ap is classified into processing group Cab, and a process with process ID=db is classified into processing group Cdb. Transaction profile generator107totals profiles tabulated for respective processes according to the classified results, and outputs profiles tabulated for respective processing groups as shown inFIG. 8. The above processes according to the embodiment of the present invention reside in that process IDs are classified according to the information of communication events recorded in the event trace data to derive profiles for respective processing groups without the need for being explicitly supplied with an association between process IDs and processing groups from an external source.

A program representing a method of generating a transaction profile according to the embodiment of the present invention enables a computer or a microprocessor to perform the method of generating a transaction profile.

A program representing a system for generating a transaction profile according to the embodiment of the present invention enables a computer or a microprocessor to function as a system for generating a transaction profile.