CNDClockProfilerUserView
Clock Profiler (Thread Map) User View
User
- Any user that analyze performance of multi thread code. (Steven and Leon).
Issue the feature solves
- View the application's threads states in real time.
- View the application's threads states after the application finishing.
- View the application's threads stack dump at any execution moment.
Scenarios
- Use case "thread observer".
- User views the application's threads states in real time.
- User clicks the thread and see call stacks for all threads at the current moment (the current moment is marked with the vertical line in the threads area).
- User doesn't want to see call stacks for all the threads and selects check box "show selected thread stack only".
- User clicks the thread and see call stack of selected thread at selected moment.
- User understands that (s)he need to see call stack for more than just one selected thread to understand application behavior. (S)he selects several threads and filters out other threads by context menu action "show selected only threads". User unselects check box "show selected thread stack only".
- User views selected threads only.
- User clicks the thread area and see call stacks of selected threads at the current moment.
- Use case "thread viewer".
- User loads profiler data of the application.
- Other actions are same as in the "thread observer".
- Use case "thread analyzer".
- User loads profiler data of the application.
- User finds needed fragment of thread states.
- User want to have a precise navigation to call stacks in selected time interval.
- Navigate to nearliest call stacks before/after state changed. For example one thread is in state "waiting user synchronization". User wants to see threads stacks on beginning of waiting and on ending of waiting.
Feature specification
- View consists from the table and call stack area. Table has columns: thread name, states, summary.
- Thread name is created using the function name where the thread was created in or the called function name. (Is it allowed to switch name?)
- Content of the column "States" is the thread indicator area (graphical representation). It is a scrollable area with the horizontal bars. The area starts from time 0 (start application) and is stretched to current time or time of the end of application.
- Thread indicator in each time moment shows vertical bar graph of states distribution (wait, sleep, user mode, ...). So thread indicator represents continuous stack bars graph.
- Summary shows horizontal bar graph of overall thread states distribution and user time in percents. (Is it allowed to select another state for showing in percents?)
- Table supports short coloring (running, sleeping, waiting, blocking) and full coloring (all 13 supported states, see second screen shot).
- Table has field for filtering threads by name. Simple wild card is only supported.
- Table supports mode "show only running threads". In this mode table has only treads that are running in current visible time. (Is it possible to filter out waiting threads?)
- Table supports fit to screen mode (horizontal only). By default thread indicator area shows last 60 seconds of running application.
- Zoom in.
- Call stack area is a html-area that contains threads call stacks.
- Call stack area is filled by the click on the thread indicator area.
- Table supports multiple threads selection. Table popup menu allows to hide not selected threads/show all threads.
- On click call stack area is filled according to check box "show selected thread stack only":
- selected: the current thread stack is opened in call stack area.
- unselected: all threads stacks are opened in call stack area.
- When clicking on the border between 2 different states try to find more appropriate call stack.
- Call stack area supports modes: full stacks, only thread name and top of stack, stacks that has "user" functions.
- Sort thread table by name and by overall user time on the click. Default sorting is by name. (Is it allowed to select state for sorting? Is it possible to select several states for sorting?)
- Redesign coloring scheme of thread states. It should be intuitive understandable. Suggestion: use green-yellow-red pallet. Green pallet is used for normal uses/system working. Yellow - for waiting states. Red - for blocked (waiting on synchronizations) states. (Question: What is about sleeping? YourKit show it by cyan color sleeping mode. May be blue pallet is more suitable for waiting for CPU mode?)
Limitations
Screen shots
Prototype of thread view
Full MSA
State tooltip
Summary tooltip





