Profiling of real-time multithreaded applications

I am evaluating Ants on a large multi-threaded application with some multimedia processing that has to be done in real-time. It seems that Ants reports innocent methods on top, hiding the real CPU burners. The problem is that the "innocent" methods are synchronization methods, which use Sleep or Wait and do not consume much CPU. Ants, however counts this time equally, making to look them "heavy."

To find processing bottlenecks I am interested in counting only the CPU time used rather than the wall-clock time. Is there any way to do this with Ants?

Comments

  • Hi there,

    I'm afraid that the current version of ANTS Profiler only measures wall-clock time. We would like to include cpu time in the next version. Thanks for your comments.

    Tom Harris

    Red Gate Software Ltd
  • Just for my understanding:
    Does it mean that also task preemption (next to Wait/Sleep) is not (yet) accounted for? In other words, if a task T1 executing a method M1 is preempted by another task T2 before M1 is finished, the timing reported for this specific execution of M1 will be the actual exectution time (CPU time) of M1 plus the time interval spent by T2?
  • Hi,

    I think you are correct. Scenario is as follows - 2 threads are running, 1 low priority and 1 high prioirty. The low priority thread starts a method, but then execution switches to the high priority thread which runs an intensive method that executes for a long time. Eventually execution switches back to the low prioirty thread. The time reported for the low prioirty thread is still the 'wall-time' from start to finish and so will include all the time spent executing the method in the other thread.

    This is a limitation that we would like to eliminate for AP version 3.

    Many thanks,

    Tom Harris

    Red Gate Software
Sign In or Register to comment.