EP0777181B1

System and method for profiling code on symmetric multiprocessor architectures

Abstract

This record has no abstract on file.

EP0777181B1, drawing sheet 1
Sheet 1 of 5

Term

Term ended

Expired 27 November 2016, 9.8 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

10 claims: 4 independent, 6 dependent

  1. 1
    A method of profiling a process having a plurality of threads (110,112-115) executing on a computer system, comprising:allocating a memory storage area (125-128) within the computer system for each thread (110,112-115), each memory storage area having a plurality of memory cells (140-147), wherein each memory cell is associated with a particular thread of the plurality of threads;registering a parent thread (110) with a plurality of child threads (112-115), the parent and plurality of child threads selected from the plurality of threads;calculating, by each child thread, a delta (120-123) for a particular code. region of the process;and storing, by each child thread, the delta in a first memory cell associated with the child thread and in a second memory cell associated with the registered parent thread.
  2. 4
    The method of claims 1, wherein the registering step further comprises the steps of:registering the parent thread (110) with a parallel support layer of the computer system;and spawning the plurality of child threads (112-115) from the parallel support layer.
  3. 6
    A profiler for profiling the execution of a process having a plurality of threads (110,112-115) on a computer system having a memory (125-128) and a plurality of CPUs, comprising:means for allocating memory storage areas (125-128) within the memory for each of the plurality of threads (110,112-115), each memory storage area having a plurality of memory cells (140-147), wherein each memory cell is associated with a particular thread of the plurality of threads;a parallel support layer for spawning a plurality of child threads (112-115) on behalf of a parent thread (110) and for registering the parent thread with the child threads, wherein the parent and child threads are a subset of the plurality of threads and each child thread is associated with a different CPU;sampling means for sampling the CPU associated with each child thread (112-115) to determine a performance metric for each child thread;and storing means for storing the performance metric for each child thread (112-115) in the storage area (125-128) corresponding to that child thread in a first memory cell associated with the child thread and a second memory cell associated with registered parent thread.
  4. 10
    A profiler for profiling a process having a plurality of threads (110,112-115) executing on a computer system having a memory, comprising:allocating means for allocating a memory storage area (125-128) in the memory for each thread, each memory storage area having a plurality of memory cells (140-147), wherein each memory cell is associated with a particular thread of the plurality of threads;registering means for registering a parent thread (110) with a plurality of child threads (112-115), the parent thread and plurality of child threads selected from the plurality of threads;calculating means for calculating, for each child thread, a delta (120,123) for a particular code region of the process;storing means for storing, for each child thread, the delta in a first memory cell assoiated with the child thread and a second memory cell assoiated with the registered parent thread;and wherein the registering means includes: a parallel support layer for allocating child threads;extensions of the parallel support layer for registering a parent thread with the allocated child threads;and wherein the calculating mans further comprises: first sampling means for sampling a performance metric for each child thread (112-115) at a beginning of the code region to determine a first value;second sampling means for sampling the performance metric for each child thread at an end of the code region to determine a second value;and means for calculating, for each of the child threads (112-115), a delta (120123) from the first and second values.