dotTrace 2016.2 Help

Interval Filters

Interval Filters is a set of separate filters which represent particular events related to the profiled application.

The idea of Interval Filters is "Select all time intervals where a certain event takes place". For example, if you want to analyze the cause of UI freezes, you can leave only time intervals where freezes took place by choosing the UI Freeze event in Interval Filters.

Time intervals selected by Interval Filters may overlap within one thread. For example, it is obvious that UI Freezes can take place on the main thread when it runs User Code. If you apply two or more filters with overlapping intervals, the resulting time interval will be their intersection. Thus, if you simultaneously apply the UI Freezes and User Code filters, the resulting filter will be "Select all time intervals where the user code was running during the UI freeze".

dotTrace distinguishes the following types of events:

  • User Code
    User code* is executing.
    * User methods and system methods called from user methods.
  • UI Freeze
    User interface is not responding.
  • File I/O
    File I/O operation is performed. This includes reading from and writing to physical disk and system cache.
  • Background GC
    Background garbage collection is performed. This event could take place only on GC threads. Learn more about GC types in the Blocking GC section.
  • Lock Contention
    A thread waits for an exclusive access to a synchronization object.
  • JIT Compilation
    Just-in-time compilation is performed.
  • SQL Queries
    Communication with SQL server is performed.
  • Incoming HTTP Requests
    HTTP requests are processed.

pos_1 Interval event name.

pos_2 Total time the event lasted on selected threads.
Note that UI freezes take place only on the UI thread as well as background GCs are performed only by GC threads. Therefore, in case of UI Freeze and Background GC events, their time will be calculated only if the corresponding UI or GC threads are selected.

pos_3 The percentage of time the event lasted relative to the total selected time.

For example, your application has two threads: Main Thread and Thread#1. Profiling lasted 50 ms. During the profiling, there were two UI freezes: 10 ms and 20 ms long. Let us suppose, the Interval Filters for these two threads looks like follows:

User Code 95 ms 95.00%
UI Freeze 30 ms 30.00%

Total UI freeze time is 30 ms - a sum of two freeze intervals on the Main thread. The User Code value of 95% tells us that both threads almost do not run system code. But this value does not give us any clue on contribution of each thread to the final User Code value. To find out the value for a particular thread, you must select only this thread on the Threads diagram.

To apply the Interval Filters filter:

  • Check the desired event(s) in the filter.

After you select an event, other filters will show data only for the time intervals where the event took place.

Last modified: 15 December 2016