Claims
- 1. A method in a computing system for instrumenting an application program to collect workload data, the application program comprising code installed to execute in a selected tier of an N-tiered computing system, the method comprising:
automatically modifying the code of the application program to capture, during execution of the application program, (a) requests received by the application program, (b) arguments received by the application program for the received requests, (c) responses generated by the application program in response to the received requests, and (d) arguments returned as part of the responses generated by the application program in response to the received request; and installing a recording program for storing the requests, arguments, and responses captured by the modified code in such a manner that the stored requests, arguments, and responses are available after execution of the application concludes.
- 2. The method of claim 1 wherein requests stored by the recording program can be played back the stored requests with their stored arguments.
- 3. The method of claim 2 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the application.
- 4. The method of claim 2 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the N-tiered system.
- 5. The method of claim 1, further comprising performing the modification for each of one or more additional application programs each installed to execute in a different tier of the N-tiered computer system.
- 6. The method of claim 1 wherein the installed recording program performs the storing asynchronously from the execution of the application program.
- 7. The method of claim 1 wherein the installed recording program performs the storing using a thread of execution not used in the execution of the application program.
- 8. The method of claim 1 wherein the installed recording program performs the storing using a processor not used in the execution of the application program.
- 9. The method of claim 1 wherein the code of the application that is automatically modified is source code.
- 10. The method of claim 1 wherein the code of the application that is automatically modified is object code.
- 11. The method of claim 1 wherein the code of the application that is automatically modified is byte code.
- 12. The method of claim 1 wherein the application program is a java language application program, and wherein the code of the application that is automatically modified is java byte code.
- 13. The method of claim 1, further comprising:
computing a first checksum on the code of the application program; and comparing the first checksum to a second checksum computed from a version of the code of the application program known to be compatible with the modifying, and wherein the modifying is performed only if the comparing determines that the first checksum matches the second checksum.
- 14. The method of claim 1 wherein the modifying comprises:
reading one or more code instrumentation specifications; and modifying the code of the application program in accordance with the code instrumentation specifications.
- 15. The method of claim 14, further comprising, before reading the code instrumentation specifications compiling the code instrumentation specifications.
- 16. The method of claim 1 wherein the modifying comprises:
reading a code instrumentation specification that contains both (a) an indication of a code segment to modify and (b) an indication of how to modify the code segment; and identifying a code segment within the code of the application program that matches the indication of a code segment to modify; and modifying the identified code segment in accordance with the indication of how to modify the code segment.
- 17. The method of claim 1, wherein the modifications automatically made to the code of the application program constitute inserting instrumentation code into the code of the application program.
- 18. The method of claim 17 wherein, where the application program executes in an environment that enforces prohibitions against accessing prohibited regions of memory, the instrumentation code inserted into the code of the application program accesses only memory locations outside the prohibited regions of memory.
- 19. The method of claim 17 wherein the instrumentation code inserted into the code of the application program accesses only memory locations outside the stack.
- 20. The method of claim 17 wherein the instrumentation code inserted into the code of the application program accesses only memory locations outside system memory.
- 21. The method of claim 1 wherein the code of the application program includes a call, the call having a calling side and a called side, and wherein the code of the application program is automatically modified on the calling side of the call to capture requests made by executing the call.
- 22. The method of claim 1 wherein the code of the application program includes a call, the call having a calling side and a called side, and wherein the code of the application program is automatically modified on the called side of the call to capture requests made by executing the call.
- 23. A computer-readable medium whose contents cause a computing system to instrument an application program to collect workload data, the application program comprising code installed to execute in a selected tier of an N-tiered computing system, by:
automatically modifying the code of the application program to capture, during execution of the application program, (a) requests received by the application program, (b) arguments received by the application program for the received requests, (c) responses generated by the application program in response to the received requests, and (d) arguments returned as part of the responses generated by the application program in response to the received request; and installing a recording program for storing the requests, arguments, and responses captured by the modified code in such a manner that the stored requests, arguments, and responses are available after execution of the application concludes.
- 24. A method in an N-tiered computing system for instrumenting an application program to collect workload data, the application program installed to execute in a selected tier of the N-tiered computing system, the method comprising:
accessing the N-tiered computing system; and installing on the N-tiered computing system a recording program that, when executed:
registers with the application program to receive notifications from the application program indicating (a) requests received by the application program, (b) arguments received by the application program for the received requests, and (c) responses generated by the application program in response to the received requests; and receives notifications from the application program in accordance with the registration; and in response to each notification received from the application program, stores the requests, arguments, and responses indicated by the received notification in such a manner that the stored requests, arguments, and responses are available after execution of the application concludes.
- 25. The method of claim 24 wherein requests stored by the recording program can be played back with their stored arguments.
- 26. The method of claim 25 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the application.
- 27. The method of claim 25 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the N-tiered system.
- 28. The method of claim 24, wherein the installed recording program also performs the registration for each of one or more additional application programs each installed to execute in a different tier of the N-tiered computer system.
- 29. The method of claim 24 wherein the installed recording program performs both the receiving and the storing asynchronously from the execution of the application program.
- 30. The method of claim 24 wherein the registration comprises calling a notification callback registration function exposed by the application program.
- 31. A method in an N-tiered computing system for instrumenting an application program to collect workload data, the application program installed to execute in a selected tier of the N-tiered computing system, the application receiving requests from other programs and sending responses to other programs, the method comprising:
accessing the N-tiered computing system; and installing on the N-tiered computing system an agent program that:
during execution of the application program, intercepts requests from other programs to the application program in a manner that does not prevent delivery of the requests to the application program; for each intercepted request, stores information describing the request, including the value of one or more arguments contained by the request, in such a manner that the stored information describing the request is available after execution of the application concludes; during execution of the application program, intercepts responses from the application program to other programs in a manner that does not prevent delivery of the responses to the other programs; and for each intercepted response, stores information describing the response, including any return value contained by the request, in such a manner that the stored information describing the response is available after execution of the application concludes.
- 32. The method of claim 31 wherein requests stored by the agent program can be played back the stored requests with their stored arguments.
- 33. The method of claim 32 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the application.
- 34. The method of claim 32 wherein the playback of the stored requests with their stored arguments is semantically correct and substantially preserves the performance accuracy of the N-tiered system.
- 35. The method of claim 31 wherein the installed agent program performs both the receiving and the storing asynchronously from the execution of the application program.
- 36. The method of claim 31 wherein each occurrence of intercepting a request performed by the installed program comprises:
receiving the request before it is received by the application program; and forwarding the request to the application program.
- 37. The method of claim 31 wherein each occurrence of intercepting a request performed by the installed program comprises observing delivery of the request to the application program without interrupting delivery of the request to the application program.
- 38. One or more computer memories collectively containing a code instrumentation specification data structure, comprising:
an indication of a code segment to modify in order add instrumentation functionality; and an indication of how to modify the code segment to modify in order add instrumentation functionality, such that a code segment within the code of an application program may be identified that matches the contained indication of a code segment to modify, and such that the identified code segment may be modified in accordance with the contained indication of how to modify the code segment in order to add instrumentation functionality to the application program.
- 39. The computer memories of claim 38 wherein the indication of how to modify the code segment comprising:
an indication of instrumentation code to insert into the code segment; and an indication of where in the code segment the indicated instrumentation code is to be inserted.
- 40. One or more computer memories collectively containing an instrumentation map data structure for use in adding performance instrumentation to a body of code, the data structure being usable with a selected hash function, the data structure comprising a plurality of entries, each entry corresponding to a feature of the body of code and comprising information useful in adding performance instrumentation to the body of code for the feature to which the entry corresponds,
- 41. The computer memories of claim 40 wherein each entry of the data structure corresponds to a class used in the body of code, and an entry of the data structure can be identified for a particular class by applying the selected hash function to the name of the class.
- 42. The computer memories of claim 41 wherein each entry of the data structure contains information identifying superclasses of the corresponding class, subclasses of the corresponding class, and method signatures for methods of the corresponding class.
- 43. The computer memories of claim 40 wherein each entry of the data structure corresponds to a method used in the body of code, and an entry of the data structure can be identified for a particular method by applying the selected hash function to the fully-qualified signature of the method.
- 44. The computer memories of claim 43 wherein each entry of the data structure contains information identifying classes that implement the corresponding method, arguments of the corresponding method and their classes, methods that call the corresponding method, and methods that are called by the corresponding method.
- 45. The computer memories of claim 40 wherein each entry of the data structure corresponds to an interface used in the body of code, and an entry of the data structure can be identified for a particular method by applying the selected hash function to the name of the interface.
- 46. The computer memories of claim 45 wherein each entry of the data structure contains information identifying superclasses of the corresponding interface, subclasses of the corresponding interface, and method signatures for methods of the corresponding interface.
- 47. A method in a computing system for instrumenting a body of code, comprising, for each of a plurality of particular features of the body of code for which instrumentation is to be added to the body of code:
referencing a feature map data structure in which information useful in adding performance instrumentation to the body of code for each of a plurality of particular features of the body of code is accessible by hashing a name for the feature; and using information obtained by referencing the feature map data structure in adding instrumentation to the body of code for the feature.
- 48. The method of claim 47 wherein information obtained by referencing the feature map data structure is used to add instrumentation to the body of code for classes used in the body of code.
- 49. The method of claim 47 wherein information obtained by referencing the feature map data structure is used to add instrumentation to the body of code for methods used in the body of code.
- 50. The method of claim 47 wherein information obtained by referencing the feature map data structure is used to add instrumentation to the body of code for interfaces used in the body of code.
- 51. A computer-readable medium whose contents cause a computing system to instrument a body of code by, for each of a plurality of particular features of the body of code for which instrumentation is to be added to the body of code:
referencing a feature map data structure in which information useful in adding performance instrumentation to the body of code for each of a plurality of particular features of the body of code is accessible by hashing a name for the feature; and using information obtained by referencing the feature map data structure in adding instrumentation to the body of code for the feature.
- 52. A system for recording workload data, comprising:
an N-tiered computing system running on one or more computer systems, instrumentation installed on one or more tiers of the N-tiered computing system, the instrumentation capturing live workload data including both requests and responses during a recording period; and one or more non-volatile storage devices that collectively store the live workload data captured by the instrumentation in enough fidelity to be used in a replay process that reproduces performance characteristics of the original workload.
- 53. The system of claim 52 wherein the instrumentation is internal instrumentation that intercepts requests and responses via internal interfaces within a particular tier of the N-tiered computing system.
- 54. The system of claim 52 wherein the instrumentation is external instrumentation that obtains requests and responses via external interfaces of the N-tiered computing system.
- 55. The system of claim 52, further comprising a state capture subsystem that captures state of the N-tiered computer system during the recording period, wherein
the state captured by the state capture subsystem is stored by the storage devices.
- 56. The system of claim 55 wherein the state capture subsystem captures dynamic properties of the state of the N-tiered computer system.
- 57. The method of claim 56 wherein the state capture subsystem captures a set of session identifiers corresponding to sessions that are in progress in the N-tiered computer system during the recording period.
- 58. The system of claim 55 wherein the state capture subsystem captures static properties of the state of the N-tiered computer system.
- 59. The system of claim 58 wherein the system further comprises a database,
and wherein the state capture subsystem captures state of the database.
- 60. The system of claim 55 wherein the state capture subsystem captures application state.
- 61. The system of claim 55 wherein the state capture subsystem captures operating system state.
- 62. The system of claim 55 wherein the state capture continues to capture state after the end of the recording period.
- 63. The system of claim 52, further comprising a memory containing Java byte code installed on the N-tiered computer system,
and wherein the instrumentation is installed within the Java byte code.
- 64. The system of claim 52 wherein the workload data captured by the instrumentation and stored by the storage devices includes arguments associated with captured requests.
- 65. The system of claim 64 wherein the workload data captured by the instrumentation and stored by the storage devices includes arguments associated with captured responses.
- 66. The system of claim 52 wherein the instrumentation captures live workload data from an HTTP stream.
- 67. The system of claim 52, further comprising a compression subsystem that compresses the live workload data that is stored on the nonvolatile storage devices.
- 68. The system of claim 67 wherein the compression subsystem employs syntactic compression techniques.
- 69. The system of claim 67 wherein the compression subsystem employs semantic compression techniques.
- 70. The system of claim 52, further comprising a buffer that collects the live workload data captured by the instrumentation and periodically passes the live workload data to non-volatile storage devices for storage.
- 71. The system of claim 52, further comprising an instrumentation control that can be used to enable and disable operation of the instrumentation.
- 72. A method for recording workload data in an N-tiered computing system running on one or more computer systems, comprising:
under control of instrumentation installed on one or more tiers of the N-tiered computing system, capturing live workload data including both requests and responses during a recording period; and storing the live workload data captured by the instrumentation in enough fidelity to be used in a replay process that reproduces performance characteristics of the original workload.
- 73. The method of claim 72, further comprising using the stored live workload data to replay the captured live workload data in a manner that reproduces performance characteristics of the original workload.
- 74. The method of claim 72, further comprising:
capturing state of the N-tiered computer system during the recording period, and storing the captured state.
- 75. The method of claim 72, further comprising compressing the live workload data that is stored.
- 76. The method of claim 75 wherein the compressing is done using syntactic compression techniques.
- 77. The method of claim 75 wherein the compressing is done using semantic compression techniques.
- 78. A computer-readable medium whose contents cause a computing system to record workload data in an N-tiered computing system running on one or more computer systems by:
under control of instrumentation installed on one or more tiers of the N-tiered computing system, capturing live workload data including both requests and responses during a recording period; and storing the live workload data captured by the instrumentation in enough fidelity to be used in a replay process that reproduces performance characteristics of the original workload.
- 79. A method in a computing system for recording information describing the activity in a subject computer system, the subject computer system having performance characteristics including response time, data throughput rate, and processor utilization, the method comprising:
collecting information describing the activity in the subject computer system; and storing the collected information, such that that the collecting and storing reduce the subject computer system's data throughput rate by no more than 5%, and such that that the collecting and storing increase the subject computer system's processor utilization by no more than 15%.
- 80. The method in claim 79 wherein the collected and stored information is a live workload characterization of the activity in the subject computer system.
- 81. A computer-readable medium whose contents cause a computing system to record information describing the activity in a subject computer system, the subject computer system having performance characteristics including response time, data throughput rate, and processor utilization, by:
collecting information describing the activity in the subject computer system; and storing the collected information, such that that the collecting and storing reduce the subject computer system's data throughput rate by no more than 5%, and such that that the collecting and storing increase the subject computer system's processor utilization by no more than 15%.
- 82. A method in an N-tiered computing system for collecting workload data from an application program installed to execute in a selected tier of the N-tiered computing system, the method comprising:
registering with the application program to receive notifications from the application program indicating (a) requests received by the application program, (b) arguments received by the application program for the received requests, and (c) responses generated by the application program in response to the received requests; and receiving notifications from the application program in accordance with the registration; and in response to each notification received from the application program, storing the requests, arguments, and responses indicated by the received notification in such a manner that the stored requests, arguments, and responses are available after execution of the application concludes.
- 83. The method of claim 82, wherein the registration is also performed for each of one or more additional application programs each installed to execute in a different tier of the N-tiered computer system.
- 84. The method of claim 82 wherein both the receiving and the storing are performed asynchronously from the execution of the application program.
- 85. The method of claim 82 wherein the registration comprises calling a notification callback registration function exposed by the application program.
- 86. A computer-readable medium whose contents cause a computing system to collect workload data from an application program installed to execute in a selected tier of the N-tiered computing system, by:
registering with the application program to receive notifications from the application program indicating (a) requests received by the application program, (b) arguments received by the application program for the received requests, and (c) responses generated by the application program in response to the received requests; and receiving notifications from the application program in accordance with the registration; and in response to each notification received from the application program, storing the requests, arguments, and responses indicated by the received notification in such a manner that the stored requests, arguments, and responses are available after execution of the application concludes.
- 87. A method in an N-tiered computing system for collecting workload data from an application program installed to execute in a selected tier of the N-tiered computing system, the application receiving requests from other programs and sending responses to other programs, the method comprising:
during execution of the application program, intercepting requests from other programs to the application program in a manner that does not prevent delivery of the requests to the application program; for each intercepted request, storing information describing the request, including the value of one or more arguments contained by the request, in such a manner that the stored information describing the request is available after execution of the application concludes; during execution of the application program, intercepting responses from the application program to other programs in a manner that does not prevent delivery of the responses to the other programs; and for each intercepted response, storing information describing the response, including any return value contained by the request, in such a manner that the stored information describing the response is available after execution of the application concludes.
- 88. The method of claim 87 wherein both the receiving and the storing are performed asynchronously from the execution of the application program.
- 89. The method of claim 87 wherein each occurrence of intercepting a request comprises:
receiving the request before it is received by the application program; and forwarding the request to the application program.
- 90. The method of claim 87 wherein requests are intercepted from multiple data streams passing between a pair of tiers of the N-tiered system.
- 91. The method of claim 87 wherein requests are intercepted between an application layer of the N-tiered system and a database layer of the N-tiered system.
- 92. The method of claim 87 wherein requests are intercepted between a front-end processing layer of the N-tiered system and an application layer of the N-tiered system.
- 93. A computer-readable medium whose contents cause a computing system to record collect workload data from an application program installed to execute in a selected tier of the N-tiered computing system, the application receiving requests from other programs and sending responses to other programs, by:
during execution of the application program, intercepting requests from other programs to the application program in a manner that does not prevent delivery of the requests to the application program; for each intercepted request, storing information describing the request, including the value of one or more arguments contained by the request, in such a manner that the stored information describing the request is available after execution of the application concludes; during execution of the application program, intercepting responses from the application program to other programs in a manner that does not prevent delivery of the responses to the other programs; and for each intercepted response, storing information describing the response, including any return value contained by the request, in such a manner that the stored information describing the response is available after execution of the application concludes.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/358,989, entitled “REAL-WORKLOAD CAPTURE AND REPLAY TECHNOLOGY FOR ACCURATE LOAD AND PERFORMANCE TESTING,” filed on Feb. 21, 2002 and U.S. Provisional Application No. 60/417,021, entitled “REAL WORKLOAD PERFORMANCE ANALYSIS,” filed on Oct. 7, 2002 and is related to U.S. patent application Ser. No. ______, entitled “WORKLOAD PLAYBACK FOR A SYSTEM FOR PERFORMANCE TESTING OF N-TIERED: COMPUTER SYSTEMS USING RECORDING AND PLAYBACK OF WORKLOADS,” filed concurrently herewith (Attorney Docket No. 360058004US) and U.S. patent application Ser. No. ______, entitled “WORKLOAD POST-PROCESSING AND PARAMETERIZATION FOR A SYSTEM FOR PERFORMANCE TESTING OF N-TIERED COMPUTER SYSTEMS USING RECORDING AND PLAYBACK OF WORKLOADS,” filed concurrently herewith (Attorney Docket No. 360058007US), all four of which applications are incorporated herein by reference in their entirety.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60358989 |
Feb 2002 |
US |
|
60417021 |
Oct 2002 |
US |