Skip to content

QueryIdeas

Ivan Beschastnikh edited this page May 27, 2020 · 1 revision

Potential developer queries:

  • What are the longest and shortest execution paths in the model, by metric?

    • This would allow developers to identify the slowest items in the model.
    • Already developed. Red path is the longest, green is the shortest.
  • Which events appear most often in the slowest paths?

    • Developers are looking for slow spots in their code. The more often the event happens, the larger performance impact it will have. such a feature allows developers to identify what they should work on.
    • For the 5% slowest paths, highlight those nodes that appear most often. They could be shaded based on how often they appear, similar to the gradient we have already.
    • Requirements:
      • This can be done from the front end. All that is required is a list of paths(already provided by the json)
  • What fraction of paths go through an edge?

    • This feature would show developers the most common edges that are traversed by traces, showing developers what would give the largest performance impact.
    • In this case, a developer would select an edge and query it. A number would then appear next to the edge showing the fraction of paths that go through that edge.
    • Requirements:
      • A list of all possible paths, provided by traces. Can be handled on frontend.
  • Which lines in the log file correspond to specific nodes/edges in the model?

    • Log files are complex and it is often difficult to make sense of them. Highlighting performance problems and relating them to the log file can help developers gain insight on why their program is slow.
    • In the model, mousing over an item would present the log lines it is related to, with line numbers.
    • Requirements:
      • A way to request to the server what lines are related in the model. Similar lines do not need to be included.
  • Which invariants are related to specific nodes/edges in the model?

    • A common question developers have is "What are the requirementes to get to this execution state" showing related invariants could be helpful. There will be an option(off by default) to enable/disable this.
    • In the model, mousing over an item would present the invariant it is related to.
    • Requirements:
      • A way to relate edges, nodes and invariants.
  • What resource is a node bounded by (CPU or memory?) ?

    • This feature allows developers to see what resources a node is consuming the most of, giving insights into how to improve the performance of the system.
    • In this feature, I think nodes could be colored by what resource they use the most of. For example, if a node is bottlenecked by CPU time, it could be colored red.
    • Requirements:
      • Information from the server about how resources are consumed.
      • A UI interface so that the user can select what resources they would like to see.
  • If I remove an edge from the model (that is, if I ignore all traces that go through this model), how does the model change?

    • The model would have edges be selected, and deleted. An ajax call would make a request to the server to get a new model.
    • Requirements:
      • AJAX call to re-evaluate the model, sends new json object.
  • If I remove traces from the model how does the model change?

    • The model would have edges be selected, and deleted. An ajax call would make a request to the server to get a new model.
    • Requirements:
      • AJAX call to re-evaluate the model, sends new json object.
  • If I add/remove events to/from the log, how does the model change?

    • In the model, a user could add or remove events from the log, and the model will be redrawn to
    • Requirements:
      • An AJAX call to the server allowing it to generate a new model. This may be a low priority, since the user can just enter in a new log file on the parser interface.
  • How does the model change as invariants are removed? For example, if I know that a mined invariant about my system is incorrect, then I would remove the invariant and would like to see the model updated.

    • On the invaraint screen, you could select invaraints to be removed, and remove them. The model then is updated based on this information.
    • Requirements:
      • AJAX request to reprocess model after invariants are removed.
  • Something related to the stack. Programmers have a lot of questions about that.

Clone this wiki locally