Desktop Performance RFC
See original GitHub issueGoal
The goal of this project is to provide insights on Desktop’s performance so the team can make informed product decisions and to better prioritize issues.
At the moment, much is unknown about how Desktop performs in the wild. Every now and again, we will get an issue where a user is having a bad experience with Desktop on their computer while the team has to guess what could be causing such terrible performance. This is not ideal because it increases the difficulty of determining the impact an issue has and slows the pace at which we get answers — if we get an answer at all.
What success looks like
I will consider this project a success if we are able to answer any of the questions from these five categories:
Category | Questions |
---|---|
Workflow | What do our users spend most of their time doing? Which workflow (part or full) is slowest? How long does each step in a workflow normally take? |
RAM | What is Desktop’s memory usage over time? |
Network | How much time are our users spending waiting on Desktop to complete API requests? |
Errors | When are users encountering errors? What are they? Is it a trend? |
Where are we now?
The current format of our metrics package is unable to support the level of granularity needed to give any insight on the areas defined above, so we will have to revise how we collect and submit usage. Thomas and I spent a short amount of time discussing what a new metrics package would look like and we agreed that we should try to incorporate what’s being done in atom/telemetry.
Refined Data structure we came up with to submit metrics
[
{
"dimension": {
"user_guid": "",
"installation_guid": "",
"event_type": "commit"
},
"measure": {
"network_time": -1,
"memory_usage": 8e+8
}
}
]
The key difference between this structure and the one in production is the one we are suggesting has an event granularity while the one in production is aggregated data.
What needs to get done
This list is not complete as these are the things that need to be done before we can move to bigger more interesting things like creating new ~Mode~ Looker dashboards.
- Come up with new data structure that supports our new data needs and implement them: https://github.com/desktop/desktop/issues/5695
- Determine metrics we’d like to start tracking and get them implemented in code
- Update central to be compatible with new metrics format
- POC using structured logging
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:11 (10 by maintainers)
Top GitHub Comments
@outofambit yes, that is currently the state of our metrics. We may have to rework that structure to answer the questions we want, but what’s there now should be sufficient to wrap your head around things.