Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tracecompass-dev] UI for external analyses

Hi Alex,

Let's just forget about the Critical Path case for now, we could argue forever. It works but not in the perfect user-friendly way, we'll see how it evolves and put it somewhere then.

On 23/02/16 03:37 PM, Alexandre Montplaisir wrote:


On 2016-02-23 11:11 AM, Genevieve Bastien wrote:
Hi Alex,

This is the 2nd of 2 replies. The other one should be read first.

On 2016-02-22 15:51, Alexandre Montplaisir wrote:


[...]


I discussed this a bit more with some colleagues, and and we realized the list of Dynamic analyses is not really useful for the end-user ; what they use is the list of Views they can open, which are shown currently under each analysis they belong to. But the user doesn't have to know that the Control Flow view comes from the Kernel analysis, they are only interested in the output.

So, what if we stopped showing the (dynamic) analyses altogether? A big advantage is that we could use the name "Analysis" for the only type of analyses the user will care about: the static ones! So the tree could look like this:



trace
 +- Views
 |   +- Control Flow view
 |   +- Resource view
 |   +- CPU Usage view
 +- Analyses
 |   +- LTTng-Analyses CPU Top
 |   +- LTTng-Analyses IO Top
 |   +- Critical Path analysis
 +- Reports
     +- CPU Top Report 1
     +- CPU Top Report 2
     +- IO Top Report 1
     +- Critical Path Report 1


In the code we could still refer to dynamic/static analyses, but the only analyses we would show to the user would be the static ones, since they are the only one they can act upon. How does it sound?

Yes to displaying the views directly! Ideally they would not even be under the trace (like in other trace viewing tools) and even show thumbnails (that's on my wishlish). Anyway, what's interesting here is that views are one type of output (the only type of output available in trace compass so far).

Ok, I am working at the moment on adding new nodes in that tree for the new static analyses and reports. I was going to keep a "Dynamic analyses" sub-tree for the moment, but should I go ahead, remove the list of analyses and just list the views?
I'd say yes for a start. You can google "Windows performance analyzer" and look at images, the way they display their view is interesting. But that's for later probably.


So here's a thought. Maybe what's under "Analyses" should be another type of output, linked to the corresponding [parameterized] analysis. And after one of those output is generated, they would be saved under a trace's supplementary files and appear under report (that behavior could be defined in the new [something]Output implements IAnalysisOutput class).

Dynamic views and reports don't behave the same, I am not sure if both should be IAnalysisOutput's. Today the only IAnalysisOutput we have are dynamic views. I remember we often gave the "command line output" example as another possible type of analysis output, but in retrospect, that would fit better as the output of a static analysis, so a report.
From my point of a view, a report is what was meant as another type of analysis output. But I guess at this point, I would need to see some code to be a better judge. Maybe what I think a report is is not what you think/know it is.


I think we all know what we want, it's just a matter of deciding what IAnalysisOuput actually means ;)

And yes, reports could be saved as trace supplementary files, that'd be the perfect place for that.


The critical path view would be under the Views header, but the various pinned instances of it could appear under the "Reports" section. But in the critical path case, (unlike your analyses/reports? or at least my idea when I think of a report?), when you close the view window, the data is not saved and you have to re-do the analysis if you want to see the critical path again.

As I said in my previous email, I don't think the critical path view should be considered a dynamic view eventually. You would run a static analysis (what will be called "Analysis" in the UI) and it generates the report. So if you run it multiple times for different threads, you would obtain something like this:


trace
 +- Views
 |   +- Control Flow view
 |   +- Resource view
 |   +- CPU Usage view
 +- Analyses
 |   +- LTTng-Analyses CPU Top
 |   +- LTTng-Analyses IO Top
 |   +- Critical Path analysis
 +- Reports
     +- Critical Path for TID 1000
     +- Critical Path for TID 1001
     +- Critical Path for TID 1002


When you first open the trace, you get this tree without anything under Reports. You still have full discoverability of what can be done with your trace. The things under Views are readily available because it was already pre-computed (the dynamic analyses have run, or will be run lazily). The things under Analyses require some parameters, so they are only run as the user requests it. If the user runs the Critical Path analysis, he will see "Critical Path for TID 1000" showing up. We could perhaps open new reports automatically, we'll have to see.

Does that clarify a bit what I mean by "report"? ;)
I think it does. So a report is not "just" a textual output that you can print on a 8 1/2 x 11 page. A report can contain views or rather viewers, xy-charts, tree viewers, etc that can be dynamic with time selection, etc. but statically pinned to some user action/selection that parameterized its execution. "Report" might not be the right word again, but having no other suggestion, you can keep it as good enough.

It seems we agree on the analyses/views separation, as far as LTTng-analyses are concerned. For the rest, I need more information to continue this discussion productively. See what a "report" really is. I'll see you on gerrit or github ;-)

Cheers,
Geneviève



Back to the top