-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hide "analyses" that do not provide value to the user #296
Comments
Thanks for raising this issue. It gives us some valuable feedback. I'd like give some background information about this topic. The available analysis are provided by the trace server when using the trace server command below [1]. The theia-trace-extension is just showing what was returned from the server. Some of the providers available on the server are not implemented on the client side (i.e. type DATA_TREE e.g. function duration statistics). Some others don't have limited support on the client site (e.g. XY charts). Some others don't seem to work well.
[1] https://theia-ide.github.io/trace-server-protocol/#operation/getOutputs |
Is this summary correct? : The list under "Available analyses" is the result of a "get all available analysis data sources" call to the server, but not all the corresponding visualisations are implemented in the front end.
If this is simple to do, that would be perfect. Because then the front end would never request data it can't correctly visualize. |
Yes, as a first step we can do that in the trace server. Then we can reassess if there is more to do. |
Wouldn't it be better to do the filtering in the frontend since that's where the missing code is? My understanding is that the server returns a list of all available data providers, but that the associated visualisations are not all implemented on the front end. If we filter handpicked data providers on the server side because of the front end, we're breaking scope. |
I see possible two issues.
I suspect this issue needs to be attacked on both sides. |
Here is the current strategy for resolving this issue (updated). Basically:
Server side
The initial patch that removed analyses by deleting the data providers was rejected because:
Based on these points, we're changing our approach and will fix the views for the Theia front end rather than remove them:
Client sideAny views where the analysis works but can't be visualized properly because of features missing in the front end should be filtered in the front end.
|
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views.(tested with type Data_tree fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views.(tested with type Data_tree) Fixes theia-ide#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
How about flat out deleting the DataProviderFactory... that way we don't need to implement anything extra? less code to maintain. ;) |
I think we should go with this solution. I'll update the original comment. |
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. fixes eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. Contributes towards fixing eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
After doing some tests and checking the views that were not working, I came up with this result The views do not work well :
Here are the views that work well :
|
Nice work! Looks like we're on good footing to unfuddle this.
…--Stefan
On Tue, Jun 15, 2021 at 10:45 AM IbrahimFradj ***@***.***> wrote:
After doing some tests and checking the views that were not working, I
came up with this result
Views Problem Solution
Irq Analysis – latency vs time Does not work with a single trace( the
view stay in analysis running), you need a folder with several traces for
it to work. the server should not send this view to the client side if it
is just a single trace. filter by id and number of traces
Futex contention analysis- latency vs time Does not work with a single
trace ( the view stay in analysis running), you need a folder with several
traces for it to work. the server should not send this view to the client
side if it is just a single trace. filter by id and number of traces
System call latency – latency vs time Does not work with a single trace (
the view stay in analysis running) , you need a folder with several traces
for it to work. the server should not send this view to the client side
if it is just a single trace. filter by id and number of traces
Ust memory latency vs time Does not work, does not give results. the view
is empty remove this view from the server to not send it to the client
according to its Id
Memory usage Does not work, does not give results. it just shows a red
line remove this view from the server to not send it to the client
according to its Id
Flame chart Does not work, does not give results. the view is empty remove
this view from the server to not send it to the client according to its Id
Event Matching Latency - Latency vs Time Does not work, does not give
results. it stay all the time in analysis running unless you refresh the
page remove this view from the server to not send it to the client
according to its Id
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#296 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAIOFFRBQKMGMED2DMRQAWDTS5YQ3ANCNFSM4Y42HRMQ>
.
|
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. Contributes towards fixing #296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
Hey, we have one thing I forgot to mention, the viewer does not support "scatter" charts. Even if the dataproviderfactory is gone, on the view side we should filter it out too. Example: Lttng ust callstack: latency vs time shows data but it's broken. |
So we've tried to solved the issue by deleting the data providers factories. We've decided to change the approach and solve the issue with the handlers of the XY views. |
Currently, XY charts are missing y-axis labels and units so it is impossible for users to learn how to interpret the data shown in these charts using the tool. Without a sense of scale, XY charts have little analysis use and mainly distract users from views that are ready to be used (ex. Timegraph views, Events table). Filter XY chart views to correct this. For developers who need to test or demonstrate new features for XY charts, the condition that filters XY charts (value.type !== 'TREE_TIME_XY') can be temporarily removed to allow testing XY chart features. Fixes eclipse-cdt-cloud#296 Signed-off-by: Erica Bugden <erica.bugden@gmail.com>
I looked a bit closer which XY charts don't really work in the theia-trace-extension and found the following thing:
In all other XY charts, like the Histogram, the series have a common x axis, where each series have number of pixel (x,y) pairs. These type of XY work quite well and should be kept. What then non-working XY charts of the Trace Compass Server above have in common is that they are created the same way, and are all scatter charts with non-common-x-axis for each series. That means drawing series with non-common-x-axis are not working at the moment and should be filtered out on the client side. The issue is that Data Provider Descriptor doesn't distinguish between both types, it only knows about chart type Another thing in common, is that all have IDs that start with How would you feel to filter them out by ID even if this only works for the Trace Compass specific server? |
All latency scatter XY charts have in common that each series don't have a common x axis in comparison to the Histogram which have multiple series where each series have the same x values the same number of y-values. The theia-traceviewer currently doesn't have support of drawing such scatter charts properly and should be hidden. The data provider descriptor, however, doesn't provide a way to determine if it's a xy-chart with common x-Axis or not, and hence it's not possible to generically hide such graphs. This PR hides such graphs based on the data provider ID, which start in the Trace Compass case all with org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.scatter.dataprovider. Even if this is Trace Compass server specific, it will improve the UX for such users. This stop gap implementation will be removed once the front-end properly supports such graphs or there is a generic way to filter-out unwanted data provider. Contributes to fixing of eclipse-cdt-cloud#296 Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
@bhufmann Thank you for looking into this! Your comments about which analyses don't work seem consistent with a discussion I had with @arfio last week (I'll put the notes below for reference).
I'm ok with this, but it does feel like a hack since the client is supposed to be server agnostic.
Which charts work?Notes from recent discussion with @arfio about which charts aren't working well.
|
Yes, it's a hack. I don't really like it myself and it makes me cringe. I don't see a better "quick workaround" right now, before they are actually implemented.
Yes, it totally makes sense. I could filter it out on the server as well, but other clients would miss out.
The information that it's a non-common-x-axis, a scatter chart etc. is part of the series model when performing the fetchXY() TSP call. But then it's to late to filter out in the available analysis view.
There is only the LTTng UST Flame chart and LTTNg UST Flame chart (Incubator) both work. The server recently updated to fix a problem we had. I don't see any other Flame Chart, or do I missing something.
These ones should stay. Each series in it have a common-x-axis as I described earlier. Short-comings about y-axis info hopefully can be fixed shortly.
Yes, this patch will help to notify if the trace has no data. If it has data, it will work as well like the Histogram Finally, in every case we need to remove the event matching latency vs time one, because it's always empty. |
I just merged a patch in the server to not send the |
Would this remove the Event Matching Analysis in Trace Compass as well? I thought the reason we hadn't filtered data providers earlier was because it would remove the analysis from TC even though it worked fine there. Thank you for taking the time to update this issue with related changes made in another repo. It is super useful and appreciated! |
@arfio Could you clarify what problems you were observing with the Flame Chart and check whether they are still issues? |
No, it is still available in Trace Compass (Eclipse version) as before. It's filtered out in the Trace Server at the endpoint level. |
All latency scatter XY charts have in common that each series don't have a common x axis in comparison to the Histogram which have multiple series where each series have the same x values the same number of y-values. The theia-traceviewer currently doesn't have support of drawing such scatter charts properly and should be hidden. The data provider descriptor, however, doesn't provide a way to determine if it's a xy-chart with common x-Axis or not, and hence it's not possible to generically hide such graphs. This PR hides such graphs based on the data provider ID, which contain the string "scatter" in it the Trace Compass case all with org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.scatter.dataprovider. Even if this is Trace Compass server specific, it will improve the UX for such users. This stop gap implementation will be removed once the front-end properly supports such graphs or there is a generic way to filter-out unwanted data provider. Contributes to fixing of eclipse-cdt-cloud#296 Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
All latency scatter XY charts have in common that each series don't have a common x axis in comparison to the Histogram which have multiple series where each series have the same x values the same number of y-values. The theia-traceviewer currently doesn't have support of drawing such scatter charts properly and should be hidden. The data provider descriptor, however, doesn't provide a way to determine if it's a xy-chart with common x-Axis or not, and hence it's not possible to generically hide such graphs. This PR hides such graphs based on the data provider ID, which contain the string "scatter" in it the Trace Compass case all with org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.scatter.dataprovider. Even if this is Trace Compass server specific, it will improve the UX for such users. This stop gap implementation will be removed once the front-end properly supports such graphs or there is a generic way to filter-out unwanted data provider. Contributes to fixing of eclipse-cdt-cloud#296 Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
All latency scatter XY charts have in common that each series don't have a common x axis in comparison to the Histogram which have multiple series where each series have the same x values the same number of y-values. The theia-traceviewer currently doesn't have support of drawing such scatter charts properly and should be hidden. The data provider descriptor, however, doesn't provide a way to determine if it's a xy-chart with common x-Axis or not, and hence it's not possible to generically hide such graphs. This PR hides such graphs based on the data provider ID, which contain the string "scatter" in it the Trace Compass case all with org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.scatter.dataprovider. Even if this is Trace Compass server specific, it will improve the UX for such users. This stop gap implementation will be removed once the front-end properly supports such graphs or there is a generic way to filter-out unwanted data provider. Contributes to fixing of #296 Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
#508 was merged and at the moment no scatter charts are visible in the trace viewer. |
By the way, the fix for Bug 576647 will make sure that the latency scatter chart data providers won't return status FAILED while the analysis is still running. Once scatter charts are supported in the front-end again, the views will be populated properly and won't show the spinning wheel indefinitely. |
I'm ok to close it. |
if there is an analysis that does not show anything in the view because it is not implemented, I do not show it in the list of available views. Contributes towards fixing eclipse-cdt-cloud#296 Signed-off-by: Ibrahim Fradj <ibrahim.fradj@ericsson.com>
Last week we ran some evaluative user research sessions. We used the "concurrent think aloud protocol" to understand and start to measure how easy or hard it is for experienced developers to perform basic tasks relating to tracing. Nutshell: these participants were not able to complete most tasks successfully without multiple hints and coaching. Even after they received several hints and managed to load the previously captured traces, they still faced other hurdles (see one example below). Seeing the hurdles more clearly is the first step to removing them and I hope these observations will soon enable us to come up with a more discoverable workflow to load traces, and to get started with analysis.
Below is one of many observations and implications for the product that came from last week's sessions. I'll add others, soon, after we review and prioritize a bit on Friday.
Why hide analyses that aren't yet fully functional?
After receiving some hints on how to load traces successfully, participants saw a list of "available analyses." To familiarize himself with the plugin, one participant clicked on the analysis at the top of the list, and saw a blank chart and text that said "Loading analysis..." he waited a while...then said "Is this thing still working? Is it stuck? How long will this take? Should I keep waiting here, I don't know..." Eventually he gave up, and clicked on the next analysis, which also did not work. He said something like "If it's still loading, why not show a little spinner or something, but if it's not working, why show anything at all?"
The text was updated successfully, but these errors were encountered: