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* is executing.
* User methods and system methods called from user methods.
User interface is not responding.
File I/O operation is performed. This includes reading from and writing to physical disk and system cache.
Background garbage collection is performed. This event could take place only on GC threads. Learn more about GC types in the Blocking GC section.
A thread waits for an exclusive access to a synchronization object.
Just-in-time compilation is performed.
Communication with SQL server is performed.
Incoming HTTP Requests
HTTP requests are processed.
Interval event name.
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.
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.