Elapsed times between execution points of a thread are determined based on
start times and stop times associated with the execution points. For each
elapsed time, it is determined whether the thread was idle during the
elapsed time by comparison of the elapsed time to a first threshold
value. Each elapsed time is reduced to a selected value during which the
thread was idle. A value indicative of processor usage by the thread is
determined as a function of the elapsed times.