US8843684B2 - Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration - Google Patents

Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration Download PDF

Info

Publication number
US8843684B2
US8843684B2 US12/813,706 US81370610A US8843684B2 US 8843684 B2 US8843684 B2 US 8843684B2 US 81370610 A US81370610 A US 81370610A US 8843684 B2 US8843684 B2 US 8843684B2
Authority
US
United States
Prior art keywords
thread
processor
interrupted
interrupted thread
affinity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US12/813,706
Other versions
US20110307640A1 (en
Inventor
Scott T. Jones
Kean G. Kuiper
Frank E. Levine
Enio M. Pineda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US12/813,706 priority Critical patent/US8843684B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JONES, SCOTT T., KUIPER, KEAN G., LEVINE, FRANK E., PINEDA, ENIO M.
Publication of US20110307640A1 publication Critical patent/US20110307640A1/en
Application granted granted Critical
Publication of US8843684B2 publication Critical patent/US8843684B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Definitions

  • This disclosure generally relates to a computing environment. More particularly, the disclosure relates to sampling technology.
  • Either time-based or hardware event-based sampling technology is typically utilized in application profiling tools to determine the specific usage of resources.
  • a current approach is to sample by periodically generating interrupts. At each interrupt the current process/thread, the instruction being executed and, optionally, the data address being accessed, may be identified and recorded. At a later time the collected data is aggregated, and reports are generated showing sample distribution by address, symbol, process, etc.
  • a variety of tools are based on this technology. The full execution context of the sample is not typically recorded and not available in reports.
  • the existing set of tools may either attempt to walk the call stack directly or invoke functions on a separate (sampler) thread to obtain the interrupted thread's call stack.
  • a computer program product includes a computer useable medium having a computer readable program.
  • the computer readable program when executed on a computer causes the computer to generate an interrupt based on an event. Further, the computer readable program when executed on the computer causes the computer to capture information, with an interrupt handler, for an interrupted thread on a current processor.
  • the computer readable program when executed on the computer causes the computer to set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor.
  • the computer readable program when executed on the computer causes the computer to retrieve, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the processor affinity of the interrupted thread has been set to the current processor. Further, the computer readable program when executed on the computer causes the computer to restore the affinity of the interrupted thread after the call stack has been retrieved.
  • a process in another aspect of the disclosure, is provided.
  • the process generates an interrupt based on an event. Further, the process captures information, with an interrupt handler, for an interrupted thread on a current processor. In addition, the process sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor.
  • the process also retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, the process restores the affinity of the interrupted thread after the call stack has been retrieved.
  • a system in yet another aspect of the disclosure, includes a current processor that generates an interrupt based on an event. Further, the system includes an operating system that (i) captures information, with an interrupt handler, for an interrupted thread on a current processor and (ii) sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. In addition, the system includes a profiler that retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor.
  • a computer program product in another aspect of the disclosure, includes a computer useable medium having a computer readable program.
  • the computer readable program when executed on a computer causes the computer to generate, with a current processor, an interrupt based on an event. Further, the computer readable program when executed on the computer causes the computer to capture information, with an interrupt handler, for an interrupted thread on a current processor.
  • the computer readable program when executed on the computer causes the computer to set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor.
  • the computer readable program when executed on the computer causes the computer to retrieve, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, the computer readable program when executed on the computer causes the computer to restore the affinity of the interrupted thread after the call stack has been retrieved.
  • FIG. 1 illustrates a sampling system 100 according to an embodiment of the present invention.
  • FIG. 2 illustrates a process 200 that may be utilized to sample a call stack and prevent thread migration according to an embodiment of the present invention.
  • FIG. 3 illustrates a process 300 that may be utilized to utilize at least one signal to avoid forward progress when getting an interrupt driven call stack according to an embodiment of the present invention.
  • FIG. 4 illustrates a process 400 that suspends a thread until its processor affinity may be set to avoid forward progress when getting a call stack according to an embodiment of the present invention.
  • FIG. 5 illustrates a process 500 that may be utilized to profile static and dynamic code according to an embodiment of the present invention.
  • FIG. 6 illustrates a block diagram of a system 600 that prevents thread migration according to an embodiment of the present invention.
  • the existing set of tools may either attempt to walk the call stack directly or invoke functions on a separate (sampler) thread to obtain the interrupted thread's call stack. Attempting to walk the call stack at the interrupt level is not ideal, because applications may have stacks that have been paged out. As a result, a user-mode sampling thread may be employed to walk the call stacks when requested. On multiprocessor systems, requesting that a separate thread gather the interrupted thread's call stack may allow the interrupted thread to migrate to a different processor and make forward progress, i.e., continue execution, while the call stack is being gathered. The gathered call stack will not reflect the state of the thread at the time it was interrupted.
  • a sampling configuration determines why a processor is being utilized in a particular manner.
  • a call stack is gathered at each sample.
  • a determination may be made as to how functions were called in contrast with a profiler that is typically utilized to provide sample distribution reports of recorded addresses of instructions being executed during samples and is unable to make such a determination.
  • a determination may be made as to what was the call stack that was utilized to invoke a particular function. Such a determination may help an analyst determine if a problem exists with how a particular function is being invoked, what calling sequence is being utilized the most frequently, and whether the calling sequence is necessary.
  • a report may be generated to show the different ways in which a function was called.
  • the interrupted/target thread's original affinity is restored.
  • Setting a thread's affinity causes the thread to run only on the specified processor(s). Because the sampler thread runs at high priority and on the same processor on which the interrupted thread is intended to run, the interrupted thread may not migrate to a different processor.
  • the kernel mode component 120 handling the interrupt may be able to set the interrupted thread's affinity immediately within the interrupt handler.
  • setting the affinity may occur outside the interrupt handler when interrupts are enabled.
  • a second level interrupt handler (“SLIH”) or an interrupt back-end may perform this action. While handling the samples, e.g., interrupts, the interrupted thread may not make forward progress until the SLIH or the interrupt back-end has completed its processing, which would include scheduling the sampling thread(s) for the interrupted process.
  • all user-mode sampler threads may spin until the interrupted threads' affinity is set. This method could be used if the operating system's support for binding or setting a thread's affinity is only supported from user mode.
  • the target thread is suspended either in the interrupt handler or in an interrupt back-end. Once the sampler thread gets control, it will set the target thread's affinity and resume (i.e., un-suspend) it.
  • the profiler installs a global signal handler for the application being profiled. At interrupt time, the interrupt handler signals the target thread using a predefined signal, which causes the signal handler to run in the context of the target thread. The signal handler then sets the processor affinity of the target thread, in which context it is executing, to the current processor. Subsequently, the signal handler signals the sampler thread on the current processor. The sampler runs after the signal handler signals the sampler thread.
  • FIG. 1 illustrates a sampling system 100 according to an embodiment of the present invention.
  • the sampling system 100 includes a user mode component 118 that has an application 102 that interacts with a profiler 104 that profiles the application 102 .
  • the profiler 104 interacts with an operating system 106 , which includes a kernel mode component 120 .
  • the kernel mode component 120 may include an interrupt handler 110 .
  • the kernel component 120 may also be a kernel extension.
  • the kernel component 120 may be a part of a device driver installed in the sampling system 100 .
  • the device driver extends the functionality of the kernel component 120 . The location of the code and the calling sequence that led to the code being there is determined.
  • Sampler threads are listening for commands to cause them to retrieve the call stack or a thread of interest, which is performed by the profiler 104 .
  • a sampler thread is a profiler thread. Many sampler threads may be utilized as a plurality of processors may be utilized. Each sampler thread has an affinity to a single processor. Sampler threads may be very high priority threads so that they run immediately when signaled to do work such as retrieving a target thread's call stack.
  • the target thread is the thread that has the call stack of interest to be obtained.
  • a target processor is the processor on which the target thread was running and on which affinity is set so that the target thread remains on that processor for a duration.
  • a target thread's call stack is to be obtained.
  • the target thread is prevented from making any forward progress during that time. In other words, the target thread is kept where it is until the call stack is gathered. Afterward, the target thread may resume.
  • the set of processors on which the target thread may run is restricted to the target processor, according to an embodiment of the present invention. In this way, the remaining processors may continue to do real work. Only the target processor is affected while the target thread's call stack is being retrieved.
  • the affinity is set so that the target thread may run only on the one processor to which it has affinity. Once the target's call stack is obtained, the target thread's affinity is restored and the target thread may run on any available processor again.
  • the sampling system 100 may have a plurality of processors.
  • the sampling system 100 may have a first processor 112 , a second processor 114 , . . . , and an nth processor 116 . Only one thread may run on each processor at a given time. However, that thread may potentially run on a different processor at a different time.
  • at least one processor generates an interrupt.
  • a sample may be driven by an interrupt.
  • the sample is based on an event. For example, the event may be time based so that the sample is generated at a constant rate for predetermined time intervals.
  • each of the processors may generate an interrupt at a constant rate irrespective of the status of each of the processors, e.g., being idle or not being idle.
  • the interrupt for each processor is generated by hardware and handled by an interrupt handler 110 , which determines if the interrupted thread is one for which a call stack should be obtained.
  • the interrupt handler 110 initiates the gathering of call stacks. Further, the interrupt handler may notify or signal a profiler sampler thread. To avoid thread migration during sampling, the affinity of a thread to a particular processor may be established.
  • a component such as an interrupt back-end worker, offlevel processing worker, interrupt backend worker, or the like may be utilized as only some things may be done at the interrupt level, and the rest of the work is deferred until a subsequent time.
  • the profiler 104 may retrieve the call stack, i.e., the execution context. Further, the profiler 104 may restore the affinity.
  • FIG. 2 illustrates a process 200 that may be utilized to sample a call stack and prevent thread migration according to an embodiment of the present invention.
  • the process 200 generates an interrupt based on an event.
  • the process 200 captures information, with an interrupt handler, for an interrupted thread on a current processor.
  • the information may include the thread id (“TID”), process id (“PID”), kernel-mode and user-mode instruction pointer, and/or stack pointer.
  • TID thread id
  • PID process id
  • kernel-mode and user-mode instruction pointer and/or stack pointer.
  • the process 200 sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor.
  • the process 200 retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, at a process block 210 , the process 200 restores the affinity of the interrupted thread after the call stack has been retrieved.
  • the call stack may be recorded in the form of a report.
  • the call stack sampling tool contains a kernel mode component 120 and a user mode component 118 that work together.
  • the underlying operating system 106 provides application program interfaces (“APIs”) that allow setting a thread's affinity from kernel-mode.
  • APIs application program interfaces
  • the user mode component 118 creates a high priority sampling thread for each processor and sets its affinity to only that processor.
  • Each sampler thread is responsible for gathering call stacks for one or more interrupted threads that were running in that processor.
  • Each sampler thread waits for notification from the kernel mode component.
  • the kernel mode component 110 enables the sampling, e.g., interrupt mechanism. Interrupts will occur on each processor at a predetermined rate.
  • the interrupt handler 110 handles the sampling interrupts.
  • the interrupt handler 110 may perform the following: (1) collect the interrupted thread's information, e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc.); (2) set the interrupted thread's affinity to only the processor on which it is running, e.g., the interrupted processor; (3) notify the user-mode sampler thread to collect the call stack; and (4) indicate that no more samples will be handled on this processor until the user-mode sampler thread completes. Further, the user-mode sampler thread wakes up and performs the following: (1) utilizes a virtual machine tools interface to obtain the interrupted thread's call stack or walks the interrupted thread's call stack directly; (2) restores the original interrupted thread's affinity to allow for the operating system 106 as seen in FIG.
  • the interrupted thread's information e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc.
  • set the interrupted thread's affinity to only the processor on which it is running, e.g., the
  • kernel mode component 120 resets the sampling mechanism and waits for the next interrupt to continue with the kernel mode component 120 handling the sampling interrupts.
  • the underlying operating system 106 as seen in FIG. 1 is assumed not to provide APIs that allow setting a thread's affinity from kernel-mode.
  • the user mode component 118 creates a high priority sampling thread for each processor and sets its affinity to only that processor. Each sampler thread is responsible for gathering call stacks for one or more interrupted threads that were running in that processor. Each sampler thread waits for notification from the kernel mode component.
  • the kernel mode component 120 sets the sampling, e.g., interrupt, mechanism. Interrupts will occur on each processor at a predetermined rate. In addition, the kernel mode component 120 handles the sampling interrupts.
  • the kernel mode component 120 collects the interrupted thread's information, e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc. Further, the kernel mode component 120 notifies all user-mode sampler threads to wake up, but assigns the responsibility for collecting the call stack to only those samplers running on processors on which an interrupted thread has been identified to have its call stack retrieved. The kernel mode component 120 indicates that no more samples will be handled on this processor until the user-mode sampler thread completes.
  • interrupted thread's information e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc. Further, the kernel mode component 120 notifies all user-mode sampler threads to wake up, but assigns the responsibility for collecting the call stack to only those samplers running on processors on which an interrupted thread has been identified to have its call stack retrieved. The kernel mode component 120 indicates that no more samples will be handled on this processor until the user-mode sampler thread completes.
  • All user-mode sampler threads wake up and the ones which were not responsible for collecting a call stack go into a spin loop to wait for the samplers tasked with collecting a call stack to set their interrupted threads' affinity whereas the samplers with work to do, i.e., tasked with collecting call stacks set the interrupted thread's affinity to only the processor on which it was running, e.g., the interrupted processor, and join the spin until all interrupted threads have had their affinity changed. Once all interrupted threads have had their affinity changed, samplers which were not tasked with collecting a call stack stop spinning and go back to waiting for kernel-mode notification. Further, samplers tasked with collecting a call stack continue processing.
  • samplers either request the interrupted thread's call stack utilizing virtual machine tools interface application programming interfaces (“APIs”) or retrieve the interrupted thread's call stack directly.
  • APIs application programming interfaces
  • the original interrupted thread's affinity is restored, which allows the operating system 106 to schedule the interrupted thread on any available processor. Further, the call stack and thread information is saved.
  • the kernel mode component 120 is notified that processing has completed. Samplers go back to waiting for the next kernel-mode notification.
  • the kernel mode component 120 resets the sampling mechanism and waits for the next interrupt to continue with the kernel mode component 120 handling the sampling interrupts.
  • setting a thread's affinity is a very fast and lightweight operation and the length of time during which sampler threads on other processors need to spin is significantly reduced. The time is reduced from the length of time it takes to collect the interrupted thread's call stack to the length of time needed to set affinity of the interrupted threads. Once affinity is set, the spinning processors are free to perform useful work.
  • Variations of the configurations provided herein may be utilized to allow for collecting the call stacks asynchronously.
  • a sampler would request that the call stack be collected for the interrupted thread asynchronously, e.g., by setting a notification flag, at the next convenient time, and then wait for a notification from the virtual machine when the request is completed. At that time, the sampler would restore the interrupted thread's affinity. Because collecting a call stack may be a lengthy operation, once the request is made to the virtual machine to collect the call stack, the sampler would yield the processor. The interrupted thread will not migrate away from that processor.
  • the sampler thread could increase the priority of the interrupted thread and block.
  • the profiler 104 would retrieve and process the call stack and before restore the thread's original priority.
  • FIG. 3 illustrates a process 300 that may be utilized to avoid forward progress when getting an interrupt driven call stack according to an embodiment of the present invention.
  • the process 300 generates an interrupt based on an event.
  • the process 300 captures information, with an interrupt handler, for an interrupted thread.
  • the process 300 sends a signal to the interrupted thread.
  • the process 300 binds, with a signal handler, the interrupted thread to the current processor.
  • the process 300 sends a signal to a sampler thread that runs on the current processor.
  • the process 300 retrieves, with the sampler thread, a call stack associated with the interrupted thread after the binding of the interrupted thread has been set to the current processor.
  • the process 300 restores the binding of the interrupted thread after the call stack has been retrieved.
  • the signal handler is installed when the processing is registered for call stack sampling and its sampler threads are allocated. After the hardware is set up to generate one or more interrupts for the requested events, the interrupt is signaled and the interrupt handler handles the interrupt. The interrupt handler then signals the interrupted thread, which may be effectuated by an SLIH or an interrupt back-end as long as they occur on the same processor as the interrupting processor. The signal handler is then executed before the interrupted thread is allowed to resume normal execution. The signal handler may then perform various actions to cause the interrupted thread to be bound to the processor and allow the sampler thread to retrieve the call stack.
  • the signal handler binds (i.e., sets the affinity of the interrupted thread to the processor on which it was interrupted and then signals the sampler thread for that processor to get the interrupted thread's call stack). Because the signal handler may run on any processor, care must be taken to make sure the interrupted thread is bound to the correct processor, not necessarily the one on which the signal handler is running.
  • the interrupt handler maintains a per-processor entry containing the interrupted thread identifier. The signal handler searches the processor entry for its thread id and binds the thread to that processor. Other variations may be utilized.
  • the sampler thread When the sampler thread has determined that the interrupted thread is bound to the interrupted process, the sampler thread then requests or gets the call stack. In one embodiment, the sampler thread may set the affinity or know that the affinity was set by the signal handler.
  • one approach is to have the monitored application link with a library that supports the registration of monitoring and the installation of a signal handler.
  • support may be added dynamically for an interrupted process using a mechanism similar to the process debuggers use to attach to an already running program.
  • a daemon process may be scheduled to initiate the attachment in an expedited manner for subsequent interrupts against that process to be handled via this disclosed method.
  • FIG. 4 illustrates a process 400 that suspends a thread until its processor affinity may be set to reduce forward progress when getting a call stack according to an embodiment of the present invention.
  • the process 400 generates an interrupt based on an event.
  • the process 400 captures information, with an interrupt handler, for an interrupted thread on a current processor.
  • the process 400 suspends, with the interrupt handler, the interrupted thread.
  • the process 400 activates a sampler thread that runs on the current processor.
  • the process 400 binds, with the sampler thread, the interrupted thread to the processor.
  • the sampler thread may perform the binding by utilizing available APIs and/or operating system services.
  • the process 400 resumes, with the sampler thread, the interrupted thread after the binding.
  • the process 400 retrieves, with the sampler thread, a call stack fro the interrupted thread after the binding.
  • the process 400 restores the binding of the interrupted thread after the call stack has been retrieved.
  • the retrieved call stack is walked into a tree and the leaf node of the tree has its base count incremented, which allows for utilization of the technology to produce reports or to view the collected information.
  • FIG. 5 illustrates a process 500 that may be utilized to profile static and dynamic code according to an embodiment of the present invention.
  • the process 500 utilizes the profiler 104 to register events that identify load addresses and lengths for generated code.
  • a virtual machine tool interface event may identify a load address and length of the generated code.
  • the process 500 registers the event to support call stack sampling.
  • the process 500 associates, upon receipt of the event by the profiler 104 , data received with the generated code identified in the event.
  • the profiler 104 processes the data by recording the most recent data with the generated code identified in the event.
  • the profiler 104 may associate the data utilizing a Last In First Out (“LIFO”) queue to give priority to the most recently generated code.
  • LIFO Last In First Out
  • the data recorded by the profiler 104 is handed to a component handling Address to Name (“A2N”) resolution.
  • the component may have specialized support for code that is generated dynamically and may be overlaid.
  • the sampler thread After retrieving a call stack, the sampler thread determines if the instruction pointer received from the interrupt handler falls within the address for the function being executed at the leaf node of a tree. If the instruction pointer falls within the leaf node, the sampler thread indicates that the target thread did not drift (I.e., execute instructions) since the time the target thread was interrupted. If the instruction pointer does not fall within the leaf function, the target thread drifted since the time the target thread was interrupted. The target thread was interrupted at the address given by the instruction pointer. However, that address is not within the function being executed as indicated by the retrieved call stack. In other words, the target thread is not where it was interrupted and has drifted. The sampler inspects other functions near the leaf node.
  • the functions that appear in the tree as immediate callers of the leaf functions i.e., functions that directly call the leaf function or functions directly called by the leaf function.
  • the functions that directly call the leaf function are callers, and the functions that are directly called by the leaf function are callees. If the instruction pointer is resolved to either a caller or a callee then the exact location of the drifted target thread may be determined. Accordingly, corrections may be made in the tree by incrementing the occurrence counts in the actual caller or callee node, which is where the target thread was actually interrupted. If the instruction pointer is not resolved to either a caller or a callee, then the occurrence count on the leaf node is incremented because that is the location of the target thread regardless of where the target thread was interrupted.
  • a report regarding the address range match is generated. While generating the report, the address ranges are converted to symbols. The conversion is performed by identifying functions in the address range and utilizing the A2N component to retrieve start addresses and lengths. When the report is generated, the A2N information is utilized to identify function names. In addition, names that are added to the reports are also determined along with identifying which leaves bases should be incremented to reflect an accurate picture of the call stack samples.
  • static and dynamic code is profiled utilizing the data collected by a device driver and data gathered for generated code.
  • the profiling determines if an instruction address range collected by the device driver falls within the range of the generated code as specified by a virtual machine. This data may be utilized to determine the name of a routine that was executing at the time of an interrupt.
  • the address change is resolved in real time. Therefore, dynamic code may also be accounted for during post processing. Similarly, static code may be profiled utilizing a real time analysis
  • the processes described herein may be implemented in one or more general, multi-purpose or single purpose processor. Such a processor or processors will execute instructions, either at the assembly, compiled or machine-level, to perform the processes. Those instructions may be written by one of ordinary skill in the art following the description of the figures corresponding to the processes and stored or transmitted on a computer readable medium. The instructions may also be created using source code or any other known computer-aided design tool.
  • FIG. 6 illustrates a block diagram of a system 600 that prevents thread migration according to an embodiment of the present invention.
  • the system 600 is suitable for storing and/or executing program code and is implemented using a general purpose computer or any other hardware equivalents.
  • the system 600 comprises a processor 602 , a memory 612 , e.g., random access memory (“RAM”) and/or read only memory (“ROM”), the profiler 104 , and various input/output devices 604 .
  • RAM random access memory
  • ROM read only memory
  • the processor 602 is coupled, either directly or indirectly, to the memory 612 through a system bus.
  • the memory 612 may include local memory employed during actual execution of the program code, bulk storage, and/or cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
  • the input/output devices 604 may be coupled directly to the system 600 or through intervening input/output controllers. Further, the input/output devices 604 may include a keyboard, a keypad, a mouse, a microphone for capturing speech commands, a pointing device, and other user input devices that will be recognized by one of ordinary skill in the art. Further, the input/output devices 904 may include a receiver, transmitter, speaker, display, image capture sensor, biometric sensor, etc. In addition, the input/output devices 604 may include storage devices such as a tape drive, floppy drive, hard disk drive, compact disk (“CD”) drive, digital video disk (“DVD”) drive, etc.
  • CD compact disk
  • DVD digital video disk
  • Network adapters may also be coupled to the system 900 to enable the system 900 to become coupled to other systems, remote printers, or storage devices through intervening private or public networks.
  • Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
  • various actions may take place when the call stack is retrieved.
  • the retrieved call stack is walked into a tree and the leaf node of the tree has its base count incremented, which allows for utilization of technology to produce reports or to view the collected information.
  • a virtual machine may be configured to keep track of calling state and return that state referring to a virtual machine supported interface to return call stacks. For instance, information about execution of threads may be obtained through trace data. This information may include call stack information obtained from call stacks associated with threads of interest. A virtual machine may be utilized to obtain the call stack information. Various approaches may be utilized by the virtual machine to obtain the call stack information. For example, entry/exit events, an application timer tick, or instrumenting codes that sample the instrumented values may be utilized. A selected sampling thread may send a call to the virtual machine to obtain the call stack information. The selected sampling thread may make the call to the virtual machine through a virtual machine interface. The virtual machine interfaces may return call stack information to the sampling thread or may store the call stack information in some work area. The obtained information may be placed into a tree for later analysis.
  • aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
  • the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that may contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that may communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (“LAN”) or a wide area network (“WAN”), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • LAN local area network
  • WAN wide area network
  • Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • microprocessor of a general purpose computer, special purpose computer, or other programmable data processing apparatus may be referred to herein as a “microprocessor.”
  • microprocessor should not be interpreted as being limited to a single-chip central processing unit or any other particular type of programmable data processing apparatus, unless explicitly so stated.
  • These computer program instructions may also be stored in a computer readable medium that may direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Abstract

A sample is generated based on an event. Further, an interrupt handler captures information for an interrupted thread on a current processor. In addition, an affinity of the interrupted thread is set such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. A sampler thread that runs on the current processor retrieves a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. The affinity of the interrupted thread is restored after the call stack has been retrieved.

Description

BACKGROUND
1. Field
This disclosure generally relates to a computing environment. More particularly, the disclosure relates to sampling technology.
2. General Background
Either time-based or hardware event-based sampling technology is typically utilized in application profiling tools to determine the specific usage of resources. A current approach is to sample by periodically generating interrupts. At each interrupt the current process/thread, the instruction being executed and, optionally, the data address being accessed, may be identified and recorded. At a later time the collected data is aggregated, and reports are generated showing sample distribution by address, symbol, process, etc. A variety of tools are based on this technology. The full execution context of the sample is not typically recorded and not available in reports.
Attempts have been made to improve this technology by getting call stacks at the time of the sample. The existing set of tools may either attempt to walk the call stack directly or invoke functions on a separate (sampler) thread to obtain the interrupted thread's call stack.
SUMMARY
In one aspect of the disclosure, a computer program product is provided. The computer program product includes a computer useable medium having a computer readable program. The computer readable program when executed on a computer causes the computer to generate an interrupt based on an event. Further, the computer readable program when executed on the computer causes the computer to capture information, with an interrupt handler, for an interrupted thread on a current processor. In addition, the computer readable program when executed on the computer causes the computer to set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. The computer readable program when executed on the computer causes the computer to retrieve, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the processor affinity of the interrupted thread has been set to the current processor. Further, the computer readable program when executed on the computer causes the computer to restore the affinity of the interrupted thread after the call stack has been retrieved.
In another aspect of the disclosure, a process is provided. The process generates an interrupt based on an event. Further, the process captures information, with an interrupt handler, for an interrupted thread on a current processor. In addition, the process sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. The process also retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, the process restores the affinity of the interrupted thread after the call stack has been retrieved.
In yet another aspect of the disclosure, a system is provided. The system includes a current processor that generates an interrupt based on an event. Further, the system includes an operating system that (i) captures information, with an interrupt handler, for an interrupted thread on a current processor and (ii) sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. In addition, the system includes a profiler that retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor.
In another aspect of the disclosure, a computer program product is provided. The computer program product includes a computer useable medium having a computer readable program. The computer readable program when executed on a computer causes the computer to generate, with a current processor, an interrupt based on an event. Further, the computer readable program when executed on the computer causes the computer to capture information, with an interrupt handler, for an interrupted thread on a current processor. In addition, the computer readable program when executed on the computer causes the computer to set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. The computer readable program when executed on the computer causes the computer to retrieve, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, the computer readable program when executed on the computer causes the computer to restore the affinity of the interrupted thread after the call stack has been retrieved.
DRAWINGS
The above-mentioned features of the present disclosure will become more apparent with reference to the following description taken in conjunction with the accompanying drawings wherein like reference numerals denote like elements and in which:
FIG. 1 illustrates a sampling system 100 according to an embodiment of the present invention.
FIG. 2 illustrates a process 200 that may be utilized to sample a call stack and prevent thread migration according to an embodiment of the present invention.
FIG. 3 illustrates a process 300 that may be utilized to utilize at least one signal to avoid forward progress when getting an interrupt driven call stack according to an embodiment of the present invention.
FIG. 4 illustrates a process 400 that suspends a thread until its processor affinity may be set to avoid forward progress when getting a call stack according to an embodiment of the present invention.
FIG. 5 illustrates a process 500 that may be utilized to profile static and dynamic code according to an embodiment of the present invention.
FIG. 6 illustrates a block diagram of a system 600 that prevents thread migration according to an embodiment of the present invention.
DETAILED DESCRIPTION
The existing set of tools may either attempt to walk the call stack directly or invoke functions on a separate (sampler) thread to obtain the interrupted thread's call stack. Attempting to walk the call stack at the interrupt level is not ideal, because applications may have stacks that have been paged out. As a result, a user-mode sampling thread may be employed to walk the call stacks when requested. On multiprocessor systems, requesting that a separate thread gather the interrupted thread's call stack may allow the interrupted thread to migrate to a different processor and make forward progress, i.e., continue execution, while the call stack is being gathered. The gathered call stack will not reflect the state of the thread at the time it was interrupted.
According to an embodiment of the present invention, a sampling configuration is provided that determines why a processor is being utilized in a particular manner. In one embodiment, a call stack is gathered at each sample. As a result, a determination may be made as to how functions were called in contrast with a profiler that is typically utilized to provide sample distribution reports of recorded addresses of instructions being executed during samples and is unable to make such a determination. Further, a determination may be made as to what was the call stack that was utilized to invoke a particular function. Such a determination may help an analyst determine if a problem exists with how a particular function is being invoked, what calling sequence is being utilized the most frequently, and whether the calling sequence is necessary. In one embodiment, a report may be generated to show the different ways in which a function was called.
In gathering calls stacks for interrupted threads, there is a migration issue. That is, while the call stacks are gathered, the thread may have migrated to a different processor. It is possible to prevent thread migration by keeping all processors busy, other than the one on which the call stack will be gathered. This could be accomplished by having sampler threads spin on those processors, until the call stack is obtained for the thread of interest. However, this severely affects overall application performance. Instead, the thread of interest may be prevented from migrating to a different processor by setting its affinity to restrict it to only running on one processor. In this way the other processors do not have to be spun, so that the other processors are free to continue running the application. Thus, there is minimal application performance degradation. To reiterate, thread migration is prevented by setting the processor affinity of the interrupted/target thread to allow it to run only on the current processor.
After the call stack is retrieved, the interrupted/target thread's original affinity is restored. Setting a thread's affinity, sometimes also known as binding, causes the thread to run only on the specified processor(s). Because the sampler thread runs at high priority and on the same processor on which the interrupted thread is intended to run, the interrupted thread may not migrate to a different processor.
As samples are processed, the kernel mode component 120 handling the interrupt may be able to set the interrupted thread's affinity immediately within the interrupt handler. In one embodiment, setting the affinity may occur outside the interrupt handler when interrupts are enabled. For example, a second level interrupt handler (“SLIH”) or an interrupt back-end may perform this action. While handling the samples, e.g., interrupts, the interrupted thread may not make forward progress until the SLIH or the interrupt back-end has completed its processing, which would include scheduling the sampling thread(s) for the interrupted process.
In an alternative embodiment, all user-mode sampler threads, one for each processor, may spin until the interrupted threads' affinity is set. This method could be used if the operating system's support for binding or setting a thread's affinity is only supported from user mode. In another embodiment, the target thread is suspended either in the interrupt handler or in an interrupt back-end. Once the sampler thread gets control, it will set the target thread's affinity and resume (i.e., un-suspend) it. In yet another embodiment, the profiler installs a global signal handler for the application being profiled. At interrupt time, the interrupt handler signals the target thread using a predefined signal, which causes the signal handler to run in the context of the target thread. The signal handler then sets the processor affinity of the target thread, in which context it is executing, to the current processor. Subsequently, the signal handler signals the sampler thread on the current processor. The sampler runs after the signal handler signals the sampler thread.
FIG. 1 illustrates a sampling system 100 according to an embodiment of the present invention. The sampling system 100 includes a user mode component 118 that has an application 102 that interacts with a profiler 104 that profiles the application 102. The profiler 104 interacts with an operating system 106, which includes a kernel mode component 120. The kernel mode component 120 may include an interrupt handler 110. The kernel component 120 may also be a kernel extension. Further, the kernel component 120 may be a part of a device driver installed in the sampling system 100. The device driver extends the functionality of the kernel component 120. The location of the code and the calling sequence that led to the code being there is determined.
Sampler threads are listening for commands to cause them to retrieve the call stack or a thread of interest, which is performed by the profiler 104. A sampler thread is a profiler thread. Many sampler threads may be utilized as a plurality of processors may be utilized. Each sampler thread has an affinity to a single processor. Sampler threads may be very high priority threads so that they run immediately when signaled to do work such as retrieving a target thread's call stack. The target thread is the thread that has the call stack of interest to be obtained. Further, a target processor is the processor on which the target thread was running and on which affinity is set so that the target thread remains on that processor for a duration.
Once a determination is made as a result of sampling, a target thread's call stack is to be obtained. The target thread is prevented from making any forward progress during that time. In other words, the target thread is kept where it is until the call stack is gathered. Afterward, the target thread may resume.
In a multi-processor environment, an issue arises in gathering calls stacks. That is, since call stacks are gathered by profiler sampler threads, the target thread could potentially be running on another available processor, i.e., a different processor than the target processor. By the time the sampler thread gathers the call stack, the target thread may no longer be at the point where it was sampled, and the call stack would not accurately reflect where the target thread was at the time of the sample. It would be possible to address this issue by boxing out all of the processors other than the target processor, i.e. giving all the other processors busy work that is not useful to make them spin so that they do not have the sampler thread. However, this tends to significantly hinder application performance. So instead, the set of processors on which the target thread may run is restricted to the target processor, according to an embodiment of the present invention. In this way, the remaining processors may continue to do real work. Only the target processor is affected while the target thread's call stack is being retrieved. The affinity is set so that the target thread may run only on the one processor to which it has affinity. Once the target's call stack is obtained, the target thread's affinity is restored and the target thread may run on any available processor again.
The sampling system 100 may have a plurality of processors. For example, the sampling system 100 may have a first processor 112, a second processor 114, . . . , and an nth processor 116. Only one thread may run on each processor at a given time. However, that thread may potentially run on a different processor at a different time. In the sampling system 100, at least one processor generates an interrupt. In one embodiment, a sample may be driven by an interrupt. In one embodiment, the sample is based on an event. For example, the event may be time based so that the sample is generated at a constant rate for predetermined time intervals. Accordingly, each of the processors may generate an interrupt at a constant rate irrespective of the status of each of the processors, e.g., being idle or not being idle. The interrupt for each processor is generated by hardware and handled by an interrupt handler 110, which determines if the interrupted thread is one for which a call stack should be obtained. The interrupt handler 110 initiates the gathering of call stacks. Further, the interrupt handler may notify or signal a profiler sampler thread. To avoid thread migration during sampling, the affinity of a thread to a particular processor may be established.
In another embodiment, a component such as an interrupt back-end worker, offlevel processing worker, interrupt backend worker, or the like may be utilized as only some things may be done at the interrupt level, and the rest of the work is deferred until a subsequent time.
The profiler 104 may retrieve the call stack, i.e., the execution context. Further, the profiler 104 may restore the affinity.
FIG. 2 illustrates a process 200 that may be utilized to sample a call stack and prevent thread migration according to an embodiment of the present invention. At a process block 202, the process 200 generates an interrupt based on an event. Further, at a process block 204, the process 200 captures information, with an interrupt handler, for an interrupted thread on a current processor. The information may include the thread id (“TID”), process id (“PID”), kernel-mode and user-mode instruction pointer, and/or stack pointer. In addition, at a process block 206, the process 200 sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor. At a process block 208, the process 200 retrieves, with a sampler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor. Further, at a process block 210, the process 200 restores the affinity of the interrupted thread after the call stack has been retrieved. The call stack may be recorded in the form of a report.
In one embodiment, the call stack sampling tool contains a kernel mode component 120 and a user mode component 118 that work together. In one configuration, the underlying operating system 106 provides application program interfaces (“APIs”) that allow setting a thread's affinity from kernel-mode. The user mode component 118 creates a high priority sampling thread for each processor and sets its affinity to only that processor. Each sampler thread is responsible for gathering call stacks for one or more interrupted threads that were running in that processor. Each sampler thread waits for notification from the kernel mode component. The kernel mode component 110 enables the sampling, e.g., interrupt mechanism. Interrupts will occur on each processor at a predetermined rate. The interrupt handler 110 handles the sampling interrupts. For example the interrupt handler 110 may perform the following: (1) collect the interrupted thread's information, e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc.); (2) set the interrupted thread's affinity to only the processor on which it is running, e.g., the interrupted processor; (3) notify the user-mode sampler thread to collect the call stack; and (4) indicate that no more samples will be handled on this processor until the user-mode sampler thread completes. Further, the user-mode sampler thread wakes up and performs the following: (1) utilizes a virtual machine tools interface to obtain the interrupted thread's call stack or walks the interrupted thread's call stack directly; (2) restores the original interrupted thread's affinity to allow for the operating system 106 as seen in FIG. 1 to schedule the interrupted thread on any available processor; (3) save call stack and thread information; (4) notify kernel mode component 120 that processing had completed; and (5) wait for the next kernel-mode notification. In addition, the kernel mode component 120 resets the sampling mechanism and waits for the next interrupt to continue with the kernel mode component 120 handling the sampling interrupts. As a result, setting a thread's affinity is a very fast and lightweight operation and the need to spin threads on other processors for the length of time it takes to collect the interrupted thread's call stack is eliminated. Accordingly, those other processors are free to perform useful work.
In another configuration, the underlying operating system 106 as seen in FIG. 1 is assumed not to provide APIs that allow setting a thread's affinity from kernel-mode. The user mode component 118 creates a high priority sampling thread for each processor and sets its affinity to only that processor. Each sampler thread is responsible for gathering call stacks for one or more interrupted threads that were running in that processor. Each sampler thread waits for notification from the kernel mode component. Further, the kernel mode component 120 sets the sampling, e.g., interrupt, mechanism. Interrupts will occur on each processor at a predetermined rate. In addition, the kernel mode component 120 handles the sampling interrupts. The kernel mode component 120 collects the interrupted thread's information, e.g., thread id, process id, user-mode and kernel-mode instruction and stack pointers, etc. Further, the kernel mode component 120 notifies all user-mode sampler threads to wake up, but assigns the responsibility for collecting the call stack to only those samplers running on processors on which an interrupted thread has been identified to have its call stack retrieved. The kernel mode component 120 indicates that no more samples will be handled on this processor until the user-mode sampler thread completes. All user-mode sampler threads wake up and the ones which were not responsible for collecting a call stack go into a spin loop to wait for the samplers tasked with collecting a call stack to set their interrupted threads' affinity whereas the samplers with work to do, i.e., tasked with collecting call stacks set the interrupted thread's affinity to only the processor on which it was running, e.g., the interrupted processor, and join the spin until all interrupted threads have had their affinity changed. Once all interrupted threads have had their affinity changed, samplers which were not tasked with collecting a call stack stop spinning and go back to waiting for kernel-mode notification. Further, samplers tasked with collecting a call stack continue processing. In addition, samplers either request the interrupted thread's call stack utilizing virtual machine tools interface application programming interfaces (“APIs”) or retrieve the interrupted thread's call stack directly. The original interrupted thread's affinity is restored, which allows the operating system 106 to schedule the interrupted thread on any available processor. Further, the call stack and thread information is saved. The kernel mode component 120 is notified that processing has completed. Samplers go back to waiting for the next kernel-mode notification. The kernel mode component 120 resets the sampling mechanism and waits for the next interrupt to continue with the kernel mode component 120 handling the sampling interrupts. As a result, setting a thread's affinity is a very fast and lightweight operation and the length of time during which sampler threads on other processors need to spin is significantly reduced. The time is reduced from the length of time it takes to collect the interrupted thread's call stack to the length of time needed to set affinity of the interrupted threads. Once affinity is set, the spinning processors are free to perform useful work.
Variations of the configurations provided herein may be utilized to allow for collecting the call stacks asynchronously. Instead of making a synchronous call to a virtual machine tools interface to collect the call stack, a sampler would request that the call stack be collected for the interrupted thread asynchronously, e.g., by setting a notification flag, at the next convenient time, and then wait for a notification from the virtual machine when the request is completed. At that time, the sampler would restore the interrupted thread's affinity. Because collecting a call stack may be a lengthy operation, once the request is made to the virtual machine to collect the call stack, the sampler would yield the processor. The interrupted thread will not migrate away from that processor. In order to get the call stack from the interrupted thread as soon as possible, after setting the notification flag, the sampler thread could increase the priority of the interrupted thread and block. When the notification occurs, the profiler 104 would retrieve and process the call stack and before restore the thread's original priority.
FIG. 3 illustrates a process 300 that may be utilized to avoid forward progress when getting an interrupt driven call stack according to an embodiment of the present invention. At a process block 302, the process 300 generates an interrupt based on an event. Further, at a process block 304, the process 300 captures information, with an interrupt handler, for an interrupted thread. In addition, at a process block 306, the process 300 sends a signal to the interrupted thread. At a process block 308, the process 300 binds, with a signal handler, the interrupted thread to the current processor. Further, at a process block 310, the process 300 sends a signal to a sampler thread that runs on the current processor. In addition, at a process block 312, the process 300 retrieves, with the sampler thread, a call stack associated with the interrupted thread after the binding of the interrupted thread has been set to the current processor. At a process block 314, the process 300 restores the binding of the interrupted thread after the call stack has been retrieved.
In one embodiment, the signal handler is installed when the processing is registered for call stack sampling and its sampler threads are allocated. After the hardware is set up to generate one or more interrupts for the requested events, the interrupt is signaled and the interrupt handler handles the interrupt. The interrupt handler then signals the interrupted thread, which may be effectuated by an SLIH or an interrupt back-end as long as they occur on the same processor as the interrupting processor. The signal handler is then executed before the interrupted thread is allowed to resume normal execution. The signal handler may then perform various actions to cause the interrupted thread to be bound to the processor and allow the sampler thread to retrieve the call stack. In one embodiment, the signal handler binds (i.e., sets the affinity of the interrupted thread to the processor on which it was interrupted and then signals the sampler thread for that processor to get the interrupted thread's call stack). Because the signal handler may run on any processor, care must be taken to make sure the interrupted thread is bound to the correct processor, not necessarily the one on which the signal handler is running. In one embodiment, the interrupt handler maintains a per-processor entry containing the interrupted thread identifier. The signal handler searches the processor entry for its thread id and binds the thread to that processor. Other variations may be utilized.
When the sampler thread has determined that the interrupted thread is bound to the interrupted process, the sampler thread then requests or gets the call stack. In one embodiment, the sampler thread may set the affinity or know that the affinity was set by the signal handler.
With respect to native call stacks, one approach is to have the monitored application link with a library that supports the registration of monitoring and the installation of a signal handler. Alternatively, support may be added dynamically for an interrupted process using a mechanism similar to the process debuggers use to attach to an already running program. Although this may not be possible on the first interrupt, a daemon process may be scheduled to initiate the attachment in an expedited manner for subsequent interrupts against that process to be handled via this disclosed method.
FIG. 4 illustrates a process 400 that suspends a thread until its processor affinity may be set to reduce forward progress when getting a call stack according to an embodiment of the present invention. At a process block 402, the process 400 generates an interrupt based on an event. Further, at a process block 404, the process 400 captures information, with an interrupt handler, for an interrupted thread on a current processor. In addition, at a process block 406, the process 400 suspends, with the interrupt handler, the interrupted thread. At a process block 408, the process 400 activates a sampler thread that runs on the current processor. In addition, at a process block 410, the process 400 binds, with the sampler thread, the interrupted thread to the processor. The sampler thread may perform the binding by utilizing available APIs and/or operating system services. At a process block 412, the process 400 resumes, with the sampler thread, the interrupted thread after the binding. Further, at a process block 414, the process 400 retrieves, with the sampler thread, a call stack fro the interrupted thread after the binding. In addition, at a process block 416, the process 400 restores the binding of the interrupted thread after the call stack has been retrieved.
When the call stack is retrieved, various actions may take place. In one embodiment, the retrieved call stack is walked into a tree and the leaf node of the tree has its base count incremented, which allows for utilization of the technology to produce reports or to view the collected information.
In yet another embodiment, profiling static and dynamic code may be utilized. FIG. 5 illustrates a process 500 that may be utilized to profile static and dynamic code according to an embodiment of the present invention. At a process block 502, the process 500 utilizes the profiler 104 to register events that identify load addresses and lengths for generated code. As an example, a virtual machine tool interface event may identify a load address and length of the generated code. Further, at a process block 504, the process 500 registers the event to support call stack sampling. In addition, at a process block 506, the process 500 associates, upon receipt of the event by the profiler 104, data received with the generated code identified in the event. At a process block 508, the profiler 104 processes the data by recording the most recent data with the generated code identified in the event. In an alternative embodiment, the profiler 104 may associate the data utilizing a Last In First Out (“LIFO”) queue to give priority to the most recently generated code.
In another embodiment, the data recorded by the profiler 104 is handed to a component handling Address to Name (“A2N”) resolution. The component may have specialized support for code that is generated dynamically and may be overlaid.
After retrieving a call stack, the sampler thread determines if the instruction pointer received from the interrupt handler falls within the address for the function being executed at the leaf node of a tree. If the instruction pointer falls within the leaf node, the sampler thread indicates that the target thread did not drift (I.e., execute instructions) since the time the target thread was interrupted. If the instruction pointer does not fall within the leaf function, the target thread drifted since the time the target thread was interrupted. The target thread was interrupted at the address given by the instruction pointer. However, that address is not within the function being executed as indicated by the retrieved call stack. In other words, the target thread is not where it was interrupted and has drifted. The sampler inspects other functions near the leaf node. In other words, the functions that appear in the tree as immediate callers of the leaf functions (i.e., functions that directly call the leaf function or functions directly called by the leaf function.) The functions that directly call the leaf function are callers, and the functions that are directly called by the leaf function are callees. If the instruction pointer is resolved to either a caller or a callee then the exact location of the drifted target thread may be determined. Accordingly, corrections may be made in the tree by incrementing the occurrence counts in the actual caller or callee node, which is where the target thread was actually interrupted. If the instruction pointer is not resolved to either a caller or a callee, then the occurrence count on the leaf node is incremented because that is the location of the target thread regardless of where the target thread was interrupted.
Subsequently, a report regarding the address range match is generated. While generating the report, the address ranges are converted to symbols. The conversion is performed by identifying functions in the address range and utilizing the A2N component to retrieve start addresses and lengths. When the report is generated, the A2N information is utilized to identify function names. In addition, names that are added to the reports are also determined along with identifying which leaves bases should be incremented to reflect an accurate picture of the call stack samples.
Accordingly, static and dynamic code is profiled utilizing the data collected by a device driver and data gathered for generated code. The profiling determines if an instruction address range collected by the device driver falls within the range of the generated code as specified by a virtual machine. This data may be utilized to determine the name of a routine that was executing at the time of an interrupt.
Further, in one embodiment, the address change is resolved in real time. Therefore, dynamic code may also be accounted for during post processing. Similarly, static code may be profiled utilizing a real time analysis
The processes described herein may be implemented in one or more general, multi-purpose or single purpose processor. Such a processor or processors will execute instructions, either at the assembly, compiled or machine-level, to perform the processes. Those instructions may be written by one of ordinary skill in the art following the description of the figures corresponding to the processes and stored or transmitted on a computer readable medium. The instructions may also be created using source code or any other known computer-aided design tool.
FIG. 6 illustrates a block diagram of a system 600 that prevents thread migration according to an embodiment of the present invention. In one embodiment, the system 600 is suitable for storing and/or executing program code and is implemented using a general purpose computer or any other hardware equivalents. Thus, the system 600 comprises a processor 602, a memory 612, e.g., random access memory (“RAM”) and/or read only memory (“ROM”), the profiler 104, and various input/output devices 604.
The processor 602 is coupled, either directly or indirectly, to the memory 612 through a system bus. The memory 612 may include local memory employed during actual execution of the program code, bulk storage, and/or cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
The input/output devices 604 may be coupled directly to the system 600 or through intervening input/output controllers. Further, the input/output devices 604 may include a keyboard, a keypad, a mouse, a microphone for capturing speech commands, a pointing device, and other user input devices that will be recognized by one of ordinary skill in the art. Further, the input/output devices 904 may include a receiver, transmitter, speaker, display, image capture sensor, biometric sensor, etc. In addition, the input/output devices 604 may include storage devices such as a tape drive, floppy drive, hard disk drive, compact disk (“CD”) drive, digital video disk (“DVD”) drive, etc.
Network adapters may also be coupled to the system 900 to enable the system 900 to become coupled to other systems, remote printers, or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
For any of the configurations described herein, various actions may take place when the call stack is retrieved. In one embodiment, the retrieved call stack is walked into a tree and the leaf node of the tree has its base count incremented, which allows for utilization of technology to produce reports or to view the collected information.
Any of the configurations described herein may be utilized with a virtual machine. A virtual machine may be configured to keep track of calling state and return that state referring to a virtual machine supported interface to return call stacks. For instance, information about execution of threads may be obtained through trace data. This information may include call stack information obtained from call stacks associated with threads of interest. A virtual machine may be utilized to obtain the call stack information. Various approaches may be utilized by the virtual machine to obtain the call stack information. For example, entry/exit events, an application timer tick, or instrumenting codes that sample the instrumented values may be utilized. A selected sampling thread may send a call to the virtual machine to obtain the call stack information. The selected sampling thread may make the call to the virtual machine through a virtual machine interface. The virtual machine interfaces may return call stack information to the sampling thread or may store the call stack information in some work area. The obtained information may be placed into a tree for later analysis.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that may contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that may communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (“LAN”) or a wide area network (“WAN”), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The “processor” of a general purpose computer, special purpose computer, or other programmable data processing apparatus may be referred to herein as a “microprocessor.” However, the term “microprocessor” should not be interpreted as being limited to a single-chip central processing unit or any other particular type of programmable data processing apparatus, unless explicitly so stated.
These computer program instructions may also be stored in a computer readable medium that may direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
Reference throughout this Specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrase “in one embodiment,” “in an embodiment,” and similar language throughout this Specification may, but do not necessarily, all refer to the same embodiment. Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. Correspondingly, even if features are initially claimed as acting in certain combinations, one or more features from a claimed combination may in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
While the apparatus and method have been described in terms of what are presently considered to be the most practical and preferred embodiments, it is to be understood that the disclosure need not be limited to the disclosed embodiments. The disclosure is intended to cover various modifications and similar arrangements included within the spirit and scope of the claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures. The present disclosure includes any and all embodiments of the following claims.

Claims (25)

We claim:
1. A computer program product comprising a computer useable medium having a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:
generate an interrupt based on an event;
capture information, with an interrupt handler, for an interrupted thread on a current processor from among a plurality of processors;
set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor from among the plurality of processors;
retrieve, with a profiler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor; and
restore the affinity of the interrupted thread after the call stack has been retrieved.
2. The computer program product of claim 1, wherein a signal handler is utilized to set the affinity of the interrupted thread.
3. The computer program product of claim 1, wherein the computer is further caused to suspend the interrupted thread after the interrupted thread is identified.
4. The computer program product of claim 1, wherein the computer is further caused to resume the interrupted thread after the affinity is set.
5. The computer program product of claim 1, wherein the computer is further caused to detect thread drift and correct the thread drift upon the detection by comparing a current instruction pointer to an instruction pointer captured at a time of the interrupt.
6. The computer program product of claim 1, wherein the computer is further caused to register, with a profiler, the event to identify a load address and a length for generated code.
7. The computer program product of claim 2, wherein the profiler thread retrieves the call stack based upon receiving a signal from the signal handler.
8. The computer program product of claim 2, wherein the interrupted thread is bound to the current processor, irrespective of an operating system attempting to schedule the signal handler to execute on the different processor, by searching a processor table for the current processor to bind the interrupted thread.
9. A method comprising:
generating a sample based on an event;
capture information, with an interrupt handler, for an interrupted thread on a current processor from among a plurality of processors;
setting an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor from among the plurality of processors;
retrieving, with a profiler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor; and
restoring the affinity of the interrupted thread after the call stack has been retrieved.
10. The method of claim 9, wherein a signal handler is utilized to set the affinity of the interrupted thread.
11. The method of claim 9, further comprising suspending the interrupted thread after the interrupted thread is identified.
12. The method of claim 9, further comprising resuming the interrupted thread after the affinity is set.
13. The method of claim 9, further comprising detecting thread drift and correcting the thread drift upon the detection by comparing a current instruction pointer to an instruction pointer captured at a time of the interrupt.
14. The method of claim 9, further comprising registering, with a profiler, the event to identify a load address and a length for generated code.
15. The method of claim 10, wherein the profiler thread retrieves the call stack based upon receiving a signal from the signal handler.
16. The method of claim 10, wherein the interrupted thread is bound to the current processor, irrespective of an operating system attempting to schedule the signal handler to execute on the different processor, by searching a processor table for the current processor to bind the interrupted thread.
17. A system comprising:
a current processor from among a plurality of processors that generates an interrupt based on an event;
an operating system that (i) captures information, with an interrupt handler, for an interrupted thread on the current processor and (ii) sets an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor from among the plurality of processors;
a profiler that (i) retrieves, with a profiler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor.
18. The system of claim 17, further comprising a signal handler that is utilized to set the affinity of the interrupted thread.
19. The system of claim 17, wherein the interrupted thread is suspended after the interrupted thread is identified.
20. The system of claim 17, wherein the interrupted thread is resumed the after the affinity is set.
21. The system of claim 17, wherein thread drift is detected and the thread drift is corrected upon the detection by comparing a current instruction pointer to an instruction pointer captured at a time of the interrupt.
22. The system of claim 17, wherein the profiler further registers the event to identify a load address and a length for generated code.
23. The system of claim 18, wherein the profiler thread retrieves the call stack based upon receiving a signal from the signal handler.
24. The system of claim 18, wherein the interrupted thread is bound to the current processor, irrespective of an operating system attempting to schedule the signal handler to execute on the different processor, by searching a processor table for the current processor to bind the interrupted thread.
25. A computer program product comprising a computer useable medium having a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:
generate, with a current processor from among a plurality of processors, an interrupt based on an event;
capture information, with an interrupt handler, for an interrupted thread on the current processor;
set an affinity of the interrupted thread such that the interrupted thread runs only on the current processor without being able to migrate to a different processor from among the plurality of processors;
retrieve, with a profiler thread that runs on the current processor, a call stack associated with the interrupted thread after the affinity of the interrupted thread has been set to the current processor; and
restore the affinity of the interrupted thread after the call stack has been retrieved;
compare a current instruction pointer to an instruction pointer captured at a time of the interrupt to detect thread drift; and
correct the thread drift upon the detection.
US12/813,706 2010-06-11 2010-06-11 Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration Active US8843684B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/813,706 US8843684B2 (en) 2010-06-11 2010-06-11 Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/813,706 US8843684B2 (en) 2010-06-11 2010-06-11 Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration

Publications (2)

Publication Number Publication Date
US20110307640A1 US20110307640A1 (en) 2011-12-15
US8843684B2 true US8843684B2 (en) 2014-09-23

Family

ID=45097173

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/813,706 Active US8843684B2 (en) 2010-06-11 2010-06-11 Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration

Country Status (1)

Country Link
US (1) US8843684B2 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140052857A1 (en) * 2009-09-10 2014-02-20 AppDynamics, Inc. Correlation of distributed business transactions
US20140068069A1 (en) * 2009-09-10 2014-03-06 AppDynamics, Inc. Conducting a diagnostic session for monitored business transactions
US9311598B1 (en) 2012-02-02 2016-04-12 AppDynamics, Inc. Automatic capture of detailed analysis information for web application outliers with very low overhead
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US9582312B1 (en) * 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
US9612881B2 (en) 2015-03-30 2017-04-04 Nxp Usa, Inc. Method, apparatus, and system for unambiguous parameter sampling in a heterogeneous multi-core or multi-threaded processor environment
US10031786B2 (en) 2016-01-13 2018-07-24 International Business Machines Corporation Lockless multithreaded completion queue access
US10230611B2 (en) * 2009-09-10 2019-03-12 Cisco Technology, Inc. Dynamic baseline determination for distributed business transaction
US10505757B2 (en) 2014-12-12 2019-12-10 Nxp Usa, Inc. Network interface module and a method of changing network configuration parameters within a network device
US20200065077A1 (en) * 2018-08-21 2020-02-27 International Business Machines Corporation Identifying software and hardware bottlenecks
US10628352B2 (en) 2016-07-19 2020-04-21 Nxp Usa, Inc. Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device
US11025357B1 (en) 2019-12-19 2021-06-01 Stmicroelectronics, Inc. Robust sensor timestamp management

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
KR101396781B1 (en) * 2013-01-08 2014-05-20 주식회사 한올테크놀로지 The device which manages a application program and managing method for the same
US9684667B2 (en) * 2014-08-05 2017-06-20 Dell Products L.P. System and method of optimizing the user application experience
US9658860B2 (en) 2014-08-05 2017-05-23 Dell Products L.P. System and method for optimizing bootup performance
CN105843592A (en) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 System for implementing script operation in preset embedded system
CN113467884A (en) * 2021-05-25 2021-10-01 阿里巴巴新加坡控股有限公司 Resource allocation method and device, electronic equipment and computer readable storage medium

Citations (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305454A (en) 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5404529A (en) 1993-07-19 1995-04-04 Taligent, Inc. Object-oriented interprocess communication system interface for a procedural operating system
EP0649084A1 (en) 1993-10-18 1995-04-19 Cyrix Corporation Microprocessor branch processing
US5465328A (en) 1993-03-30 1995-11-07 International Business Machines Corporation Fault-tolerant transaction-oriented data processing
US5473777A (en) 1993-07-19 1995-12-05 Moeller; Christopher P. Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
EP0689141A2 (en) 1994-06-20 1995-12-27 AT&T Corp. Interrupt-based hardware support for profiling system performance
US5544318A (en) 1993-04-16 1996-08-06 Accom, Inc., Asynchronous media server request processing system for servicing reprioritizing request from a client determines whether or not to delay executing said reprioritizing request
US5625359A (en) 1994-11-22 1997-04-29 Analog Devices, Inc. Variable sample rate ADC
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5751789A (en) 1995-11-13 1998-05-12 Bell Atlantic Network Services, Inc. SNID with wireless backup
US5764241A (en) 1995-11-30 1998-06-09 Microsoft Corporation Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior
US5913213A (en) 1997-06-16 1999-06-15 Telefonaktiebolaget L M Ericsson Lingering locks for replicated data objects
US5930516A (en) 1989-10-30 1999-07-27 Texas Instruments Incorporated Real time power conservation for computers
JPH11327951A (en) 1998-03-31 1999-11-30 Internatl Business Mach Corp <Ibm> Method and device for monitoring performance of program
US6012094A (en) 1996-07-02 2000-01-04 International Business Machines Corporation Method of stratified transaction processing
US6055492A (en) 1997-12-12 2000-04-25 International Business Machines Corporation System and method for providing trace information data reduction
US6108654A (en) 1997-10-31 2000-08-22 Oracle Corporation Method and system for locking resources in a computer system
US6112225A (en) 1998-03-30 2000-08-29 International Business Machines Corporation Task distribution processing system and the method for subscribing computers to perform computing tasks during idle time
US6125363A (en) 1998-03-30 2000-09-26 Buzzeo; Eugene Distributed, multi-user, multi-threaded application development method
US6128611A (en) 1998-04-30 2000-10-03 International Business Machines Corporation Internet-enabled generic application program for accessing hierarchical data
US6158024A (en) 1998-03-31 2000-12-05 International Business Machines Corporation Method and apparatus for structured memory analysis of data processing systems and applications
US6178440B1 (en) 1997-01-25 2001-01-23 International Business Machines Corporation Distributed transaction processing system implementing concurrency control within the object request broker and locking all server objects involved in a transaction at its start
US6199075B1 (en) 1997-05-30 2001-03-06 Sun Microsystems, Inc. Method and apparatus for generational garbage collection of a heap memory shared by multiple processors
US6233585B1 (en) 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US6338159B1 (en) 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US20020007363A1 (en) 2000-05-25 2002-01-17 Lev Vaitzblit System and method for transaction-selective rollback reconstruction of database objects
US20020016729A1 (en) 2000-06-19 2002-02-07 Aramark, Corporation System and method for scheduling events and associated products and services
JP2002055848A (en) 2000-08-11 2002-02-20 Omron Corp Program execution procedure and storage medium with the program execution procedure stored therein
US20020038332A1 (en) 1998-11-13 2002-03-28 Alverson Gail A. Techniques for an interrupt free operating system
US20020073103A1 (en) 2000-08-25 2002-06-13 Bottomley Thomas Mark Walter Memory garbage collection method and apparatus
US6438512B1 (en) 1999-09-28 2002-08-20 Convergys Cmg Utah, Inc. System and method for performance monitoring of application code
US6442572B2 (en) 1998-01-28 2002-08-27 International Business Machines Corporation Method of and computer system for performing a transaction on a database
US6449614B1 (en) 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US20030004970A1 (en) 2001-06-28 2003-01-02 Watts Julie Ann Method for releasing update locks on rollback to savepoint
US20030023655A1 (en) 2001-07-26 2003-01-30 Stepan Sokolov Method and apparatus to facilitate suspending threads in a platform-independent virtual machine
US20030061256A1 (en) 2001-04-19 2003-03-27 Infomove, Inc. Method and system for generalized and adaptive transaction processing between uniform information services and applications
US6553564B1 (en) 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US20030083912A1 (en) 2001-10-25 2003-05-01 Covington Roy B. Optimal resource allocation business process and tools
US6601233B1 (en) 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6625602B1 (en) 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
US6633897B1 (en) 1995-06-30 2003-10-14 International Business Machines Corporation Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler
US6651243B1 (en) 1997-12-12 2003-11-18 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees
US6654948B1 (en) 1999-10-12 2003-11-25 International Business Machines Corporation Methods and apparatus for partial and consistent monitoring of object-oriented programs and systems
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6662359B1 (en) 2000-07-20 2003-12-09 International Business Machines Corporation System and method for injecting hooks into Java classes to handle exception and finalization processing
US6662358B1 (en) 1997-12-12 2003-12-09 International Business Machines Corporation Minimizing profiling-related perturbation using periodic contextual information
US20030233394A1 (en) 2002-06-14 2003-12-18 Rudd Kevin W. Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US6681230B1 (en) 1999-03-25 2004-01-20 Lucent Technologies Inc. Real-time event processing system with service authoring environment
US6697802B2 (en) 2001-10-12 2004-02-24 International Business Machines Corporation Systems and methods for pairwise analysis of event data
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US20040068501A1 (en) 2002-10-03 2004-04-08 Mcgoveran David O. Adaptive transaction manager for complex transactions and business process
US6728955B1 (en) 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6728959B1 (en) 1995-08-08 2004-04-27 Novell, Inc. Method and apparatus for strong affinity multiprocessor scheduling
US20040093510A1 (en) 2002-11-07 2004-05-13 Kari Nurmela Event sequence detection
US6742016B1 (en) 2000-03-24 2004-05-25 Hewlett-Packard Devolpment Company, L.P. Request acceptor for a network application system and a method thereof
US6751789B1 (en) 1997-12-12 2004-06-15 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination
JP2004199330A (en) 2002-12-18 2004-07-15 Internatl Business Mach Corp <Ibm> Information processor, tracing processing method, program and recording medium
US20040142679A1 (en) 1997-04-27 2004-07-22 Sbc Properties, L.P. Method and system for detecting a change in at least one telecommunication rate plan
US20040148594A1 (en) 2003-01-24 2004-07-29 Stephen Williams Acquiring call-stack information
US20040162741A1 (en) 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US20040163077A1 (en) 2003-02-13 2004-08-19 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US20040178454A1 (en) 2003-03-11 2004-09-16 Toshikazu Kuroda Semiconductor device with improved protection from electrostatic discharge
US20040193510A1 (en) 2003-03-25 2004-09-30 Catahan Nardo B. Modeling of order data
US20040215614A1 (en) 2003-04-25 2004-10-28 International Business Machines Corporation Grid quorum
US20040215768A1 (en) 2002-10-02 2004-10-28 Yossi Oulu System and methods for monitoring application server performance
US20040216112A1 (en) 2003-04-23 2004-10-28 International Business Machines Corporation System and method for thread prioritization during lock processing
US20040220931A1 (en) 2003-04-29 2004-11-04 Guthridge D. Scott Discipline for lock reassertion in a distributed file system
US20040220932A1 (en) 2003-04-29 2004-11-04 Seeger James J Mounted filesystem integrity checking and salvage
US20040220933A1 (en) 2003-05-01 2004-11-04 International Business Machines Corporation Method, system, and program for managing locks and transactions
US20040268316A1 (en) 2003-06-26 2004-12-30 Fisher Joseph A System and method for facilitating profiling an application
US20050021354A1 (en) 2003-07-22 2005-01-27 Rainer Brendle Application business object processing
US6857120B1 (en) 2000-11-01 2005-02-15 International Business Machines Corporation Method for characterizing program execution by periodic call stack inspection
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
US6880086B2 (en) 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
US20050080806A1 (en) 2003-10-08 2005-04-14 Doganata Yurdaer N. Method and system for associating events
US20050086455A1 (en) 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for generating interrupts for specific types of instructions
US20050091663A1 (en) 2003-03-28 2005-04-28 Bagsby Denis L. Integration service and domain object for telecommunications operational support
CN1614555A (en) 2003-11-06 2005-05-11 国际商业机器公司 Apparatus and method for autonomic hardware assisted thread stack tracking
US20050102493A1 (en) 2003-11-06 2005-05-12 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
JP2005141392A (en) 2003-11-05 2005-06-02 Hitachi Ltd Apparatus and method for acquiring profile information
US6904594B1 (en) 2000-07-06 2005-06-07 International Business Machines Corporation Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US20050138443A1 (en) 2003-12-23 2005-06-23 Barnes Cooper Method for C state management
US20050149585A1 (en) 2004-01-05 2005-07-07 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
US20050155019A1 (en) 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US20050155018A1 (en) 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US20050166187A1 (en) 2004-01-22 2005-07-28 International Business Machines Corp. Efficient and scalable event partitioning in business integration applications using multiple delivery queues
US6931354B2 (en) 2003-11-13 2005-08-16 International Business Machines Corporation Method, apparatus and computer program product for efficient, large counts of per thread performance events
US6941552B1 (en) 1998-07-30 2005-09-06 International Business Machines Corporation Method and apparatus to retain applet security privileges outside of the Java virtual machine
US20050204349A1 (en) 2004-03-11 2005-09-15 Lewis Brian T. Dynamic management of compiled code
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US20050256961A1 (en) 2002-10-23 2005-11-17 Roee Alon Methods and systems for predictive change management for access paths in networks
US20050262130A1 (en) 2004-05-21 2005-11-24 Krishna Mohan Input data specification method and system in business-to-business integration
EP1603307A2 (en) 2004-06-04 2005-12-07 OpTier Ltd System and method for performance managment in a multi-tier computing environment
US20050273782A1 (en) 2004-06-03 2005-12-08 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US20050273757A1 (en) 2004-06-07 2005-12-08 Anderson Craig D Methods, systems, and computer program products for summarizing operational behavior of a computer program
US6976263B2 (en) 2001-11-19 2005-12-13 Lsi Logic Corporation Mechanism for encoding and decoding upgradeable RPC/XDR structures
US20060004757A1 (en) 2001-06-28 2006-01-05 International Business Machines Corporation Method for releasing update locks on rollback to savepoint
US6993246B1 (en) 2000-09-15 2006-01-31 Hewlett-Packard Development Company, L.P. Method and system for correlating data streams
US20060023642A1 (en) 2004-07-08 2006-02-02 Steve Roskowski Data collection associated with components and services of a wireless communication network
US20060031837A1 (en) 2004-08-05 2006-02-09 International Business Machines Corporation Thread starvation profiler
US7000047B2 (en) 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20060059486A1 (en) * 2004-09-14 2006-03-16 Microsoft Corporation Call stack capture in an interrupt driven architecture
US7020696B1 (en) 2000-05-20 2006-03-28 Ciena Corp. Distributed user management information in telecommunications networks
US20060072563A1 (en) 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US7028298B1 (en) 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
US20060080486A1 (en) 2004-10-07 2006-04-13 International Business Machines Corporation Method and apparatus for prioritizing requests for information in a network environment
US20060095571A1 (en) 2004-10-12 2006-05-04 International Business Machines (Ibm) Corporation Adaptively processing client requests to a network server
US7047258B2 (en) 2001-11-01 2006-05-16 Verisign, Inc. Method and system for validating remote database updates
US20060130001A1 (en) 2004-11-30 2006-06-15 International Business Machines Corporation Apparatus and method for call stack profiling for a software application
US20060136914A1 (en) 2004-11-30 2006-06-22 Metreos Corporation Application server system and method
US20060149877A1 (en) 2005-01-03 2006-07-06 Pearson Adrian R Interrupt management for digital media processor
US20060167955A1 (en) 2005-01-21 2006-07-27 Vertes Marc P Non-intrusive method for logging of internal events within an application process, and system implementing this method
US7093081B2 (en) 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
US20060184769A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Localized generation of global flush requests while guaranteeing forward progress of a processor
US20060212657A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method and system for page-out and page-in of stale objects in memory
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US20060218290A1 (en) 2005-03-23 2006-09-28 Ying-Dar Lin System and method of request scheduling for differentiated quality of service at an intermediary
US20060259911A1 (en) 2005-04-25 2006-11-16 Invensys Systems, Inc. Supporting both asynchronous and synchronous data transfers between production event information sources and a production information database
US20060282707A1 (en) 2005-06-09 2006-12-14 Intel Corporation Multiprocessor breakpoint
US20060282400A1 (en) 2005-06-10 2006-12-14 Muralidhar Kalavacharla Apparatus, system, and method for encapsulating logical units of work using business objects
US7162666B2 (en) 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US20070033589A1 (en) 2005-08-04 2007-02-08 Microsoft Corporation Controlling virtual time
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US7206848B1 (en) 2000-09-21 2007-04-17 Hewlett-Packard Development Company, L.P. Intelligently classifying and handling user requests in a data service system
US7222119B1 (en) 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
US20070150904A1 (en) 2005-11-15 2007-06-28 International Business Machines Corporation Multi-threaded polling in a processing environment
US20070169003A1 (en) 2006-01-12 2007-07-19 International Business Machines Corporation Selective profiling of program code executing in a runtime environment
US20070171824A1 (en) 2006-01-25 2007-07-26 Cisco Technology, Inc. A California Corporation Sampling rate-limited traffic
US20070220495A1 (en) 2006-03-16 2007-09-20 Chen Wen-Tzer T Method and apparatus for profiling execution of code using multiple processors
US20070220515A1 (en) 2006-01-19 2007-09-20 Dewitt Jimmie E Jr Method and Apparatus for Analyzing Wait States in a Data Processing System
US20070226139A1 (en) 2006-03-24 2007-09-27 Manfred Crumbach Systems and methods for bank determination and payment handling
US7296130B2 (en) 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US7321965B2 (en) 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US20080082761A1 (en) 2006-09-29 2008-04-03 Eric Nels Herness Generic locking service for business integration
US20080082796A1 (en) 2006-09-29 2008-04-03 Matthew Merten Managing multiple threads in a single pipeline
US20080091679A1 (en) 2006-09-29 2008-04-17 Eric Nels Herness Generic sequencing service for business integration
US20080091712A1 (en) 2006-10-13 2008-04-17 International Business Machines Corporation Method and system for non-intrusive event sequencing
US20080148299A1 (en) 2006-10-13 2008-06-19 International Business Machines Corporation Method and system for detecting work completion in loosely coupled components
US20080148241A1 (en) 2006-10-11 2008-06-19 Scott Thomas Jones Method and apparatus for profiling heap objects
US20080148240A1 (en) 2006-10-11 2008-06-19 Scott Thomas Jones Method and apparatus for call stack sampling to obtain information for analyzing idle states in a data processing system
US7398518B2 (en) 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
US20080177756A1 (en) 2007-01-18 2008-07-24 Nicolai Kosche Method and Apparatus for Synthesizing Hardware Counters from Performance Sampling
US20080196030A1 (en) 2007-02-13 2008-08-14 Buros William M Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system
US20080263325A1 (en) 2007-04-19 2008-10-23 International Business Machines Corporation System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
JP2008257287A (en) 2007-03-30 2008-10-23 Ntt Data Corp Program profiling device, program profiling method, and program
US20080307441A1 (en) 2007-06-07 2008-12-11 Kuiper Kean G System and Method for Call Stack Sampling Combined with Node and Instruction Tracing
US20090007075A1 (en) 2000-07-06 2009-01-01 International Business Machines Corporation Method and System for Tracing Profiling Information Using Per Thread Metric Variables with Reused Kernel Threads
US7474991B2 (en) 2006-01-19 2009-01-06 International Business Machines Corporation Method and apparatus for analyzing idle states in a data processing system
WO2009014868A2 (en) 2007-07-24 2009-01-29 Microsoft Corporation Scheduling threads in multi-core systems
US20090044198A1 (en) 2007-08-07 2009-02-12 Kean G Kuiper Method and Apparatus for Call Stack Sampling in a Data Processing System
US7496918B1 (en) 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US20090100432A1 (en) 2007-10-12 2009-04-16 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US20090106762A1 (en) 2004-08-12 2009-04-23 International Business Machines Corporation Scheduling Threads In A Multiprocessor Computer
US7529914B2 (en) 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US20090178036A1 (en) 2008-01-04 2009-07-09 Frank Eliot Levine Method and Apparatus for Call Stack Sampling Using a Virtual Machine
US20090187915A1 (en) 2008-01-17 2009-07-23 Sun Microsystems, Inc. Scheduling threads on processors
US20090187909A1 (en) 2008-01-22 2009-07-23 Russell Andrew C Shared resource based thread scheduling with affinity and/or selectable criteria
US7574587B2 (en) 2004-01-14 2009-08-11 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US20090204978A1 (en) * 2008-02-07 2009-08-13 Microsoft Corporation Synchronizing split user-mode/kernel-mode device driver architecture
US20090210649A1 (en) 2008-02-14 2009-08-20 Transitive Limited Multiprocessor computing system with multi-mode memory consistency protection
US7584332B2 (en) 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
US20090235247A1 (en) 2008-03-14 2009-09-17 Samsung Electronics Co., Ltd. Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method
US20090235262A1 (en) 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
US20090241095A1 (en) 2008-03-19 2009-09-24 International Business Machines Corporation Call Stack Sampling for Threads Having Latencies Exceeding a Threshold
US20090271549A1 (en) 2006-10-26 2009-10-29 International Business Machines Corp. Interrupt handling using simultaneous multi-threading
US20090292846A1 (en) 2008-05-21 2009-11-26 Kyu-Ho Park Method of interrupt scheduling
US20090300224A1 (en) 2008-06-02 2009-12-03 Microsoft Corporation Collection with local lists for a multi-processor system
US20100017789A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Selectively Obtaining Call Stack Information Based on Criteria
US20100017583A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US20100017581A1 (en) 2008-07-18 2010-01-21 Microsoft Corporation Low overhead atomic memory operations
US20100017804A1 (en) 2008-07-21 2010-01-21 International Business Machines Corporation Thread-to-Processor Assignment Based on Affinity Identifiers
US20100017447A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Managing Garbage Collection in a Data Processing System
US20100017584A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US7653895B1 (en) 2006-01-20 2010-01-26 Xilinx, Inc. Memory arrangement for message processing by a plurality of threads
US20100036981A1 (en) 2008-08-08 2010-02-11 Raghavendra Ganesh Finding Hot Call Paths
US7688867B1 (en) 2002-08-06 2010-03-30 Qlogic Corporation Dual-mode network storage systems and methods
US7716647B2 (en) 2004-10-01 2010-05-11 Microsoft Corporation Method and system for a system call profiler
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
US7779238B2 (en) 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US7788664B1 (en) 2005-11-08 2010-08-31 Hewlett-Packard Development Company, L.P. Method of virtualizing counter in computer system
US20100333071A1 (en) 2009-06-30 2010-12-30 International Business Machines Corporation Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines
US7921875B2 (en) 2007-09-28 2011-04-12 Kabushiki Kaisha Nagahori Shokai Fluid coupling
US20110289361A1 (en) * 2010-05-24 2011-11-24 International Business Machines Corporation Idle transitions sampling with execution context
US20110320173A1 (en) 2010-06-27 2011-12-29 International Business Machines Corporation Sampling with sample pacing
US20120191893A1 (en) 2011-01-21 2012-07-26 International Business Machines Corporation Scalable call stack sampling
US8381215B2 (en) 2007-09-27 2013-02-19 Oracle America, Inc. Method and system for power-management aware dispatcher
US8556795B2 (en) 2010-11-23 2013-10-15 Minnetronix Inc. Portable controller with integral power source for mechanical circulation support systems

Patent Citations (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930516A (en) 1989-10-30 1999-07-27 Texas Instruments Incorporated Real time power conservation for computers
US5305454A (en) 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
US5465328A (en) 1993-03-30 1995-11-07 International Business Machines Corporation Fault-tolerant transaction-oriented data processing
US5544318A (en) 1993-04-16 1996-08-06 Accom, Inc., Asynchronous media server request processing system for servicing reprioritizing request from a client determines whether or not to delay executing said reprioritizing request
US5473777A (en) 1993-07-19 1995-12-05 Moeller; Christopher P. Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
US5475845A (en) 1993-07-19 1995-12-12 Taligent, Inc. Wrapper system for interfacing an object-oriented application to a procedural operating system
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5404529A (en) 1993-07-19 1995-04-04 Taligent, Inc. Object-oriented interprocess communication system interface for a procedural operating system
EP0649084A1 (en) 1993-10-18 1995-04-19 Cyrix Corporation Microprocessor branch processing
US5768500A (en) 1994-06-20 1998-06-16 Lucent Technologies Inc. Interrupt-based hardware support for profiling memory system performance
EP0689141A2 (en) 1994-06-20 1995-12-27 AT&T Corp. Interrupt-based hardware support for profiling system performance
US5625359A (en) 1994-11-22 1997-04-29 Analog Devices, Inc. Variable sample rate ADC
US6633897B1 (en) 1995-06-30 2003-10-14 International Business Machines Corporation Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler
US6728959B1 (en) 1995-08-08 2004-04-27 Novell, Inc. Method and apparatus for strong affinity multiprocessor scheduling
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5751789A (en) 1995-11-13 1998-05-12 Bell Atlantic Network Services, Inc. SNID with wireless backup
US5764241A (en) 1995-11-30 1998-06-09 Microsoft Corporation Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior
US6012094A (en) 1996-07-02 2000-01-04 International Business Machines Corporation Method of stratified transaction processing
US6178440B1 (en) 1997-01-25 2001-01-23 International Business Machines Corporation Distributed transaction processing system implementing concurrency control within the object request broker and locking all server objects involved in a transaction at its start
US20040142679A1 (en) 1997-04-27 2004-07-22 Sbc Properties, L.P. Method and system for detecting a change in at least one telecommunication rate plan
US6199075B1 (en) 1997-05-30 2001-03-06 Sun Microsystems, Inc. Method and apparatus for generational garbage collection of a heap memory shared by multiple processors
US5913213A (en) 1997-06-16 1999-06-15 Telefonaktiebolaget L M Ericsson Lingering locks for replicated data objects
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6108654A (en) 1997-10-31 2000-08-22 Oracle Corporation Method and system for locking resources in a computer system
US6651243B1 (en) 1997-12-12 2003-11-18 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees
US6553564B1 (en) 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6055492A (en) 1997-12-12 2000-04-25 International Business Machines Corporation System and method for providing trace information data reduction
US6751789B1 (en) 1997-12-12 2004-06-15 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination
US6338159B1 (en) 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6662358B1 (en) 1997-12-12 2003-12-09 International Business Machines Corporation Minimizing profiling-related perturbation using periodic contextual information
US6442572B2 (en) 1998-01-28 2002-08-27 International Business Machines Corporation Method of and computer system for performing a transaction on a database
US6233585B1 (en) 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US6112225A (en) 1998-03-30 2000-08-29 International Business Machines Corporation Task distribution processing system and the method for subscribing computers to perform computing tasks during idle time
US6125363A (en) 1998-03-30 2000-09-26 Buzzeo; Eugene Distributed, multi-user, multi-threaded application development method
JPH11327951A (en) 1998-03-31 1999-11-30 Internatl Business Mach Corp <Ibm> Method and device for monitoring performance of program
US6158024A (en) 1998-03-31 2000-12-05 International Business Machines Corporation Method and apparatus for structured memory analysis of data processing systems and applications
US6002872A (en) 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6128611A (en) 1998-04-30 2000-10-03 International Business Machines Corporation Internet-enabled generic application program for accessing hierarchical data
US6941552B1 (en) 1998-07-30 2005-09-06 International Business Machines Corporation Method and apparatus to retain applet security privileges outside of the Java virtual machine
US20020038332A1 (en) 1998-11-13 2002-03-28 Alverson Gail A. Techniques for an interrupt free operating system
US6449614B1 (en) 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US6681230B1 (en) 1999-03-25 2004-01-20 Lucent Technologies Inc. Real-time event processing system with service authoring environment
US6601233B1 (en) 1999-07-30 2003-07-29 Accenture Llp Business components framework
US7028298B1 (en) 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
US6438512B1 (en) 1999-09-28 2002-08-20 Convergys Cmg Utah, Inc. System and method for performance monitoring of application code
US6654948B1 (en) 1999-10-12 2003-11-25 International Business Machines Corporation Methods and apparatus for partial and consistent monitoring of object-oriented programs and systems
US6728955B1 (en) 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6742016B1 (en) 2000-03-24 2004-05-25 Hewlett-Packard Devolpment Company, L.P. Request acceptor for a network application system and a method thereof
US6625602B1 (en) 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
US7020696B1 (en) 2000-05-20 2006-03-28 Ciena Corp. Distributed user management information in telecommunications networks
US6880086B2 (en) 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
US20020007363A1 (en) 2000-05-25 2002-01-17 Lev Vaitzblit System and method for transaction-selective rollback reconstruction of database objects
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US20020016729A1 (en) 2000-06-19 2002-02-07 Aramark, Corporation System and method for scheduling events and associated products and services
US20090007075A1 (en) 2000-07-06 2009-01-01 International Business Machines Corporation Method and System for Tracing Profiling Information Using Per Thread Metric Variables with Reused Kernel Threads
US6904594B1 (en) 2000-07-06 2005-06-07 International Business Machines Corporation Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US8117599B2 (en) 2000-07-06 2012-02-14 International Business Machines Corporation Tracing profiling information using per thread metric variables with reused kernel threads
US6662359B1 (en) 2000-07-20 2003-12-09 International Business Machines Corporation System and method for injecting hooks into Java classes to handle exception and finalization processing
JP2002055848A (en) 2000-08-11 2002-02-20 Omron Corp Program execution procedure and storage medium with the program execution procedure stored therein
US20020073103A1 (en) 2000-08-25 2002-06-13 Bottomley Thomas Mark Walter Memory garbage collection method and apparatus
US6993246B1 (en) 2000-09-15 2006-01-31 Hewlett-Packard Development Company, L.P. Method and system for correlating data streams
US7206848B1 (en) 2000-09-21 2007-04-17 Hewlett-Packard Development Company, L.P. Intelligently classifying and handling user requests in a data service system
US6857120B1 (en) 2000-11-01 2005-02-15 International Business Machines Corporation Method for characterizing program execution by periodic call stack inspection
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
US20030061256A1 (en) 2001-04-19 2003-03-27 Infomove, Inc. Method and system for generalized and adaptive transaction processing between uniform information services and applications
US7426730B2 (en) 2001-04-19 2008-09-16 Wre-Hol Llc Method and system for generalized and adaptive transaction processing between uniform information services and applications
US20030004970A1 (en) 2001-06-28 2003-01-02 Watts Julie Ann Method for releasing update locks on rollback to savepoint
US20060004757A1 (en) 2001-06-28 2006-01-05 International Business Machines Corporation Method for releasing update locks on rollback to savepoint
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US20030023655A1 (en) 2001-07-26 2003-01-30 Stepan Sokolov Method and apparatus to facilitate suspending threads in a platform-independent virtual machine
US6697802B2 (en) 2001-10-12 2004-02-24 International Business Machines Corporation Systems and methods for pairwise analysis of event data
US20030083912A1 (en) 2001-10-25 2003-05-01 Covington Roy B. Optimal resource allocation business process and tools
US7047258B2 (en) 2001-11-01 2006-05-16 Verisign, Inc. Method and system for validating remote database updates
US6976263B2 (en) 2001-11-19 2005-12-13 Lsi Logic Corporation Mechanism for encoding and decoding upgradeable RPC/XDR structures
US20030233394A1 (en) 2002-06-14 2003-12-18 Rudd Kevin W. Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7688867B1 (en) 2002-08-06 2010-03-30 Qlogic Corporation Dual-mode network storage systems and methods
US20040215768A1 (en) 2002-10-02 2004-10-28 Yossi Oulu System and methods for monitoring application server performance
US20040068501A1 (en) 2002-10-03 2004-04-08 Mcgoveran David O. Adaptive transaction manager for complex transactions and business process
US20050256961A1 (en) 2002-10-23 2005-11-17 Roee Alon Methods and systems for predictive change management for access paths in networks
US20040093510A1 (en) 2002-11-07 2004-05-13 Kari Nurmela Event sequence detection
US7398518B2 (en) 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
JP2004199330A (en) 2002-12-18 2004-07-15 Internatl Business Mach Corp <Ibm> Information processor, tracing processing method, program and recording medium
US7284238B2 (en) 2002-12-18 2007-10-16 International Business Machines Corporation Multithread tracing method and apparatus
US20040148594A1 (en) 2003-01-24 2004-07-29 Stephen Williams Acquiring call-stack information
US20040162741A1 (en) 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US20040163077A1 (en) 2003-02-13 2004-08-19 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US7114150B2 (en) 2003-02-13 2006-09-26 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US20070006168A1 (en) 2003-02-13 2007-01-04 Dimpsey Robert T Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US7222119B1 (en) 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
US20040178454A1 (en) 2003-03-11 2004-09-16 Toshikazu Kuroda Semiconductor device with improved protection from electrostatic discharge
US20040193510A1 (en) 2003-03-25 2004-09-30 Catahan Nardo B. Modeling of order data
US20050091663A1 (en) 2003-03-28 2005-04-28 Bagsby Denis L. Integration service and domain object for telecommunications operational support
US7278141B2 (en) 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US7000047B2 (en) 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20040216112A1 (en) 2003-04-23 2004-10-28 International Business Machines Corporation System and method for thread prioritization during lock processing
US20040215614A1 (en) 2003-04-25 2004-10-28 International Business Machines Corporation Grid quorum
US20040220932A1 (en) 2003-04-29 2004-11-04 Seeger James J Mounted filesystem integrity checking and salvage
US20040220931A1 (en) 2003-04-29 2004-11-04 Guthridge D. Scott Discipline for lock reassertion in a distributed file system
US20040220933A1 (en) 2003-05-01 2004-11-04 International Business Machines Corporation Method, system, and program for managing locks and transactions
US20040268316A1 (en) 2003-06-26 2004-12-30 Fisher Joseph A System and method for facilitating profiling an application
US20050021354A1 (en) 2003-07-22 2005-01-27 Rainer Brendle Application business object processing
US7321965B2 (en) 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US20050080806A1 (en) 2003-10-08 2005-04-14 Doganata Yurdaer N. Method and system for associating events
US20050086455A1 (en) 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for generating interrupts for specific types of instructions
JP2005141392A (en) 2003-11-05 2005-06-02 Hitachi Ltd Apparatus and method for acquiring profile information
CN1614555A (en) 2003-11-06 2005-05-11 国际商业机器公司 Apparatus and method for autonomic hardware assisted thread stack tracking
US20050102493A1 (en) 2003-11-06 2005-05-12 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US20050102673A1 (en) 2003-11-06 2005-05-12 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US7257657B2 (en) * 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US7458078B2 (en) 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US6931354B2 (en) 2003-11-13 2005-08-16 International Business Machines Corporation Method, apparatus and computer program product for efficient, large counts of per thread performance events
US20050138443A1 (en) 2003-12-23 2005-06-23 Barnes Cooper Method for C state management
US7624137B2 (en) 2004-01-05 2009-11-24 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
US20050149585A1 (en) 2004-01-05 2005-07-07 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7526757B2 (en) 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US20080189687A1 (en) 2004-01-14 2008-08-07 International Business Machines Corporation Method and Apparatus for Maintaining Performance Monitoring Structures in a Page Table for Use in Monitoring Performance of a Computer Program
US20050155019A1 (en) 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7093081B2 (en) 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
US7574587B2 (en) 2004-01-14 2009-08-11 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US8191049B2 (en) 2004-01-14 2012-05-29 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US20050155018A1 (en) 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US20050166187A1 (en) 2004-01-22 2005-07-28 International Business Machines Corp. Efficient and scalable event partitioning in business integration applications using multiple delivery queues
US20050204349A1 (en) 2004-03-11 2005-09-15 Lewis Brian T. Dynamic management of compiled code
US7296130B2 (en) 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US7162666B2 (en) 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US20050262130A1 (en) 2004-05-21 2005-11-24 Krishna Mohan Input data specification method and system in business-to-business integration
US7496918B1 (en) 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US7610585B2 (en) 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US20050273782A1 (en) 2004-06-03 2005-12-08 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
EP1603307A2 (en) 2004-06-04 2005-12-07 OpTier Ltd System and method for performance managment in a multi-tier computing environment
US20050273757A1 (en) 2004-06-07 2005-12-08 Anderson Craig D Methods, systems, and computer program products for summarizing operational behavior of a computer program
US7529914B2 (en) 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US7779238B2 (en) 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US20060023642A1 (en) 2004-07-08 2006-02-02 Steve Roskowski Data collection associated with components and services of a wireless communication network
US20060031837A1 (en) 2004-08-05 2006-02-09 International Business Machines Corporation Thread starvation profiler
US20090106762A1 (en) 2004-08-12 2009-04-23 International Business Machines Corporation Scheduling Threads In A Multiprocessor Computer
US7962913B2 (en) 2004-08-12 2011-06-14 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US20060059486A1 (en) * 2004-09-14 2006-03-16 Microsoft Corporation Call stack capture in an interrupt driven architecture
US7716647B2 (en) 2004-10-01 2010-05-11 Microsoft Corporation Method and system for a system call profiler
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
US20060072563A1 (en) 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US20060080486A1 (en) 2004-10-07 2006-04-13 International Business Machines Corporation Method and apparatus for prioritizing requests for information in a network environment
US20060095571A1 (en) 2004-10-12 2006-05-04 International Business Machines (Ibm) Corporation Adaptively processing client requests to a network server
US20060130001A1 (en) 2004-11-30 2006-06-15 International Business Machines Corporation Apparatus and method for call stack profiling for a software application
US20060136914A1 (en) 2004-11-30 2006-06-22 Metreos Corporation Application server system and method
US20060149877A1 (en) 2005-01-03 2006-07-06 Pearson Adrian R Interrupt management for digital media processor
US20060167955A1 (en) 2005-01-21 2006-07-27 Vertes Marc P Non-intrusive method for logging of internal events within an application process, and system implementing this method
US20060184769A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Localized generation of global flush requests while guaranteeing forward progress of a processor
US20060212657A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method and system for page-out and page-in of stale objects in memory
US7325108B2 (en) 2005-03-15 2008-01-29 International Business Machines Corporation Method and system for page-out and page-in of stale objects in memory
US20060218290A1 (en) 2005-03-23 2006-09-28 Ying-Dar Lin System and method of request scheduling for differentiated quality of service at an intermediary
US20060259911A1 (en) 2005-04-25 2006-11-16 Invensys Systems, Inc. Supporting both asynchronous and synchronous data transfers between production event information sources and a production information database
US20060282707A1 (en) 2005-06-09 2006-12-14 Intel Corporation Multiprocessor breakpoint
US7689867B2 (en) 2005-06-09 2010-03-30 Intel Corporation Multiprocessor breakpoint
US20060282400A1 (en) 2005-06-10 2006-12-14 Muralidhar Kalavacharla Apparatus, system, and method for encapsulating logical units of work using business objects
US20070033589A1 (en) 2005-08-04 2007-02-08 Microsoft Corporation Controlling virtual time
US7788664B1 (en) 2005-11-08 2010-08-31 Hewlett-Packard Development Company, L.P. Method of virtualizing counter in computer system
US20070150904A1 (en) 2005-11-15 2007-06-28 International Business Machines Corporation Multi-threaded polling in a processing environment
US20070169003A1 (en) 2006-01-12 2007-07-19 International Business Machines Corporation Selective profiling of program code executing in a runtime environment
US7925473B2 (en) 2006-01-19 2011-04-12 International Business Machines Corporation Method and apparatus for analyzing idle states in a data processing system
US20070220515A1 (en) 2006-01-19 2007-09-20 Dewitt Jimmie E Jr Method and Apparatus for Analyzing Wait States in a Data Processing System
US7474991B2 (en) 2006-01-19 2009-01-06 International Business Machines Corporation Method and apparatus for analyzing idle states in a data processing system
US20090083002A1 (en) 2006-01-19 2009-03-26 International Business Machines Corporation Method and Apparatus for Analyzing Idle States in a Data Processing System
US7653895B1 (en) 2006-01-20 2010-01-26 Xilinx, Inc. Memory arrangement for message processing by a plurality of threads
US20070171824A1 (en) 2006-01-25 2007-07-26 Cisco Technology, Inc. A California Corporation Sampling rate-limited traffic
US8018845B2 (en) 2006-01-25 2011-09-13 Cisco Technology, Inc Sampling rate-limited traffic
US7584332B2 (en) 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
US20070220495A1 (en) 2006-03-16 2007-09-20 Chen Wen-Tzer T Method and apparatus for profiling execution of code using multiple processors
US20070226139A1 (en) 2006-03-24 2007-09-27 Manfred Crumbach Systems and methods for bank determination and payment handling
US7587364B2 (en) 2006-03-24 2009-09-08 Sap Ag Systems and methods for bank determination and payment handling
US7921075B2 (en) 2006-09-29 2011-04-05 International Business Machines Corporation Generic sequencing service for business integration
US20080082796A1 (en) 2006-09-29 2008-04-03 Matthew Merten Managing multiple threads in a single pipeline
US20080091679A1 (en) 2006-09-29 2008-04-17 Eric Nels Herness Generic sequencing service for business integration
US20080082761A1 (en) 2006-09-29 2008-04-03 Eric Nels Herness Generic locking service for business integration
US20080148241A1 (en) 2006-10-11 2008-06-19 Scott Thomas Jones Method and apparatus for profiling heap objects
US20080148240A1 (en) 2006-10-11 2008-06-19 Scott Thomas Jones Method and apparatus for call stack sampling to obtain information for analyzing idle states in a data processing system
US20080148299A1 (en) 2006-10-13 2008-06-19 International Business Machines Corporation Method and system for detecting work completion in loosely coupled components
US20080091712A1 (en) 2006-10-13 2008-04-17 International Business Machines Corporation Method and system for non-intrusive event sequencing
US20090271549A1 (en) 2006-10-26 2009-10-29 International Business Machines Corp. Interrupt handling using simultaneous multi-threading
US7996593B2 (en) 2006-10-26 2011-08-09 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US8136124B2 (en) 2007-01-18 2012-03-13 Oracle America, Inc. Method and apparatus for synthesizing hardware counters from performance sampling
US20080177756A1 (en) 2007-01-18 2008-07-24 Nicolai Kosche Method and Apparatus for Synthesizing Hardware Counters from Performance Sampling
US20080196030A1 (en) 2007-02-13 2008-08-14 Buros William M Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system
JP2008257287A (en) 2007-03-30 2008-10-23 Ntt Data Corp Program profiling device, program profiling method, and program
US20080263325A1 (en) 2007-04-19 2008-10-23 International Business Machines Corporation System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
US7962924B2 (en) 2007-06-07 2011-06-14 International Business Machines Corporation System and method for call stack sampling combined with node and instruction tracing
US20080307441A1 (en) 2007-06-07 2008-12-11 Kuiper Kean G System and Method for Call Stack Sampling Combined with Node and Instruction Tracing
WO2009014868A2 (en) 2007-07-24 2009-01-29 Microsoft Corporation Scheduling threads in multi-core systems
US20090044198A1 (en) 2007-08-07 2009-02-12 Kean G Kuiper Method and Apparatus for Call Stack Sampling in a Data Processing System
US8132170B2 (en) 2007-08-07 2012-03-06 International Business Machines Corporation Call stack sampling in a data processing system
US8381215B2 (en) 2007-09-27 2013-02-19 Oracle America, Inc. Method and system for power-management aware dispatcher
US7921875B2 (en) 2007-09-28 2011-04-12 Kabushiki Kaisha Nagahori Shokai Fluid coupling
US20090100432A1 (en) 2007-10-12 2009-04-16 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US8117618B2 (en) 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US20090178036A1 (en) 2008-01-04 2009-07-09 Frank Eliot Levine Method and Apparatus for Call Stack Sampling Using a Virtual Machine
US8141053B2 (en) 2008-01-04 2012-03-20 International Business Machines Corporation Call stack sampling using a virtual machine
US20090187915A1 (en) 2008-01-17 2009-07-23 Sun Microsystems, Inc. Scheduling threads on processors
US8156495B2 (en) 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
US20090187909A1 (en) 2008-01-22 2009-07-23 Russell Andrew C Shared resource based thread scheduling with affinity and/or selectable criteria
US20090204978A1 (en) * 2008-02-07 2009-08-13 Microsoft Corporation Synchronizing split user-mode/kernel-mode device driver architecture
US20090210649A1 (en) 2008-02-14 2009-08-20 Transitive Limited Multiprocessor computing system with multi-mode memory consistency protection
US7996629B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Multiprocessor computing system with multi-mode memory consistency protection
US20090235262A1 (en) 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
US20090235247A1 (en) 2008-03-14 2009-09-17 Samsung Electronics Co., Ltd. Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method
US20090241095A1 (en) 2008-03-19 2009-09-24 International Business Machines Corporation Call Stack Sampling for Threads Having Latencies Exceeding a Threshold
US20090292846A1 (en) 2008-05-21 2009-11-26 Kyu-Ho Park Method of interrupt scheduling
US20090300224A1 (en) 2008-06-02 2009-12-03 Microsoft Corporation Collection with local lists for a multi-processor system
US20100017789A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Selectively Obtaining Call Stack Information Based on Criteria
US20100017584A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US20100017447A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Managing Garbage Collection in a Data Processing System
US8286134B2 (en) 2008-07-15 2012-10-09 International Business Machines Corporation Call stack sampling for a multi-processor system
US20100017583A1 (en) 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US20100017581A1 (en) 2008-07-18 2010-01-21 Microsoft Corporation Low overhead atomic memory operations
US20100017804A1 (en) 2008-07-21 2010-01-21 International Business Machines Corporation Thread-to-Processor Assignment Based on Affinity Identifiers
US20100036981A1 (en) 2008-08-08 2010-02-11 Raghavendra Ganesh Finding Hot Call Paths
US20100333071A1 (en) 2009-06-30 2010-12-30 International Business Machines Corporation Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines
US20110289361A1 (en) * 2010-05-24 2011-11-24 International Business Machines Corporation Idle transitions sampling with execution context
US20110320173A1 (en) 2010-06-27 2011-12-29 International Business Machines Corporation Sampling with sample pacing
US8556795B2 (en) 2010-11-23 2013-10-15 Minnetronix Inc. Portable controller with integral power source for mechanical circulation support systems
US20120191893A1 (en) 2011-01-21 2012-07-26 International Business Machines Corporation Scalable call stack sampling

Non-Patent Citations (161)

* Cited by examiner, † Cited by third party
Title
Abdel-Shafi, et al.; "Efficient User-Level Thread Migration and Checkpointing on Windows NT Clusters", Proceedings of The 3rd USENIX Windows NT Symposium, Jul. 12-13, 1999.
AIX Versions 3.2 and 4 Performance Tuning Guide, Performance Overview of the Virtual Memory Manager (VMM), Apr. 1997 http://nfosolutions.com/doc—link/C/a—doc—libiaixbman/prftungd/vmmov.htm, 8 pp.
Alexander, et al. A unifying approach to performance analysis in the Java enviroment, IBM Systems Journal, vol. 39, No. 1, 2000.
Alkalaj, et al. "Performance of Multi-Threaded Execution in a Shared-Memory Multiprocessor," IEEE, 1991, p. 330-333.
Amendment 1, Dec. 16, 2008, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 16 pp.
Amendment 1, Dec. 27, 2012, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 11 pp.
Amendment 1, Dec. 8, 2008, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 7 pp.
Amendment 1, Feb. 5, 2013, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 11 pp.
Amendment 1, Jan. 18, 2013, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 11 pp.
Amendment 1, Nov. 13, 2008, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 8 pp.
Amendment 1, Oct. 24, 2010, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 16 pp.
Amendment 1, Sep. 25, 2012, for U.S. Appl. No. 12/494,469, filed Jun. 30, 2009 by K.G. Kuiper et al., Total 15 pp.
Amendment 2, Apr. 13, 2009, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 9 pp.
Amendment 2, Apr. 14, 2011, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 12 pp.
Amendment 2, Jan. 3, 2013, for U.S. Appl. No. 12/494,469, filed on Jun. 30, 2009 by K.G. Kuiper et al., Total 12 pp.
Amendment 2, Jan. 8, 2009, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 18 pp.
Amendment 2, Jul. 3, 2013, for U.S. Appl. No. US12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 9 pp.
Amendment 2, Jun. 13, 2013, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by Kuiper et al., Total 7 pp.
Amendment 2, Jun. 16, 2009, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 13 pp.
Amendment 2, Jun. 19, 2013, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 12 pp.
Amendment 3, Aug. 11, 2009, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 24 pp.
Amendment 3, Mar. 18, 2014, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 9 pp.
Amendment 3, Nov. 15, 2009, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 12 pp.
Amendment 3, Sep. 8, 2011, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 16 pp.
Amendment 4, Mar. 1, 2010, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 22 pp.
Amendment 5, Aug. 19, 2010, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 11 pp.
Appeal Brief, Aug. 3, 2010, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 26 pp.
Appeal Brief, dated Dec. 13, 2011, for U.S. Appl. No. 12/235,302, 35 pp.
Appeal Brief, dated Jul. 23, 2012, for U.S. Appl. No. 12/173,053, 23 pp.
Appeal Brief. Mar. 26, 2012, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 22 pp.
Arpaci-Dusseau, Andrea Carol, "Implicit Coscheduling: Coordinated Scheduling with Implicit Information in Distributed Systems", ACM Transactions on Computer Systems, vol. 19, No. 3, Aug., 2011, pp. 283-331 [Also Total 49 pp.]
Asokan-et al.; "Providing Time-and Space-Efficient Procedure Calls for Asynchronous Software Thread Integration"; pp. 167-187; Sep. 2004.
Aug. 9, 2012, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 2 pp.
Aug. 9, 2012, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 1 p.
Aug. 9, 2012, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by a.R. Daherkar et al., Total 3 pp.
Aug. 9, 2012, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 2 pp.
Aug. 9, 2012, for U.S. Appl. No. 12/494,469, filed Jun. 30, 2009 by K.G. Kuiper et al., Total 4 pp.
Aug. 9, 2012, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 2 pp.
Aug. 9, 2012, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 2 pp.
Aug. 9, 2012, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 2 pp.
Barcia, R. and J. Brent, "IBM WebSphere Developer Technical Journal: Building SOA Solutions with the Service Component Architecture-Part 1", 26 Oct. 2005, Total.
Binder, "Portable and Accurate Sampling Profiling for Java", Software—Practice and Experience, vol. 36, Issue 6, May 2006, pp. 615-650.
Cao, Zhongbo, et al., "A Study of Java Virtual Machine Scalability Issues on SMP Systems," IEEE, Proceedings of the 2005 IEEE International Symposium on Workload Characterization, Oct. 6-8, 2005, pp. 119-128.
Cerami, Ethan, "Web Services Essentials", Feb. 2002, O'Reilly, First Edition, Total 286 pp.
Chanda et al., "Whodunit: Transactional Profiling for Multi-Tier Applications", ACM, EuroSys'07, Mar. 2007 Lisboa, Portugal, pp. 17-30.
Chen, Liang, et al., "Resource Allocation in a Middleware for Streaming Data," Middleware 2004 Companion, 2nd Workshop on Middleware for Grid Computing, ACM 2004, pp. 5-10.
Choi, et al. "Deterministic Replay of Java Mulithreaded Applications," ACM SIGMETRICS Symposium on Parallel and Distributed Tools (SPDT), Aug. 1998, pp. 48-59.
Corrected Notice of Allowability, Apr. 25, 2014, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 7 pp.
Corrected Notice of Allowability, Apr. 7, 2014, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 9 pp.
Dunlavey, "Performance Tuning with Instruction-Level Cost Derived from Call-Stack Sampling", ACM SIGPLAN Notices, vol. 42(8), Aug. 2007, pp. 4-8.
Examiner's Answer, Apr. 26, 2012, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 12 pp.
Examiner's Answer, Apr. 26, 2012, for U.S. Appl. No. 11/549,609,filed Oct. 13, 2006 by A.R. Daherkar et al., Total 15 pp.
Examiner's Answer, dated Feb. 27, 2012, for U.S. Appl. No. 12/235,302, 20 pp.
Examiner's Answer, Oct. 27, 2010, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 37 pp.
Final Office Action 1, Apr. 3, 2013, for Application No. US12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 55 pp.
Final Office Action 1, dated Jul. 20, 2011, for U.S. Appl. No. 12/235,302, 17 pp.
Final Office Action 1, dated May 2, 2012, for U.S. Appl. No. 12/173,053, 16 pp.
Final Office Action 1, Jan. 19, 2011, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 25 pp.
Final Office Action 1, Jul. 15, 2011, for U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K.G. Kuiper et al., Total 17 pp.
Final Office Action 1, Jun. 14, 2012, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 22 pp.
Final Office Action 1, Mar. 16, 2009, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 34 pp.
Final Office Action 1, Mar. 18, 2013, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 30 pp.
Final Office Action 1, Mar. 20, 2013, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 35 pp.
Final Office Action 1, May 14, 2009, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 42 pp.
Final Office Action 1, Nov. 6, 2012, for U.S. Appl. No. 12/494,469, filed Jun. 30, 2009 by K.G. Kuiper et al., Total 10 pp.
Final Office Action 2, Mar. 3, 2010, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 42 pp.
Final Office Action 2, May 28, 2010, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 49 pp.
Final Office Action 2, Oct. 24, 2011, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 23 pp.
Foong-et al.; "Architectural Characterization of Processor Affinity in Network Processing"; IEEE; 2005.
Froyd et al., "Low-Overhead Call Path Profiling of Unmodified, Optimized Code", ACM, ICS'05 Cambridge, Massachusetts, pp. 81-90.
Graham et al., "gprof: a Call Graph Execution Profiler," Proceedings of the 1982 SIGPLAN Symposium on Compiler Construction, Jun. 1982m pp. 120-126.
Harkema, et al. Performance Monitoring of Java Applications, Jul. 2002.
IBM, "Pacing support for Time Based Context Sampling," ip.com, Jan. 22, 2009.
IBM, "Process and Thread Sampling-Target Selection in Interrupt Mode," ip.com, Jul. 16, 2008.
International Search Report and Written Opinion dated Sep. 3, 2010 for International Application No. PCT/EP2010/058486, 8 pages.
International Search Report and Written Opinion for PCT/EP2011/057574 dated Aug. 2, 2011.
Korochkin, Dmitry, et al., "Experimental Performance Analysis of the Ada95 and Java Parallel Program on SMP Systems." SIGAda'02, Dec. 8-12, 2002, ACM, pp. 53-56.
Machine Translation of JP Publication No. 2002-055848, dated Feb. 20, 2002, 23 pp.
Machine Translation of JP Publication No. 2005-141392, dated Jun. 2, 2005, 18 pp.
Machine Translation of JP Publication No. 2008-257287, dated Oct. 23, 2008, 32 pp.
Mansouri-Samani, M. and M. Sloman, "A Configurable Even Service for Distributed Systems", © 1996 IEEE, Total 8 pp.
Meyer, K., B. Gas, and J. Doughty, "The Devolution of Functional Analysis", Oct. 26, 1982, Total 26 pp.
Milton, Scott; "Thread Migration in Distributed Memory Multicomputers", The Australian National University, Joint Computer Science Technical Report Series, Feb. 1998.
Mohanty-et al.; "A Hierarchical Approach for Energy Efficient Application Design Using Heterogeneous Embedded Systems"; pp. 243-255; Oct.-Nov. 2003.
Notice of Allowance 1 for U.S. Appl. No. 12/173,047, dated Sep. 11, 2013, 22 pp.
Notice of Allowance 1 for U.S. Appl. No. 12/824,217, dated Sep. 27, 2013, 20 pp.
Notice of Allowance 1, Aug. 28, 2013, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 17 pp.
Notice of Allowance 1, Jan. 14, 2009, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 9 pp.
Notice of Allowance 1, Jan. 17, 2013, for U.S. Appl. No. 12/494,469, filed Jun. 30, 2009 by K.G. Kuiper et al., Total 7 pp.
Notice of Allowance 1, Jul. 9, 2013, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by Kuiper et al., Total 11 pp.
Notice of Allowance 1, Oct. 25, 2011, for U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K.G. Kuiper et al., Total 51 pp.
Notice of Allowance 1, Sep. 7, 2010, for U.S. Appl. No. 11/536/962, filed Sep. 29, 2006 by E.N. Herness et al., Total 24 pp.
Notice of Allowance 2, dated Dec. 19, 2013, for U.S. Appl. No. 12/786,381, 10 pp.
Notice of Allowance 2, dated Dec. 9, 2013, for U.S. Appl. No. 13/011,621, 11 pp.
Notice of Allowance 2, Feb. 14, 2014, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 21 pp.
Notice of Allowance 2, May 15, 2009, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 11 pp.
Notice of Allowance 2, Nov. 20, 2013, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 35 pp.
Notice of Allowance 2, Nov. 23, 2010, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 27 pp.
Notice of Allowance 3, Jun. 22, 2009, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 10 pp.
Notice of Allowance 3, Mar. 20, 2014, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 20 pp.
Notice of Allowance, dated Jun. 13, 2013, for U.S. Appl. No. 12/173,053, 13 pp.
Notice of Allowance, dated Jun. 6, 2012, for U.S. Appl. No. 12/173,107, 10 pp.
Notice of Allowance,dated Nov. 12, 2013, for U.S. Appl. No. 12/494,469, filed Jun. 30,2009, 14 pp.
Notice of Appeal, Jan. 24, 2012, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 2 pp.
Notice of Appeal, Jun. 3, 2010, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 2 pp.
Office Action 1 for CN Application No. 201080010002.9, dated Sep. 4, 2013, 9 pp.
Office Action 1, dated Dec. 19, 2011, for U.S. Appl. No. 12/173,053, 15 pp.
Office Action 1, dated Feb. 2, 2011, for U.S. Appl. No. 12/235,302, 16 pp.
Office Action 1, dated Jan. 5, 2012, for U.S. Appl. No. 12/173,107, 21 pp.
Office Action 1, Feb. 17, 2011, for U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K.G. Kuiper et al., Total 38 pp.
Office Action 1, Jul. 27, 2010, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 22 pp.
Office Action 1, Jun. 27, 2012, for U.S. Appl. No. 12/494,469, filed Jun. 30, 2009 by K.G. Kuiper et al., Total 21 pp.
Office Action 1, Nov. 14, 2008, for U.S. Appl. No. 11/536,941, filed Sep. 29, 2006 by E.N. Herness et al., Total 18 pp.
Office Action 1, Nov. 21, 2011, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 19 pp.
Office Action 1, Oct. 18, 2012, for U.S. Appl. No. 12/824,217, filed Jun. 27, 2010 by F.E. Levine, Total 23 pp.
Office Action 1, Oct. 27, 2008, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 11 pp.
Office Action 1, Oct. 9, 2012, for U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 25 pp.
Office Action 1, Sep. 16, 2008, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 44 pp.
Office Action 1, Sep. 19, 2012, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 28 pp.
Office Action 2, Dec. 24, 2008, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 8 pp.
Office Action 3, Apr. 14, 2014, for U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 16 pp.
Office Action 3, Aug. 17, 2009, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 34 pp.
Office Action 3, Dec. 1, 2009, for U.S. Appl. No. 11/536,962, filed Sep. 29, 2006 by E.N. Herness et al., Total 39 pp.
Office Action 3, Jun. 8, 2011, for U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 39 pp.
Office Action, Apr. 25, 2013, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 45 pp.
Purser, et al. "A Study of Slipstream Processors," IEEE, 2000, pp. 269-280.
Reply Brief, dated Apr. 27, 2012, for U.S. Appl. No. 12/235,302, 5 pp.
Reply Brief, Dec. 27, 2010, for U.S. Appl. No. 11/549,613, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 11 pp.
Reply Brief, Jun. 25, 2012, for U.S. Appl. No. US11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 12 pp.
Response to Examination Report for GB Application No. 1212738.7, dated Dec. 11, 2013, 7 pp.
Response to Final Office Action 1, Oct. 17, 2011, for U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K. G. Kuiper et al., Total 8 pp.
Response to Final Office Action 1, Sep. 14, 2012, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K. G. Kuiper et al., Total 19 pp.
Response to Office Action 1, dated Apr. 20, 2011, for U.S. Appl. No. 12/235,302, 24 pp.
Response to Office Action 1, dated Mar. 19, 2012, for U.S. Appl. No. 12/173,053, 17 pp.
Response to Office Action 1, dated Mar. 30, 2012, for U.S. Appl. No. 12/173,107, 15 pp.
Response to Office Action 1, Feb. 20, 2012, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 17 pp.
Response to Office Action 1, May 17, 2011, for U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K.G. Kuiper et al., Total 13 pp.
Response to Office Action, Jul. 22, 2013, for U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 12 pp.
Rinard, M.C. And P.C. Diniz, "Eliminating Synchronization Bottlenecks Using Adaptive Replication", © 2003 ACM, ACM Transactions on Programming Languages and Sysems, vol. 25, Nol. 3, May 2003, pp. 316-359. [Also, Total 44 pp.].
Sun Java Real-Time System 2.0—01, Garbage Collection Guide, Nov. 21, 2007 http://download.oracle.com/javase/realtime/doc—2.0—u1/release/JavaRTSGarbageCollection.html, 12 pp.
Supplemental Notice of Allowance 1, dated Nov. 19, 2013, for U.S. Appl. No. 12/824,217, 6 pp.
Tam, David, et al., "Thread Clustering: Sharing-Aware Scheduling on SMP-CMP-SMT Multiprocesors," EuroSys'07, Mar. 21-23, 2007, pp. 47-58.
Tidwell, D., J. Snell, and P. Kulchenko, "Programming Web Services with SOAP", O'Reilly, First Edition Dec. 2001, ISBN: 0-596-00095-2, 216 pages, Total 225 pp.
Tullsen, et al. "Handling Long-latency Loads in a Simultaneous Multithreading Processor," IEEE, 2001, pp. 318-327.
U.S. Appl. No. 11/549,609, filed Oct. 13, 2006 by A.R. Daherkar et al., Total 3 pp.
U.S. Appl. No. 11/834,779, filed Aug. 7, 2007 by K. G. Kuiper et al., Total 2 pp.
U.S. Appl. No. 11/834,779.
U.S. Appl. No. 12/173,047, filed Jul. 15, 2008 by K.G. Kuiper et al., Total 2 pp.
U.S. Appl. No. 12/786,381, filed May 24, 2010 by K.G. Kuiper et al., Total 4 pp.
U.S. Appl. No. 12/824,217, filed Sep. 29, 2006 by E.N. Herness et al., Total 3 pp.
U.S. Appl. No. 13/011,621, filed Jan. 21, 2011 by K.G. Kuiper et al., Total 3 pp.
U.S. Patent Application with U.S. Appl. No. 13/011,621, filed Jan. 21, 2011, entitled "Scalable System Call Stack Sampling" invented by Kuiper, K.G. and F.E. Levine, Total 34 pp.
US 8,589,928, 11/2013, Kuiper et al. (withdrawn)
US Patent No. 6,002,872, dated Dec. 14, 1999, is an English language equivalent of JP11-327951, dated Nov. 30, 1999.
US Patent No. 7,284,238, dated Oct. 16, 2007, is an English language equivalent of JP2004-199330, dated Jul. 15, 2004.
US Patent No. 7,458,078, dated Nov. 25, 2008, is an English language equivalent of CN1614555, dated May 11, 2005.
US Publication No. 2005/0102673, dated May 12, 2005, is an English language equivalent of CN1614555, dated May 11, 2005.
Von Behren-et al.; "Capriccio: Scalable Threads for Internet Services"; ACM Digital Library; pp. 268-280; Oct. 2003.
Websphere 6.0.2, "Processing Events in a Sequence", IBM, [online], [Retrieved on May 12, 2011]. Retrieved from the Internet at , Oct. 7, 2005, Total 9 pp.
Websphere 6.0.2, "Processing Events in a Sequence", IBM, [online], [Retrieved on May 12, 2011]. Retrieved from the Internet at <URL: http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.wbit.help.wirin . . .>, Oct. 7, 2005, Total 9 pp.
Whaley, John, "A Portable Sampling-Based Profiler for Java Virtual Machines," Proceedings of the ACM 2000 Java Grande Conference, Jun. 3, 2000, pp. 78-87.

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US10230611B2 (en) * 2009-09-10 2019-03-12 Cisco Technology, Inc. Dynamic baseline determination for distributed business transaction
US9077610B2 (en) * 2009-09-10 2015-07-07 AppDynamics, Inc. Performing call stack sampling
US8935395B2 (en) * 2009-09-10 2015-01-13 AppDynamics Inc. Correlation of distributed business transactions
US8938533B1 (en) * 2009-09-10 2015-01-20 AppDynamics Inc. Automatic capture of diagnostic data based on transaction behavior learning
US9015316B2 (en) 2009-09-10 2015-04-21 AppDynamics, Inc. Correlation of asynchronous business transactions
US9015278B2 (en) 2009-09-10 2015-04-21 AppDynamics, Inc. Transaction correlation using three way handshake
US9015317B2 (en) * 2009-09-10 2015-04-21 AppDynamics, Inc. Conducting a diagnostic session for monitored business transactions
US9015315B2 (en) 2009-09-10 2015-04-21 AppDynamics, Inc. Identification and monitoring of distributed business transactions
US9037707B2 (en) 2009-09-10 2015-05-19 AppDynamics, Inc. Propagating a diagnostic session for business transactions across multiple servers
US10348809B2 (en) * 2009-09-10 2019-07-09 Cisco Technology, Inc. Naming of distributed business transactions
US9167028B1 (en) * 2009-09-10 2015-10-20 AppDynamics, Inc. Monitoring distributed web application transactions
US20140052857A1 (en) * 2009-09-10 2014-02-20 AppDynamics, Inc. Correlation of distributed business transactions
US20140068068A1 (en) * 2009-09-10 2014-03-06 AppDynamics, Inc. Performing call stack sampling
US20140068069A1 (en) * 2009-09-10 2014-03-06 AppDynamics, Inc. Conducting a diagnostic session for monitored business transactions
US9369356B2 (en) 2009-09-10 2016-06-14 AppDynamics, Inc. Conducting a diagnostic session for monitored business transactions
US9311598B1 (en) 2012-02-02 2016-04-12 AppDynamics, Inc. Automatic capture of detailed analysis information for web application outliers with very low overhead
US10505757B2 (en) 2014-12-12 2019-12-10 Nxp Usa, Inc. Network interface module and a method of changing network configuration parameters within a network device
US9582312B1 (en) * 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
US9612881B2 (en) 2015-03-30 2017-04-04 Nxp Usa, Inc. Method, apparatus, and system for unambiguous parameter sampling in a heterogeneous multi-core or multi-threaded processor environment
US10031786B2 (en) 2016-01-13 2018-07-24 International Business Machines Corporation Lockless multithreaded completion queue access
US10628352B2 (en) 2016-07-19 2020-04-21 Nxp Usa, Inc. Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device
US20200065077A1 (en) * 2018-08-21 2020-02-27 International Business Machines Corporation Identifying software and hardware bottlenecks
US10970055B2 (en) * 2018-08-21 2021-04-06 International Business Machines Corporation Identifying software and hardware bottlenecks
US11025357B1 (en) 2019-12-19 2021-06-01 Stmicroelectronics, Inc. Robust sensor timestamp management

Also Published As

Publication number Publication date
US20110307640A1 (en) 2011-12-15

Similar Documents

Publication Publication Date Title
US8843684B2 (en) Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799904B2 (en) Scalable system call stack sampling
US8799872B2 (en) Sampling with sample pacing
US10013332B2 (en) Monitoring mobile application performance
US7047521B2 (en) Dynamic instrumentation event trace system and methods
US9032254B2 (en) Real time monitoring of computer for determining speed and energy consumption of various processes
US8423972B2 (en) Collecting profile-specified performance data on a multithreaded data processing system
US8286134B2 (en) Call stack sampling for a multi-processor system
US20030135720A1 (en) Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
US9323578B2 (en) Analyzing wait states in a data processing system
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
US8132170B2 (en) Call stack sampling in a data processing system
US9418005B2 (en) Managing garbage collection in a data processing system
WO2020232871A1 (en) Method and device for microservice dependency analysis
US7062684B2 (en) Enabling tracing of a repeat instruction
US20080244546A1 (en) Method and system for providing on-demand profiling infrastructure for profiling at virtual machines
US8959400B2 (en) System, program, and method for collecting errors which occur while a user uses a computer
US8352946B2 (en) Managing migration ready queue associated with each processor based on the migration ready status of the tasks
US9176783B2 (en) Idle transitions sampling with execution context
US7506207B2 (en) Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
US20140101416A1 (en) Determining each stall reason for each stalled instruction within a group of instructions during a pipeline stall
US8307246B2 (en) Real time monitoring of computer for determining speed of various processes
US20120246518A1 (en) Operating a computer system
JP5014179B2 (en) OS priority changing device and OS priority changing program
US7475386B1 (en) Mechanism for disjoint instrumentation providers in a tracing framework

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JONES, SCOTT T.;KUIPER, KEAN G.;LEVINE, FRANK E.;AND OTHERS;REEL/FRAME:024521/0352

Effective date: 20100608

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8