Method and apparatus for analyzing communications on different threads
First Claim
Patent Images
1. A method for analyzing a plurality of data packets communicated between a first computational component and at least one second computational component, comprising:
- generating a communications data set including information relating to the plurality of data packets;
sorting the plurality of data packets based on at least one of source and destination to form a plurality of communications data subsets containing data packets indexed by the at least one of source and destination; and
analyzing the data packets in each of the plurality of communications data subsets based at least partially on a timing of at least some of the data packets.
3 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a method and apparatus for measuring transaction response times. The method and apparatus can identify service request sequences corresponding to a transaction and the start and stop times for the transaction. The invention can be applied non-intrusively/non-invasively to the service packets communicated between a source and destination node.
115 Citations
72 Claims
-
1. A method for analyzing a plurality of data packets communicated between a first computational component and at least one second computational component, comprising:
-
generating a communications data set including information relating to the plurality of data packets;
sorting the plurality of data packets based on at least one of source and destination to form a plurality of communications data subsets containing data packets indexed by the at least one of source and destination; and
analyzing the data packets in each of the plurality of communications data subsets based at least partially on a timing of at least some of the data packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
determining a pattern for grouping at least some of said plurality of data packets, wherein said grouping corresponds to an occurrence of said pattern, and wherein said pattern is dependent on an ordering of data packets of said plurality of data packets; and
comparing said communications data set with said pattern for determining whether at least some of the collection of data packets correspond to an occurrence of said pattern.
-
-
3. The method as claimed in claim 2, wherein said generating step comprises:
-
detecting with a detecting device said data packets communicated along a communications line extending between the first and second computational components;
determining, for each of said data packets, a corresponding received time when the data packet is detected; and
recording an identity of each of said data packets and said corresponding received time.
-
-
4. The method as claimed in claim 3, further comprising:
adding to said corresponding received time for a data packet, a transit time corresponding substantially to the time required by a data packet to travel from said detecting device to said first computational component.
-
5. The method as claimed in claim 2, wherein each of a majority of said data packets has at least one of a corresponding node address and a corresponding port number and said communications data set includes for each of said data packets, a corresponding received time when the data packet is detected on said communication line, and said generating step comprises:
-
reading with a detecting device each of said data packets from said communications line;
filtering said data packets, read by said detecting device, based on at least one of node address and port number to form a selected set of data packets; and
recording for each data packet in said selected set of data packets, said corresponding received time.
-
-
6. The method as claimed in claim 2, wherein said data packets correspond to a plurality of threads with each thread corresponding to thread identification information and said comparing step comprises:
sorting said data packets in said communications data set into a plurality of thread data sets wherein the data packets in each thread data set have the same thread identification information.
-
7. The method as claimed in claim 2, wherein said data packets include service request packets and service results packets, each said service request packet corresponds to a service request from the first computational component, and said comparing step comprises:
identifying said service request packets in said data packets using contents of said data packets.
-
8. The method as claimed in claim 2, wherein said data packets of said collection includes service request packets and corresponding service results packets with each of the service request packets and corresponding service results packets corresponding to a service request and said comparing step comprises:
-
identifying said service request packets in said collection using contents of said data packets in said collection;
correlating, each service results packet of said collection of service results packets, with a corresponding one of said service request packets; and
determining a corresponding start and a corresponding stop time for each of the corresponding service requests, the corresponding start time being related to a corresponding service request packet and the corresponding stop time related to a corresponding service results packet.
-
-
9. The method as claimed in claim 8, further comprising:
computing a response time for said grouping using at least some of said start times and said stop times.
-
10. The method as claimed in claim 8, wherein the determining step comprises:
comparing a time interval between the stop of a first data packet of said plurality of data packets and the start of a second data packet of said plurality of data packets with a predetermined value for said time interval to identify a sequence of data packets corresponding to an occurrence of the grouping.
-
11. The method as claimed in claim 2, wherein at least some of said data packets in said collection are service request packets for requesting service from the first computational component, and, said comparing step comprises:
-
first matching a first service request packet in said collection with a representation of a service request packet in a pattern characterization data set;
second matching a second service request packet in said collection with another representation of a service request packet in said pattern characterization data set wherein a time interval between said first and second service request packets is no more than a predetermined value.
-
-
12. The method as claimed in claim 2, wherein said data packets of said collection correspond to a plurality of service requests from the first computational component to the second computational component, said service requests correspond to a plurality of thread data sets, and said comparing step comprises:
-
first matching a first service request corresponding to a first thread with a representation of a service request packet in a pattern characterization data set; and
second matching a second service request corresponding to a second thread with another representation of a service request in said pattern characterization data set, wherein a time interval between said first and second service requests is no more than a predetermined value.
-
-
13. The method as claimed in claim 2, wherein said collection is substantially identical to said plurality of data packets.
-
14. The method as claimed in claim 2, wherein said collection includes said grouping of data packets.
-
15. The method as claimed in claim 2, wherein said grouping and said collection have substantially different data packets of said plurality of data packets.
-
16. An apparatus for analyzing a plurality of data packets communicated between a first computational component and at least one second computational component, comprising:
-
means for generating a communications data set including information relating to the plurality of data packets;
means for sorting the plurality of data packets based on at least one of source and destination to form a plurality of communications data subsets containing data packets indexed by the at least one of source and destination; and
means for analyzing the data packets in each of the plurality of communications data subsets based at least partially on a timing of at least some of the data packets. - View Dependent Claims (17, 18, 19)
means for determining a pattern for grouping at least some of said plurality of data packets, wherein said grouping corresponds to an occurrence of said pattern, wherein said pattern is dependent on an ordering of data packets of said plurality of data packets, and wherein the means for determining is in communication with the means for generating;
means for comparing said communications data set with said pattern for determining whether at least some of the collection of data packets correspond to an occurrence of said pattern, wherein the means for comparing is in communication with the means for determining.
-
-
18. The apparatus as claimed in claim 17, wherein said comparing means comprises means for contrasting said plurality of data packets and the order in which said data packets are received by said generating means against a pattern characterization data set.
-
19. The apparatus as claimed in claim 16, wherein said generating means includes a detecting means for detecting said data packets, said detecting means located on at least a portion of a communications line between said first and second computational components.
-
20. A method for identifying a pattern of communication data packets from a plurality of data packets communicated between a first computational component and at least a second computational component, comprising:
-
generating a communications data set comprising (i) information relating to a plurality of data packets and (ii) a timing for each data packet;
sorting the information based on at least one of source and destination to form a plurality of communications data subsets containing data packets indexed by the at least one of source and destination; and
analyzing the timing of a first data packet and the timing of a second data packet to identify an ordering of said data packets. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
identifying each of said service request packets in said plurality of data packets;
correlating each of said service result packets with the corresponding service request packet for forming a service data subset, wherein said service data subset includes the correlated service request packets and the service result packets; and
sorting said service data subsets by thread to form a plurality of thread data sets with the data packets in said thread data set having the same thread addresses.
-
-
23. The method as claimed in claim 20, wherein a plurality of sequences of the data packets correspond to a plurality of transactions and said analyzing step comprises:
recording each of said sequences of data packets and the number of occurrences of each sequence in a pattern characterization data set.
-
24. The method as claimed in claim 21, further comprising:
-
recording each occurrence of said ordering of data packets and the total number of occurrences thereof in a first communications data set;
selecting a second predetermined value;
comparing said time interval against said second predetermined value to identify a second ordering of said data packets; and
recording each occurrence of said second ordering of data packets and the total number of occurrences thereof in a second communications data set.
-
-
25. The method as claimed in claim 24, further comprising:
selecting a third predetermined value based on a relationship between (i) the number of occurrences of said ordering of data packets and said predetermined value and (ii) the number of occurrences of said second ordering of data packets and said second predetermined value.
-
26. The method as claimed in claim 25, further comprising:
comparing said time interval against said third predetermined value for said time interval to identify a third ordering of said data packets.
-
27. The method as claimed in claim 26, further comprising:
comparing said third ordering against said communications data set to determine whether at least a portion of said plurality of data packets correspond to said third ordering.
-
28. The method as claimed in claim 20, further comprising:
computing a response time for said ordering.
-
29. The method as claimed in claim 20, wherein said analyzing step produces a pattern characterization data set having a representation of a plurality of orderings of data packets and further comprising:
comparing said data packets from said analyzing step with said pattern characterization data set to determine if said data packets are contained in said pattern characterization data set.
-
30. The method as claimed in claim 20, wherein the first data packet corresponds to a first thread and the second data packet corresponds to a second thread.
-
31. An apparatus for identifying a pattern of communication data packets from a plurality of data packets communicated between a first computational component and at least a second computational component, comprising:
-
means for generating a communications data set comprising (i) information relating to a plurality of data packets and (ii) a timing for each data packet;
means for sorting the information based on at least one of source and destination to form a plurality of communications data subsets containing data packets indexed by the at least one of source and destination; and
means for analyzing a timing of a first data packet and a timing of a second data packet to identify an ordering of said data packets, wherein the means for generating is in communication with the means for sorting and the means for comparing. - View Dependent Claims (32, 33)
-
-
34. A system for analyzing a plurality of data packets communicated between a first component and a second component, comprising:
-
a recorder operable to detect the plurality of data packets communicated between the first and second components; and
a monitor coupled to the recorder and operable to;
sort the plurality of data packets based on at least one of a source and a destination to form a plurality of communications data subsets containing data packets indexed by the at least one of the source and the destination; and
analyze the data packets in each of the plurality of communications data subsets based at least partially on a timing of at least some of the data packets. - View Dependent Claims (35, 36, 37)
determining a pattern for grouping at least some of the plurality of data packets, the pattern dependent on an ordering of at least some of the data packets; and
comparing the plurality of data packets with the pattern to determine whether at least some of the data packets correspond to an occurrence of the pattern.
-
-
36. The system of claim 35, wherein the monitor is operable to compare the plurality of data packets with the pattern by comparing the plurality of data packets and an order in which the data packets are received against a pattern characterization data set.
-
37. The system of claim 34, wherein the recorder comprises a probe.
-
38. A system for identifying a pattern of data packets in a plurality of data packets communicated between a first component and at least one second component, comprising:
-
a recorder operable to detect the plurality of data packets communicated between the first and second components; and
a monitor coupled to the recorder and operable to;
sort the plurality of data packets based on at least one of a source and a destination to form a plurality of communications data subsets containing data packets indexed by the at least one of the source and the destination; and
analyze a timing of a first data packet and a timing of a second data packet to identify an ordering of the first and second data packets. - View Dependent Claims (39, 40)
comparing a time interval between the timing of the first and second data packets with a predetermined value; and
comparing the ordering of the data packets with a predetermined order.
-
-
40. The system of claim 38, wherein:
-
the first and second data packets relate to different service request packets, each service request packet corresponding to a service request; and
the monitor compares a time interval between the stop time of a first service request and the start time of a second service request against a predetermined value to identify a sequence of service requests corresponding to a transaction.
-
-
41. A method for analyzing communication between a first component and at least one second component, comprising:
-
receiving a plurality of data packets communicated over a plurality of threads between the first component and at least one second component, the data packets associated with a plurality of service requests;
determining a start time and a stop time for at least some of the service requests associated with at least some of the data packets;
sorting the service requests into a plurality of thread data subsets based on the thread over which the data packets associated with the service requests were communicated; and
analyzing the service requests in each of the thread data subsets. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49)
receiving a first of the data packets;
determining that the first data packet comprises a service request packet;
examining at least one second data packet to identify a service completion packet; and
recording a receive time of the first data packet and a receive time of the second data packet, the receive time of the first data packet comprising the start time of the service request associated with the first data packet, the receive time of the second data packet comprising the stop time of the service request associated with the first data packet.
-
-
44. The method of claim 41, further comprising sorting the service requests in each thread data subset by at least one of the start time and the stop time.
-
45. The method of claim 41, wherein analyzing the service requests comprises:
-
determining a time interval between the stop time of a first service request and the start time of a second service request, the first and second service requests associated with a common thread data subset;
comparing the time interval to a predetermined value; and
adding at least one of the first and second service requests to a pattern list when the time interval is less than the predetermined value, the pattern list identifying at least a portion of a service request sequence associated with a transaction.
-
-
46. The method of claim 45, wherein:
-
the time interval comprises a first time interval; and
analyzing the service requests further comprises;
determining a second time interval between the stop time of the first service request and the start time of a third service request, the first and third service requests associated with different thread data subsets;
comparing the second time interval to the predetermined value; and
transferring the pattern list to the thread data subset of the third service request when the second time interval is less than the predetermined value.
-
-
47. The method of claim 46, wherein analyzing the service requests further comprises:
-
comparing the pattern list to one or more identified patterns in a pattern characterization data set when the first and second time intervals exceed the predetermined value;
updating a number of occurrences of one of the identified patterns when the pattern list matches that identified pattern; and
recording the pattern list as a new pattern in the pattern characterization data set when the pattern list does not match the identified patterns in the pattern characterization data.
-
-
48. The method of claim 47, wherein analyzing the service requests in each of the thread data subsets comprises analyzing the service requests in each of the thread data subsets in parallel.
-
49. The method of claim 47, wherein analyzing the service requests further comprises:
-
repeating processing of the service requests using a plurality of additional predetermined values;
using a total number of patterns identified for each of the predetermined values to select an optimal predetermined value; and
repeating processing of the service requests using the optimal predetermined value to generate a second pattern characterization data set comprising an optimal listing of patterns.
-
-
50. A system for analyzing communication between a first component and at least one second component, comprising:
-
at least one recorder operable to detect a plurality of data packets communicated between the first and second components over a plurality of threads; and
a monitor coupled to the at least one recorder and operable to;
receive the plurality of data packets, the data packets associated with a plurality of service requests;
determine a start time and a stop time for at least some of the service requests associated with at least some of the data packets;
sort the service requests into a plurality of thread data subsets based on the thread over which the data packets associated with the service requests were communicated; and
analyze the service requests in each of the thread data subsets. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58)
receiving a first of the data packets;
determining that the first data packet comprises a service request packet;
examining at least one second data packet to identify a service completion packet; and
recording a receive time of the first data packet and a receive time of the second data packet, the receive time of the first data packet comprising the start time of the service request associated with the first data packet, the receive time of the second data packet comprising the stop time of the service request associated with the first data packet.
-
-
53. The system of claim 50, wherein the monitor is further operable to sort the service requests in each thread data subset by at least one of the start time and the stop time.
-
54. The system of claim 50, wherein the monitor is operable to analyze the service requests by:
-
determining a time interval between the stop time of a first service request and the start time of a second service request, the first and second service requests associated with a common thread data subset;
comparing the time interval to a predetermined value; and
adding at least one of the first and second service requests to a pattern list when the time interval is less than the predetermined value, the pattern list identifying at least a portion of a service request sequence associated with a transaction.
-
-
55. The system of claim 54, wherein:
-
the time interval comprises a first time interval; and
the monitor is further operable to analyze the service requests by;
determining a second time interval between the stop time of the first service request and the start time of a third service request, the first and third service requests associated with different thread data subsets;
comparing the second time interval to the predetermined value; and
transferring the pattern list to the thread data subset of the third service request when the second time interval is less than the predetermined value.
-
-
56. The system of claim 55, the monitor is further operable to analyze the service requests by:
-
comparing the pattern list to one or more identified patterns in a pattern characterization data set when the first and second time intervals exceed the predetermined value;
updating a number of occurrences of one of the identified patterns when the pattern list matches that identified pattern; and
recording the pattern list as a new pattern in the pattern characterization data set when the pattern list does not match the identified patterns in the pattern characterization data.
-
-
57. The system of claim 56, wherein the monitor is operable to analyze the service requests in each of the thread data subsets in parallel.
-
58. The system of claim 56, wherein the monitor is further operable to analyze the service requests by:
-
repeating processing of the service requests using a plurality of additional predetermined values;
using a total number of patterns identified for each of the predetermined values to select an optimal predetermined value; and
repeating processing of the service requests using the optimal predetermined value to generate a second pattern characterization data set comprising an optimal listing of patterns.
-
-
59. A method for identifying a pattern in communication between a first component and at least one second component, comprising:
-
receiving a plurality of data packets communicated over a plurality of threads between the first component and at least one second component, the data packets associated with a plurality of service requests;
determining a start time and a stop time for at least some of the service requests associated with at least some of the data packets;
sorting the service requests into a plurality of thread data subsets based on the thread over which the data packets associated with the service requests were communicated; and
analyzing the service requests in each of the thread data subsets to identify one or more transactions involving at least at portion of the service requests. - View Dependent Claims (60, 61, 62, 63, 64, 65)
selecting a first service request in a first thread data subset;
comparing the first service request to an initial service request in each of the transaction patterns;
adding the first service request to a transaction list when the first service request matches the initial service request in at least one transaction pattern; and
discarding the first service request and selecting at least one additional service request in the first thread data subset when the first service request does not match the initial service request in any of the transaction patterns.
-
-
63. The method of claim 62, wherein comparing the service requests in the thread data subsets against the transaction patterns further comprises:
-
selecting a second service request in the first thread data subset when the first service request matches at least one initial service request in at least one transaction pattern;
comparing the second service request to a secondary service request in the at least one transaction pattern; and
adding the second service request to the transaction list when the second service request matches the secondary service request in at least one transaction pattern.
-
-
64. The method of claim 63, wherein comparing the service requests in the thread data subsets against the transaction patterns further comprises:
-
comparing a third service request in a second thread data subset to the secondary service request in the at least one transaction pattern when the second service request does not match the secondary service request in any of the at least one transaction pattern; and
transferring the transaction list to the second thread data subset when the third service request matches the secondary service request in the at least one transaction pattern.
-
-
65. The method of claim 63, wherein comparing the service requests in the thread data subsets against the transaction patterns further comprises:
-
determining whether the secondary service request in the at least one transaction pattern is a final service request in the at least one transaction pattern when the second service request matches the secondary service request in the at least one transaction pattern; and
recording a start time and a stop time associated with the transaction list when the secondary service request in the at least one transaction pattern is the final service request in the at least one transaction pattern.
-
-
66. A system for identifying a pattern in communication between a first component and at least one second component, comprising:
-
at least one recorder operable to detect a plurality of data packets communicated between the first and second components over a plurality of threads; and
a monitor coupled to the at least one recorder and operable to;
receive the plurality of data packets, the data packets associated with a plurality of service requests;
determine a start time and a stop time for at least some of the service requests associated with at least some of the data packets;
sort the service requests into a plurality of thread data subsets based on the thread over which the data packets associated with the service requests were communicated; and
analyze the service requests in each of the thread data subsets to identify one or more transactions involving at least at portion of the service requests. - View Dependent Claims (67, 68, 69, 70, 71, 72)
selecting a first service request in a first thread data subset;
comparing the first service request to an initial service request in each of the transaction patterns;
adding the first service request to a transaction list when the first service request matches the initial service request in at least one transaction pattern; and
discarding the first service request and selecting at least one additional service request in the first thread data subset when the first service request does not match the initial service request in any of the transaction patterns.
-
-
70. The system of claim 69, wherein the monitor is further operable to compare the service requests in the thread data subsets against the transaction patterns by:
-
selecting a second service request in the first thread data subset when the first service request matches at least one initial service request in at least one transaction pattern;
comparing the second service request to a secondary service request in the at least one transaction pattern; and
adding the second service request to the transaction list when the second service request matches the secondary service request in at least one transaction pattern.
-
-
71. The system of claim 70, wherein the monitor is operable to compare the service requests in the thread data subsets against the transaction patterns by:
-
comparing a third service request in a second thread data subset to the secondary service request in the at least one transaction pattern when the second service request does not match the secondary service request in any of the at least one transaction pattern; and
transferring the transaction list to the second thread data subset when the third service request matches the secondary service request in the at least one transaction pattern.
-
-
72. The system of claim 70, wherein the monitor is operable to compare the service requests in the thread data subsets against the transaction patterns by:
-
determining whether the secondary service request in the at least one transaction pattern is a final service request in the at least one transaction pattern when the second service request matches the secondary service request in the at least one transaction pattern; and
recording a start time and a stop time associated with the transaction list when the secondary service request in the at least one transaction pattern is the final service request in the at least one transaction pattern.
-
Specification