Patent US5940618A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5940618A Expired / Lapsed US ⏱️ 0.0 years remaining

Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments

Assignee: International Business Machines Corp
•
Filing: 1997-09-22
•
Granted: 1999-08-17
•
Expires: 2017-09-22
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention is directed to a system and method for monitoring performance in an information handling system in a minimally intrusive manner. The method of the present invention includes a collection phase, a placement phase, and an instrumentation phase. During the collection phase, a workload (i.e. code segment) is traced, and instruction and data accesses are determined. During the placement phase, the trace data is passed to a cache simulator. The cache simulator uses the trace data, along with hardware and instrumentation characteristics, to determine an optimal placement for instrumentation code and data. If the desired conflict level is not attainable, the best possible placement is found by executing the code to be monitored with a variety of instrumentation code and data placements until the least intrusive placement is found. The best possible placement is then used during the instrumentation phase to actually execute the instrumented code.

Inventors

  • 👤 Geoffrey Owen Blandy
  • 👤 Maher Afif Saba
  • 👤 Robert J. Urquhart

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 14:12
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/30; G06F11/34; G06F11/3457; G06F11/3461; G06F11/3466; G06F11/3471

Claims Analysis

Total Claims: 15
Claim 1
Independent Claim 282 words
A method for dynamically monitoring performance of a code segment executing in an information handling system, said method comprising the steps of: (a) collecting data regarding the code segment to be monitored; (b) selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said selecting step includes the steps of: (c) choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; (d) determining an effect of one or more external factors based on the possible memory placement; (e) if the effect is below a predetermined acceptable level, then setting the final memory placement to the possible memory segment; (f) if the effect is not below the predetermined acceptable level, then determining if there are one or more additional possible memory placements; (g) if there are additional possible memory placements, then repeating steps (c) through (g) until the effect is below the predetermined acceptable level; (h) if there are not additional possible memory placements, then performing the following steps: (i) placing the instrumentation code segments and the instrumentation data segments into one of the possible memory placements determined in step (c); (j) executing the code segment to be monitored; (k) calculating an execution time; (l) repeating steps (i) through (k) for each possible memory placement; (m) setting the final memory placement equal to the possible memory segment which results in a lowest execution time; and (n) executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 2
Independent Claim 282 words
A method for dynamically monitoring performance of a code segment executing in an information handling system, said method comprising the steps of: (a) collecting data regarding the code segment to be monitored; (b) selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said selecting step includes the steps of: (c) choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; (d) determining an effect of one or more external factors based on the possible memory placement; (e) if the effect is below a predetermined acceptable level, then setting the final memory placement to the possible memory segment; (f) if the effect is not below the predetermined acceptable level, then determining if there are one or more additional possible memory placements; (g) if there are additional possible memory placements, then repeating steps (c) through (g) until the effect is below the predetermined acceptable level; (h) if there are not additional possible memory placements, then performing the following steps: (i) placing the instrumentation code segments and the instrumentation data segments into one of the possible memory placements determined in step (c); (j) executing the code segment to be monitored; (k) calculating an execution time; (l) repeating steps (i) through (k) for each possible memory placement; (m) setting the final memory placement equal to the possible memory segment which results in a lowest execution time; and (n) executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 3
Dependent Claim 36 words
A method for dynamically monitoring performance according to claim 1, wherein said collecting step further comprises the steps of: tracing the code segment to be monitored; and storing the data for use during said selecting step.
Claim 4
Dependent Claim 43 words
A method for dynamically monitoring performance according to claim 1, wherein said step of determining an effect of one or more external factors based on the possible memory placement comprises the steps of: analyzing a current cache geometry; and determining a conflict level.
Claim 5
Dependent Claim 20 words
A method for dynamically monitoring performance according to claim 1, wherein said selecting step is performed by a cache simulator.
Claim 6
Dependent Claim 270 words
An information handling system, comprising: one or more processors, each processor containing a cache memory; memory means; one or more images of an operating system for controlling the operation of said processors; at least one system bus connecting the elements of the system for efficient operation; means for collecting data regarding a code segment to be monitored; means for selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said means for selecting includes: means for choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; means for determining an effect of one or more external factors based on the possible memory placement; means for setting the final memory placement to the possible memory placement if the effect is below a predetermined acceptable level; means for determining if there are one or more additional possible memory placements; means for repeatedly choosing the possible memory placement, and for determining the effect of the external factors, until the effect is below the predetermined acceptable level; means for executing the code segment to be monitored, and determining an execution time, for each of the possible memory placements determined by said means for choosing; means for setting the final memory placement equal to the possible memory segment which results in the lowest execution time; and means for executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 7
Dependent Claim 270 words
An information handling system, comprising: one or more processors, each processor containing a cache memory; memory means; one or more images of an operating system for controlling the operation of said processors; at least one system bus connecting the elements of the system for efficient operation; means for collecting data regarding a code segment to be monitored; means for selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said means for selecting includes: means for choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; means for determining an effect of one or more external factors based on the possible memory placement; means for setting the final memory placement to the possible memory placement if the effect is below a predetermined acceptable level; means for determining if there are one or more additional possible memory placements; means for repeatedly choosing the possible memory placement, and for determining the effect of the external factors, until the effect is below the predetermined acceptable level; means for executing the code segment to be monitored, and determining an execution time, for each of the possible memory placements determined by said means for choosing; means for setting the final memory placement equal to the possible memory segment which results in the lowest execution time; and means for executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 8
Dependent Claim 37 words
An information handling system according to claim 5, wherein said means for collecting further comprises: means for tracing the code segment to be monitored; and means for storing the data for use by said means for selecting.
Claim 9
Dependent Claim 42 words
An information handling system according to claim 5, wherein said means for determining an effect of one or more external factors based on the possible memory placement comprises: means for analyzing a current cache geometry; and means for determining a conflict level.
Claim 10
Dependent Claim 17 words
An information handling system according to claim 5, wherein said means for selecting comprises a cache simulator.
Claim 11
Dependent Claim 233 words
A computer program product, in a computer-usable medium, comprising: means for collecting data regarding a code segment to be monitored; means for selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said means for selecting includes; means for choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; means for determining an effect of one or more external factors based on the possible memory placement; means for setting the final memory placement to the possible memory placement if the effect is below a predetermined acceptable level; means for determining if there are one or more additional possible memory placements; means for repeatedly choosing the possible memory placement, and for determining the effect of the external factors, until the effect is below the predetermined acceptable level; means for executing the code segment to be monitored, and determining an execution time, for each of the possible memory placements determined by said means for choosing; means for setting the final memory placement equal to the possible memory segment which results in the lowest execution time; and means for executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 12
Dependent Claim 233 words
A computer program product, in a computer-usable medium, comprising: means for collecting data regarding a code segment to be monitored; means for selecting a final memory placement for one or more instrumentation code segments and one or more instrumentation data segments, wherein the final memory placement includes one or more memory areas in which to place the instrumentation code segments and the instrumentation data segments, and wherein said means for selecting includes; means for choosing a possible memory placement for the instrumentation code segments and the instrumentation data segments; means for determining an effect of one or more external factors based on the possible memory placement; means for setting the final memory placement to the possible memory placement if the effect is below a predetermined acceptable level; means for determining if there are one or more additional possible memory placements; means for repeatedly choosing the possible memory placement, and for determining the effect of the external factors, until the effect is below the predetermined acceptable level; means for executing the code segment to be monitored, and determining an execution time, for each of the possible memory placements determined by said means for choosing; means for setting the final memory placement equal to the possible memory segment which results in the lowest execution time; and means for executing the code segment to be monitored, along with one or more of the instrumentation code segments.
Claim 13
Dependent Claim 37 words
A computer program product according to claim 9, wherein said means for collecting further comprises: means for tracing the code segment to be monitored; and means for storing the data for use by said means for selecting.
Claim 14
Dependent Claim 42 words
A computer program product according to claim 9, wherein said means for determining an effect of one or more external factors based on the possible memory placement comprises: means for analyzing a current cache geometry; and means for determining a conflict level.
Claim 15
Dependent Claim 18 words
A computer program product according to claim 9, wherein said means for selecting comprises a cache simulator program.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-08-16 2003-02-15 2003-08-17 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-08-16 2007-02-15 2007-08-17 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-08-16 2011-02-15 2011-08-17 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag