Including Instrumentation And Profiling Patents (Class 717/130)
  • Publication number: 20120102470
    Abstract: Methods, systems, and media for providing determinism in multithreaded programs are provided. In some embodiments, methods for providing determinism in multithreaded programs are provided, the methods comprising: instrumenting a program with: a proxy that: receives inputs to the program; and determines whether a schedule corresponding to a set of input constraints satisfied by the inputs has been memoized; and a replayer that: if it is determined that a schedule corresponding to a set of input constraints satisfied by the inputs has been memoized, processes the inputs by the program according to the schedule.
    Type: Application
    Filed: July 25, 2011
    Publication date: April 26, 2012
    Inventors: Junfeng Yang, Heming Cui, Jingyue Wu
  • Patent number: 8166077
    Abstract: A program product, apparatuses, and methods provide for the collection of profile information for a component of a software program by generating a data structure that maps at least one method to a component. The method includes a name, and the data structure maps the method to the component using at least a portion of the name of the method. A class or pattern may also be mapped to a component. Furthermore, during profiling, a statistic associated with the execution of the method is determined; the data structure is accessed using the name of the method to determine the associated component; and the determined statistic is associated with the determined component. By doing so, method level and class level information can be aggregated to improve profiling, often leading to a clearer picture of which components are contributing to the performance and memory footprint of large scale software programs.
    Type: Grant
    Filed: September 30, 2008
    Date of Patent: April 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Steven Joseph Branda, John Joseph Stecher, Robert E. Wisniewski
  • Patent number: 8166462
    Abstract: A data space profiler may include a graphical user interface (GUI) for sorting, aggregating and displaying profile data associated with runtime events of a profiled software application. This profile data may include costs associated with events as well as extended address elements and other code behavior attributes associated with them. The GUI may include means for selecting a perspective from which cost data is to be presented as well as presentation options for displaying the data. The presentation options may include panning and zooming options, which may determine how the data is sorted and/or aggregated for display. The GUI may also include means for specifying filter criteria, which may be used to determine which data to display. By providing means to alternate the display of profile data according to different perspectives and filtering criteria, the GUI may facilitate identification of performance bottlenecks of the profiled application and the causes thereof.
    Type: Grant
    Filed: September 7, 2006
    Date of Patent: April 24, 2012
    Assignee: Oracle America, Inc.
    Inventors: Nicolai Kosche, Arpana Jayaswal, Martin S. Itzkowitz
  • Patent number: 8166463
    Abstract: A method and computer program product for code coverage utilizing efficient dynamic mutation of logic (EDML) are provided. A source code is read, and instrumentation points are located. Self Modifying Code (SMC) is inserted at the instrumentation points producing instrumented code. Additional functions are inserted in the source code to enable read and/or reset of code coverage statistics. The instrumented code is compiled, and executables are run for a period of time during which zero or more instrumentation points are executed. In response to executing instrumentation points, instructions are executed to record execution of the instrumented code. Instructions of the instrumented code overwrite themselves at certain points so that a next execution of the instrumentation points skips over the instrumented code at the certain points. Code coverage statistics are gathered and recorded. The code coverage statistics are reset to begin another period of time for gathering code coverage statistics.
    Type: Grant
    Filed: September 28, 2007
    Date of Patent: April 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Binny S. Gill, Wendy A. Belluomini
  • Patent number: 8155931
    Abstract: The composition of a data-driven analytics model that includes at least an analytical modeling component that defines analytical relationships between the model parameters using multiple analytical relations. The analytical modeling component uses the analytical relations to identify which of the model parameters are known and which are unknown, and solves for the identified unknown model parameter(s). The analytics modeling component also includes an analytics taxonomy in which the analytical relations are categorized into related analytics categories. Navigation through the analytics taxonomy assists in the composition of an analytics model. The analytics taxonomy may, but need not, be domain specific.
    Type: Grant
    Filed: November 26, 2008
    Date of Patent: April 10, 2012
    Assignee: Microsoft Corporation
    Inventors: Darryl E. Rubin, Vijay Mital, David G. Green
  • Patent number: 8151277
    Abstract: A method and system for dynamic and adaptive deployment of in-process agents to virtual machine based applications which may run on remote hosts is provided. A bootstrap agent is injected into the application, using standardized interfaces provided by virtual machine based systems like SUN MICROSYSTEMS' JAVA system or MICROSOFT's .NET system. The bootstrap agent establishes a network connection to a management server which provides binaries representing in-process agents in bytecode or native code format. The bootstrap agent sends data identifying its runtime environment to the management server, which determines the matching in-process agent binaries for the runtime environment of the connected agent and sends the selected binaries to the bootstrap agent. The bootstrap agent receives the binaries and installs them to its hosting virtual machine, according to their format (bytecode or native code).
    Type: Grant
    Filed: May 14, 2008
    Date of Patent: April 3, 2012
    Assignee: dynaTrace software GmbH
    Inventors: Bernd Greifeneder, Christian Schwarzbauer, Helmut L. Hackl
  • Publication number: 20120079460
    Abstract: Provided is an instrumentation apparatus and method for inserting an instrumentation function into a program. The instrumentation function may be inserted into code that is outside of a loop of a program or a system library function relevant to the program.
    Type: Application
    Filed: June 29, 2011
    Publication date: March 29, 2012
    Inventors: Dae-Hyun CHO, Sun-Ae SEO, Sung-Do MOON
  • Patent number: 8141052
    Abstract: Systems and methods are provided for instrumenting compiled software to include diagnostic information such that an origin of a call to one or more routines may be more easily identified. For example, a system is provided which unassembles or uncompiles software into a more readily identifiable instructional form, which is then searched to identify various calls to various routines of interest. Portions of the identified calls are then modified with diagnostic information that will identify the call. This diagnostic information and the call are then recorded so that the call may be subsequently traced back to its origin when, for example, an error occurs.
    Type: Grant
    Filed: April 2, 2007
    Date of Patent: March 20, 2012
    Assignee: Microsoft Corporation
    Inventor: Brian J. Guarraci
  • Patent number: 8141055
    Abstract: A method for dynamic discovery of code segments in instrumented binary modules is provided. A program comprising code segments is received. Potential code segments are determined, and the program is instrumented at potential code segments for dynamic code discovery. The instrumented program is run. In response to executing the potential code segments, the potential code segments are marked. The marked code segments are stored as confirmed code segments.
    Type: Grant
    Filed: December 31, 2007
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventors: Sergey Cherkasov, Victor L. Havin
  • Patent number: 8141053
    Abstract: Call stack information is sampled. A flag associated with a target thread is set in a memory work area associated with a virtual machine in response to an interrupt. Monitoring for an event takes place during execution of a plurality of threads created by the virtual machine. A determination is made as to whether the flag is set in response to an occurrence of the event. If the flag is set, the virtual machine makes a call out to a profiler which initiates sampling of the call stack information in response to the flag being set.
    Type: Grant
    Filed: January 4, 2008
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventor: Frank Eliot Levine
  • Patent number: 8141054
    Abstract: A method, an information processing system, and a computer readable medium, are used to detect atomic-set serializability violations in an execution of a program. A set of classes associated with a program to be analyzed is identified. The set of classes include a set of fields. At least one subset of fields in the set of fields in the identified classes is selected. A set of code fragments associated with an execution of the program is selected. Data accesses in the selected set of code fragments are observed. It is determined if the selected set of code fragments is serializable for each selected subset of fields.
    Type: Grant
    Filed: August 8, 2007
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventors: Julian T. Dolby, Christian J. Hammer, Frank Tip, Mandana Vaziri-Farahani
  • Patent number: 8141056
    Abstract: Just-in-time dynamic instrumentation of a running software system may be achieved by registering one or more instrumentation probe handlers in an inactive state wherein the probe handlers reside in a memory space associated with the software system but are not instrumented into the software system. The probe handlers may each have one or more probe handler tags representing categories to which the probe handlers have been assigned. Tag query requests are periodically received and processed in order to provide information to a caller about registered probe handlers associated with a probe handler tag specified in the tag query request. A probe handler activation request can be made by specifying a probe handler or a probe handler tag. The request can be processed by placing the specified probe handler, or probe handlers associated with the tag, in an active state. The software system thus becomes dynamically instrumented to execute the probe handler(s) as part of the software system's execution flow.
    Type: Grant
    Filed: April 3, 2008
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventor: Akulavenkatavara Prasadarao
  • Patent number: 8141066
    Abstract: The method, an apparatus, and/or a system of cross-platform architecture for replicating profiling scheme in a computer system are disclosed. In one embodiment, a method for forming profiling information of one computer platform in another computer platform includes generating instrumented code by a code instrumenter using a target platform code. The method further includes generating the profile information that the source platform profiling tools can decipher and utilize using the instrumented code, and generating a profile report by analyzing the generated profile information using the source platform profiling tools in a dynamic binary translator that can be used by the dynamic binary translator (DBT) to generate target platform code. In addition, the method may include translating source platform object code into the target platform code using the DBT.
    Type: Grant
    Filed: December 14, 2007
    Date of Patent: March 20, 2012
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Arijit Chatterjee, Rajesh Kumar Chaurasia
  • Patent number: 8136106
    Abstract: A system includes a processor, a memory, a cache, program software, and a marker management engine. The software includes at least one marker. Each marker is a computer instruction and marks distinct computer code sections in the software. The engine (a) determines whether one of the at least one marker is executed during the execution of the program software, (b) monitors data accesses by the at least one processor to the at least one cache and the main memory, (c) stores at least one of the monitored data accesses in a pre-defined location in the main memory, and (d) optimizes only the computer code section indicated by the determined marker of the program software executed by the at least one processor based on the stored data accesses.
    Type: Grant
    Filed: May 13, 2008
    Date of Patent: March 13, 2012
    Assignee: International Business Machines Corporation
    Inventors: Peter A. Franaszek, Luis Alfonso Lastras Montaño, R. Brett Tremaine
  • Patent number: 8136096
    Abstract: A method finds an error in a computer program. A plurality of execution breakpoints are set in the computer program. A portion of the execution of the computer program is simulated as recorded in the trace data in the reverse order until one a plurality of conditions is met, wherein one of the plurality of conditions is an attempt to execute a machine instruction associated with one of the plurality of execution breakpoints.
    Type: Grant
    Filed: July 23, 2004
    Date of Patent: March 13, 2012
    Assignee: Green Hills Software, Inc.
    Inventors: Michael Lindahl, Andre Yew, Mallory Morgan Green, II, Michael Johnson, Allan Craig Franklin, Daniel O'Dowd, Neil Puthuff
  • Patent number: 8136103
    Abstract: A method for combined static and dynamic compilation of program code to remove delinquent loads can include statically compiling source code into executable code with instrumented sections each being suspected of including a delinquent load, and also into a separate intermediate language representation with annotated portions each corresponding to one of the instrumented sections. The method also can include executing the instrumented sections repeatedly and monitoring cache misses for each execution. Finally, the method can include dynamically recompiling selected ones of the instrumented sections using corresponding ones of the annotated portions of the separate intermediate language representation only after a threshold number of executions of the selected ones of the instrumented sections, each recompilation include a pre-fetch directive at a pre-fetch distances tuned to avoid the delinquent load.
    Type: Grant
    Filed: March 28, 2008
    Date of Patent: March 13, 2012
    Assignee: International Business Machines Corporation
    Inventors: Gheorghe C. Cascaval, Yaoqing Gao, Allan H. Kielstra, Kevin A. Stoodley
  • Patent number: 8136124
    Abstract: A system and method for performance monitoring may use data collected from a hardware event agent comprising a hardware sampling mechanism and/or one or more hardware counters to increment one or more synthesized performance counters by an amount dependent on an expression involving the collected data. Each synthesized performance counter may be configured to count events of a different type and may comprise a machine addressable storage location. The event types may include various memory references or misses, branches, branch mispredictions, or any other event of interest in performance monitoring. The hardware event agent may comprise one or more instruction counters, cycle counters, timers, or other hardware performance counters. One hardware performance counter may be used in a time-multiplexed or data-multiplexed manner to monitor events of multiple event types. The hardware sampling mechanism may return a statistical packet for sampled instructions, which may be examined to determine the event type.
    Type: Grant
    Filed: January 18, 2007
    Date of Patent: March 13, 2012
    Assignee: Oracle America, Inc.
    Inventors: Nicolai Kosche, Kenneth Tracton
  • Patent number: 8132156
    Abstract: Embodiments of the present invention provide a multi-input comparative testing tool. The present invention looks at the internal structure of the software being tested and compares the two pairs of internal structures. In the present invention, the testing tool is capable of receiving multiple program code files or data files as its input. For each program code file, the testing tool generates a collection of problem objects and compares pairs of the problem collections with each other. The present invention may also run on data files having program code. For example, the present invention is capable of testing extensible markup language (XML) files to determine if they validate against a schema. Problem objects that are in both collections are identified and set aside. The remaining problem objects are then marked either as being resolved or new depending in which collection they exist.
    Type: Grant
    Filed: June 14, 2007
    Date of Patent: March 6, 2012
    Assignee: Red Hat, Inc.
    Inventor: David H. Malcolm
  • Patent number: 8132150
    Abstract: A method and computer readable medium for automatic replacement of object classes in a library with custom classes to improve program efficiency. The method begins with static analysis preformed on a program containing a plurality of objects in order to determine type-correctness constraints and to detect unused functionality in one or more of the objects to be replaced. The plurality of objects is instrumented to detect usage patterns of functionality in one or more objects. Customized classes are generated based upon the static analysis and usage patterns detected. Bytecode is rewritten which is used for generating classes. The present invention provides transparency in the replacement of the objects.
    Type: Grant
    Filed: February 20, 2008
    Date of Patent: March 6, 2012
    Assignee: International Business Machines Corporation
    Inventors: Bjorn De Sutter, Julian Dolby, Frank Tip
  • Patent number: 8122438
    Abstract: Computer implemented method, system and computer usable program code for profiling the execution of an application that is both space- and time-efficient and highly accurate. A computer implemented method for profiling the execution of an application includes sampling execution characteristics of the application at a plurality of sampling points to provide samples, and deriving a calling context of the samples. The application is continuously executed between sampling points while additional profiling data is gathered.
    Type: Grant
    Filed: June 18, 2008
    Date of Patent: February 21, 2012
    Assignee: International Business Machines Corporation
    Inventors: Harold Wade Cain, III, Jong-Deok Choi, Mauricio Jose Serrano, Xiaotong Zhuang
  • Patent number: 8122430
    Abstract: A method and computer readable medium for automatic replacement of object classes in a library with custom classes to improve program efficiency. The method begins with static analysis preformed on a program containing a plurality of objects in order to determine type-correctness constraints and to detect unused functionality in one or more of the objects to be replaced. The plurality of objects is instrumented to detect usage patterns of functionality in one or more objects. Customized classes are generated based upon the static analysis and usage patterns detected. Bytecode is rewritten which is used for generating classes. The present invention provides transparency in the replacement of the objects.
    Type: Grant
    Filed: October 29, 2007
    Date of Patent: February 21, 2012
    Assignee: International Business Machines Corporation
    Inventors: Bjorn De Sutter, Julian Dolby, Frank Tip
  • Patent number: 8117601
    Abstract: System(s) and method(s) facilitate testing and manipulating an application internally within a client-server configuration coordinated by a communicator object. A client test-object conveys a test to a server test-object through a remoting channel and over disparate processes, e.g., a test process and designer process. A service in an application developer intermediates communication across a communicator thread and a designer thread. In response to a test, information is received in the client end as a serialized wrapper object. Manipulation is accomplished by deserializing and modifying the received information, and then transmitting the information in a serialized object through the remoting channel across processes, and via the intermediary service component across threads in the designer process. Testing and manipulation can facilitate optimizing an application, improving application's functionality as well as a user experience.
    Type: Grant
    Filed: November 14, 2007
    Date of Patent: February 14, 2012
    Assignee: Microsoft Corporation
    Inventors: David Ernest Owens, II, Jessica Lynn Fosler
  • Patent number: 8117599
    Abstract: A method and system for tracing profiling information using per thread metric variables with reused kernel threads is disclosed. In one embodiment kernel thread level metrics are stored by the operating system kernel. A profiler request metric information for the operating system kernel in response to an event. After the kernel thread level metrics are read by the operating system for a profiler, their values are reset to zero by the operating system kernel. The profiler then applies the metric values to base metric values to appropriate Java threads that are stored in nodes in a tree structure base on the type of event and whether or not the kernel thread has been reused. In another embodiment non-zero values of thread level metrics are entered on a liked list. In response to a request from a profiler, the operating system kernel reads each kernel thread's entry in the linked list and zeros each entry.
    Type: Grant
    Filed: April 29, 2008
    Date of Patent: February 14, 2012
    Assignee: International Business Machines Corporation
    Inventors: Ronald O'Neal Edmark, Frank Eliot Levine, Robert J. Urouhart
  • Patent number: 8112630
    Abstract: A device, system, and method for reporting an execution flow of a program is provided. The system for reporting an execution flow of a program includes a program-providing server that provides a program package having information related a predetermined execution flow, a user device that transmits an execution-flow-reporting message corresponding to a result of measuring and verifying the execution flow integrity of a program package with reference to the information related with execution flow, and an execution-flow-verifying server that limits providing of or execution of a program package by testing the execution-flow-reporting message.
    Type: Grant
    Filed: September 7, 2007
    Date of Patent: February 7, 2012
    Assignee: Samsung Electronics Co., Ltd.
    Inventors: Myung-june Jung, Hyun-jin Choi, Kyung-im Jung
  • Patent number: 8108839
    Abstract: A computer program is traced by associating a trigger with at least one code location, and upon encountering the trigger during execution, selectively enabling trace data collection data at subsequent traceable events. Preferably, collection of trace data is enabled only for procedure instances active (i.e., currently executing or on the call stack) at the time that the trigger is encountered. Preferably, a special environmental flag is set on encountering the trigger, saved in each current stack frame, reset on calling any new procedure, and restored from the stack on return from a procedure. Collection of trace data on a traceable event (such as an explicit trace statement in the code) is conditioned on the state of the special environmental flag.
    Type: Grant
    Filed: November 30, 2006
    Date of Patent: January 31, 2012
    Assignee: International Business Machines Corporation
    Inventor: Timothy Pressler Clark
  • Patent number: 8108841
    Abstract: A method for minimizing total cost of interaction among components of a computer program, each of the components being characterized by at least one implementation property includes steps of: a) carrying out at least a partial run of the program; b) monitoring the at least partial run of the program to measure an amount of interaction between each pair of components; c) determining a cost of interaction between each pair of interacting components; d) determining a choice of implementation properties which minimizes total cost of the at least partial run; and e) assigning that choice of implementation properties to the components for a subsequent at least partial run of the program.
    Type: Grant
    Filed: February 25, 2008
    Date of Patent: January 31, 2012
    Assignee: International Business Machines Corporation
    Inventors: Douglas Neil Kimelman, Vadakkedathu T. Rajan, Tova Roth, Vugranam C. Sreedhar, Mark N. Wegman
  • Publication number: 20120023487
    Abstract: Techniques for monitoring web application performance are provided. A request for a web application is received at an application server. A response pipeline at the application server generates client application code corresponding to the requested web application. The client application code is intercepted in the response pipeline. Instrumentation code is inserted into the intercepted client application code to generate an instrumented client application code. The instrumentation code is configured to be executed when the instrumented client application code is rendered at the client to capture performance information at the client, and is configured to transmit the captured performance information from the client.
    Type: Application
    Filed: July 21, 2010
    Publication date: January 26, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Ilarie Letca, Alexandre Coelho, Venkata Seshu Kumar Kurapati, Rajeev Sudhakar, Daniel Savage, Ashvinkumar Sanghvi, Jin Soon Lim
  • Patent number: 8104023
    Abstract: New code is added to existing object code in order to add new functionality. For example, a call to start a profiler function can be added at the beginning of a Java method and a call to stop the profiler function can be added at the exits of the Java method. A method may have many different exits. To insure that the profiler process is stopped regardless of which exit is performed, the byte code and exception table are modified.
    Type: Grant
    Filed: March 9, 2009
    Date of Patent: January 24, 2012
    Assignee: Computer Associates Think, Inc.
    Inventor: Jeffrey R Cobb
  • Patent number: 8099718
    Abstract: A method and system for whitelisting software components is disclosed. In a first operating environment, runtime information may be collected about a first loaded and executing software component. The collected information may be communicated to a second software component operating in a second operating environment that is isolated from the first operating environment. The collect runtime information may be compared with a validated set of information about the first software component. Other embodiments are described and claimed.
    Type: Grant
    Filed: November 13, 2007
    Date of Patent: January 17, 2012
    Assignee: Intel Corporation
    Inventors: Gayathri Nagabhushan, Ravi Sahita, Hormuzd Khosravi, Satyajit Grover
  • Patent number: 8099719
    Abstract: Various technologies and techniques are disclosed for providing a debugger for programs running under a transactional memory system. When running a particular program using the debugger, the system detects when a conflict occurs on at least one conflictpoint that was set in the particular program. A graphical user interface is provided that displays information related to the detected conflict. The graphical user interface can display transactional state and/or other details independently of a conflict. A conflictpoint can be assigned to one or more regions of source code in one or more transactions in the particular program. A conflictpoint can also be assigned to a particular variable in the particular program. When running the particular program in a debug mode, execution is stopped if a conflict occurs on any of the conflictpoints.
    Type: Grant
    Filed: June 19, 2007
    Date of Patent: January 17, 2012
    Assignee: Microsoft Corporation
    Inventor: Martin Taillefer
  • Publication number: 20120011491
    Abstract: To monitor the execution path of executable code, only non-deterministic jump instructions of the executable code are instrumented by replacing them with respective recording instructions that record the results of executions of the non-deterministic jump instructions and then emulate those executions, thereby providing instrumented code, and the instrumented code is executed. Preferably, the recording instructions are one byte long and invoke an interrupt service routine that does the recording and the emulating. Optionally, selected instructions of the executable code are replaced with trigger instructions for turning the recording on and off. Preferably, after the instrumented code is executed, the addresses of the instrumented instructions and the results of their executions are played back either forward or backward. Optionally, the instrumented code is executed a second time and the results of the executions of the instrumented instructions in the two executions of the instrumented code are compared.
    Type: Application
    Filed: July 6, 2010
    Publication date: January 12, 2012
    Inventor: Adi Eldar
  • Patent number: 8095917
    Abstract: Various technologies and techniques are disclosed for testing intermediate language operations. A debugger harness is provided that instruments an intermediate language stream to replace intermediate language operations with equivalent virtual intermediate language operations. A particular intermediate language operation is intercepted from the intermediate language stream and the equivalent virtual intermediate language operation is determined. The virtual machine runs under a debugger harness so that one or more managed applications are executed using the equivalent virtual intermediate language operations. This allows a functionality of the debugger to be tested.
    Type: Grant
    Filed: June 4, 2007
    Date of Patent: January 10, 2012
    Assignee: Microsoft Corporation
    Inventor: Jonathon Michael Stall
  • Patent number: 8090989
    Abstract: The present invention relates to debugging of computer programs, and in particular to bi-directional debugging.
    Type: Grant
    Filed: October 11, 2006
    Date of Patent: January 3, 2012
    Inventors: Gregory Edward Warwick Law, Julian Philip Smith
  • Patent number: 8087005
    Abstract: A testing tool allowing convenient testing of programs and also classes in general. The tool automatically divides each program into many groups such that if one line (or statement) is executed it may reasonably be assumed that all the lines in the group are also executed. A tester is provided the ability to provide desired arguments (including class instances) and cause all groups to be executed such that all lines of code in the programs of a class are executed at least once. The groups are conveniently further logically combined into hierarchical blocks, with each block at a higher level corresponding to a logical structure such as if structure, for structure, while structure, etc. The blocks at the lowest level may contain a single group. Due to such hierarchy, a tester may visually easily identify the unexecuted blocks/groups. The tester may further define and execute small pieces of code (macros) in the middle of testing.
    Type: Grant
    Filed: October 22, 2007
    Date of Patent: December 27, 2011
    Assignee: International Business Machines Corporation
    Inventors: Kallol Pal, Sanjeev K. Chaudhary, Vinay Kumar Kolar
  • Patent number: 8087006
    Abstract: Technologies for estimating deviations in the performance characteristics of a newer version of software relative to an older version. Such performance characteristics include cache misses, pages faults, and the like. Estimations are typically made by instrumenting and profiling an older version binary, determining differences in code blocks between the older and a newer version, propagating profile data from the older version to the newer version based on a simulation heuristic, and estimating performance deviations based on the older version, the profile data, configuration parameters, and the changes in the newer version without actually executing the newer version of the binary.
    Type: Grant
    Filed: May 31, 2007
    Date of Patent: December 27, 2011
    Assignee: Microsoft Corporation
    Inventors: Perraju Bendapudi, Phani Kishore Talluri, Rajesh Jalan
  • Publication number: 20110314453
    Abstract: A method of real-time profiling a software application running on heterogeneous parallel computing resources is provided.
    Type: Application
    Filed: June 21, 2010
    Publication date: December 22, 2011
    Applicant: GRAPHIC REMEDY LTD.
    Inventors: Yaki TEBEKA, Avi SHAPIRA, Uri SHOMRONI, Sigal ALGRANATY
  • Patent number: 8082541
    Abstract: A method for managing multiple hardware test module versions, software components, and tester operating system (TOS) versions in a modular test system is disclosed. The method includes installing the TOS versions compatible with the modular test system in an archive and installing vendor software components corresponding to the hardware test module versions in the archive. The method further includes creating system profiles for describing vendor software components corresponding to the hardware test module versions and the TOS versions, selecting a system profile for the modular test system, where the system profile includes a set of compatible vendor software components and a selected TOS for testing a particular hardware test module version, and activating the selected TOS on the modular test system.
    Type: Grant
    Filed: April 5, 2005
    Date of Patent: December 20, 2011
    Assignee: Advantest Corporation
    Inventors: Ankan Pramanick, Jim Hanrahan, Mark Elston, Toshiaki Adachi, Leon L. Chen
  • Patent number: 8079020
    Abstract: This paper describes preferential path profiling, which enables profiling a specified subset of all possible program paths with very low overhead. Preferential path profiling compactly identifies paths of interest using an array. More specifically, PPP assigns a unique and compact path index identifier to all interesting paths that can be used to index into a path array. The path array contains a second path value identifier that is used to distinguish interesting paths from other program paths This path numbering allows the implementation of preferential path profiling to use array-based counters instead of hash table-based counters for identifying paths of interest and gathering path profiles, which significantly reduces execution time and computational resource overhead during profiling.
    Type: Grant
    Filed: March 5, 2007
    Date of Patent: December 13, 2011
    Assignee: Microsoft Corporation
    Inventors: Trishul Amit Madhukar Chilimbi, Kapil Vaswani, Aditya Vithal Nori
  • Publication number: 20110302560
    Abstract: An apparatus comprising a first core of a multi-core processor, a second core of a multi-core processor and a bus matrix. The first core may be configured to communicate through a first input/output port. The first core may also be configured to initiate a testing application. The second core may be configured to communicate through a second input/output port. The second core may also be configured to respond to the testing application. The bus matrix may be connected to the first input/output port and the second input/output port. The bus matrix may transfer data between the first core and the second core. The testing application may generate real-time statistics related to the execution of instructions by the second core.
    Type: Application
    Filed: June 4, 2010
    Publication date: December 8, 2011
    Inventors: Guenther Nadbath, Eyal Rosin, Assaf Rachlevski
  • Patent number: 8074206
    Abstract: Method and computer system for software tuning. A computer system stores variables (210) for storing at least one threshold value for at least one parameter (P1) influencing the performance of a software application (200) with regards to a specific task. A threshold evaluator (220) compares (430) the at least one threshold value to at least one corresponding current value allowing the software application (200) to select (440) an algorithm (A1) from a plurality of algorithms (A1 to AN) for performing the task in accordance with the result of comparison.
    Type: Grant
    Filed: July 7, 2004
    Date of Patent: December 6, 2011
    Assignee: SAP AG
    Inventors: Volker Sauermann, Axel Von Bergen, Arne Schwarz
  • Patent number: 8074207
    Abstract: Methods, systems and apparatus, including computer program products, for profiling an application. An application for execution is obtained. The application comprises a plurality of machine-independent first instructions. Regions of the first instructions that implement one or more programming language methods, functions, or flow control structures are identified. The first instructions are translated into corresponding machine-dependent second instructions for a target machine. The second instructions are instrumented to include sampling instructions for the identified regions. The sampling instructions are configured to cause generation of a state sample when an identified region is executed. Each state sample includes a time stamp and an identification of a currently executing method or function. The second instructions are executed in order to execute the application. During the execution of the application, each generated state sample is collected.
    Type: Grant
    Filed: May 31, 2007
    Date of Patent: December 6, 2011
    Assignee: Adobe Systems Incorporated
    Inventor: Thomas Reilly
  • Publication number: 20110289487
    Abstract: Provided are techniques for receiving an error inject script that describes one or more error inject scenarios that define under which conditions at least one error inject is to be executed and compiling the error inject script to output an error inject data structure. While executing code that includes the error inject, an indication that an event has been triggered is received, conditions defined in the one or more error inject scenarios are evaluated using the error inject data structure, and, for each of the conditions that evaluates to true, one or more actions defined in the error inject script for the condition are performed.
    Type: Application
    Filed: May 18, 2010
    Publication date: November 24, 2011
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Cheng-Chung Song
  • Patent number: 8065664
    Abstract: A system and method for defining and detecting pestware is described. One embodiment includes receiving a file and placing at least a portion of the file into a processor-readable memory of a computer. A plurality of execution paths within code of the pestware file are followed and particular instructions within the execution paths are identified. A representation of the relative locations of each of the particular instructions within the code of the file are compared against a pestware-definition file so as to determine whether the file is a potential pestware file.
    Type: Grant
    Filed: August 7, 2006
    Date of Patent: November 22, 2011
    Assignee: Webroot Software, Inc.
    Inventor: Michael Burtscher
  • Patent number: 8065666
    Abstract: Systems and methods that facilitate electronic audit recording and tracking of interactions in an industrial control system via employing a differentiation engine that supplies an object-oriented presentation of an audit trail—and further present a view of a desired segment associated with a PLC program (e.g., a particular run of the PLC program), for an object that an audit is requested for. A user (e.g., a customer of the industrial process) can initially identify an object and subsequently view typically all changes to such identified object. Accordingly, a general requirement for checking every version to determine a change to the object is mitigated.
    Type: Grant
    Filed: May 17, 2007
    Date of Patent: November 22, 2011
    Assignee: Rockwell Automation Technologies, Inc.
    Inventors: Werner Schnabele, Günter Friedrich Schunck
  • Publication number: 20110283266
    Abstract: A method for software performance analysis and debugging in a multi-tenant database network system is provided. In at least one embodiment, sampling is achieved using configuration files of each server cluster. Knowledge of the host names of each server in the cluster enables a profiler to target a single server for each sample, thereby facilitating a round-robin sample across a clustered server environment such that a CPU's load and processing cost associated to sampling is fairly and uniformly distributed across all servers in the cluster. As a result, in at least one embodiment of the analysis and debugging tool each sample is a complete stack trace dump of each thread running on the application server at that moment in time.
    Type: Application
    Filed: February 23, 2011
    Publication date: November 17, 2011
    Applicant: Salesforce.com Inc.
    Inventors: William Gallagher, Zuye Zheng, Fiaz Hossain, James Iry, Nagraj Kulkarni
  • Publication number: 20110283264
    Abstract: A technique for analyzing software in which un-instrumented components can be discovered and dynamically instrumented during a runtime of the software. Initially, an application configured with a baseline set of instrumented components such as methods. As the application runs, performance data is gathered from the instrumentation, and it may be learned that the performance of some methods is an issue. To analyze the problem, any methods which are callable from a method at issue are discovered by inspecting the byte code of loaded classes in a JAVA Virtual Machine (JVM). Byte code of the class is parsed to identify opcodes which invoke byte code to call other methods. An index to an entry in a constants pool table is identified based on an opcode. A decision can then be made to instrument and/or report the discovered methods.
    Type: Application
    Filed: May 11, 2010
    Publication date: November 17, 2011
    Applicant: COMPUTER ASSOCIATES THINK, INC.
    Inventor: Marco Gagliardi
  • Publication number: 20110283263
    Abstract: Techniques for analyzing software in which un-instrumented components can be discovered and conditionally instrumented during a runtime of the software. Initially, software such as an application can be configured with a baseline set of instrumented components such as methods. As the application runs, performance data gathered from the instrumentation may indicate that the performance of some methods is below expectations. To analyze this, any methods which are callable from a method at issue are discovered, such as by inspecting the byte code of loaded classes in a JAVA Virtual Machine (JVM). To limit and focus the diagnosis, the instrumentation which is added to the discovered components can be conditional, so that the instrumentation is executed only in a specified context. The context can involve, e.g., a specified sequence of components in which a discovered component is called, and/or transaction data in which a discovered component is called.
    Type: Application
    Filed: May 11, 2010
    Publication date: November 17, 2011
    Applicant: COMPUTER ASSOCIATES THINK, INC.
    Inventors: Marco Gagliardi, Yitao Sun
  • Publication number: 20110283265
    Abstract: A failsafe mechanism for installing and removing temporary instrumentation during a runtime of an application. Initially, an application is configured with a baseline set of instrumented components such as methods. Additional instrumentation is then deployed in the application, such as to diagnose a performance problem. The failsafe mechanism ensures that the additional instrumentation is automatically removed, even when there is an interruption in a communication link to the application, a computing device failure, a software failure, or some other type of failure, which renders it impossible to manually roll back the instrumentation from a remote user interface. The failsafe mechanism can be provided using callbacks between the computing devices which detect when a connection is unexpectedly lost or closed. Termination of one callback can cascade to one or more other callbacks. The instrumentation rollback can involve reloading un-instrumented byte code of the application.
    Type: Application
    Filed: May 11, 2010
    Publication date: November 17, 2011
    Applicant: COMPUTER ASSOCIATES THINK, INC.
    Inventors: Marco Gagliardi, Yitao Sun
  • Patent number: 8060790
    Abstract: This invention is to provide a technology for taking out trace information externally without lacking under the condition of limited output bandwidth. A semiconductor integrated circuit provided includes: a processing unit which can perform arithmetic processing according to a predetermined program and can output trace information with respect to the arithmetic processing; and a trace compression unit which can compress the trace information outputted from the processing unit. The trace compression unit includes a storage device, a comparator unit which can compare trace information stored in the storage device and the trace information newly outputted from the processing unit, and a trace information compression controller which can compress trace information to be externally outputted, based on the comparison result of the comparator unit.
    Type: Grant
    Filed: July 30, 2008
    Date of Patent: November 15, 2011
    Assignee: Renesas Electronics Corporation
    Inventors: Jun Sakiyama, Naoki Kato
  • Patent number: 8056068
    Abstract: The present invention provides a probe system and method for multithreaded user-space programs. The system includes an instrumentation module that enables single stepping out of line processing for multithreaded programs, an establish probepoint module that divides up an area of the probed program's memory into a plurality of instruction slots, an ensure slot assigned module that ensures that an instruction slot is assigned to a probepoint, a slot acquisition module that acquires the instruction slot for the probepoint, stealing a slot from another probepoint as needed, and a free slot module that relinquishes the instruction slot owned by the probepoint when the probepoint is being unregistered.
    Type: Grant
    Filed: September 11, 2007
    Date of Patent: November 8, 2011
    Assignee: International Business Machines Corporation
    Inventors: Prasadarao Akulavenkatavara, Gerrit Huizenga, James A. Keniston