NAICNO / Jobanalyzer

Easy to use resource usage report
MIT License
0 stars 1 forks source link

Show top consumers on web dashboard? #70

Open lars-t-hansen opened 1 year ago

lars-t-hansen commented 1 year ago

In #53 we've created a web dashboard to show the load of systems over time, this gives us some nice pictures Screenshot from 2023-09-15 15-38-32. In that picture, each of the round nodes in the graph is a live data element: it has a tool tip. For at least the daily and weekly reports, which aggregate data hourly, it would be interesting to show the top consumers in the tool tip - this could be just a job number, or it could be username + job number, or even user/job/command. (Though really, everything is python, so command is not all that interesting.) There might be other data that would be interesting - duration, maybe. Discuss.

lars-t-hansen commented 1 year ago

After discussions with Sabry: This is an important feature for M2.

lars-t-hansen commented 1 year ago

Basically either mouseover the chart to show top consumers (memory graph lists by memory use, say) at points in time.

usage
username
job#?

Maybe anyone using at least 20% of the given value of the point.

lars-t-hansen commented 1 year ago

Also, on the new machine-details page for the new dashboard, there would be the opportunity to present the top consumers (aggregate across jobs) for a node over some time period (maybe 30 days, as for cpuhog and deadweight). This is a little invasive, but easy to do.

EDIT: Spun off as #242.

EDIT: Also see #55 and the scripts created for that (scroll down), very relevant.

lars-t-hansen commented 1 year ago

For the primary use case, there would be new arrays in the load data, to parallel the arrays already there: rcpu-top, rmem-top, etc. For each of these, if present, the value is an array of strings. The strings are to be displayed in the dashboard when the user hovers over a point with the cursor. It's possible that not every point deserves that information. For example, for the moment-to-moment and daily report, it may be sufficient to provide it per hour; for the others, perhaps per day. This would mean not every point would carry the information. That in turn might mean that the points that do carry it might be visually distinct, somehow.

The main reason to not carry this for every point is data volume, so perhaps just try it for every point and see how bad it is.

The data per point would be, say, the at most top three consumers, represented as user name + job ID, and only show those that are above a certain limit (say, 10%)? Not sure what works best. Arbitrary cutoffs make for bad UX, maybe. Too much data is also bad UX.

Before implementing anything on the data side, we should see what can be supported by the graphing tool.