-
Notifications
You must be signed in to change notification settings - Fork 245
Open
Description
One use-case I would like to experiment with is to be able to answer questions across a larger set of deployments to drive optimization efforts. Some of the queries might be along the lines of:
- Which binary is the most "expensive" (most CPU, most memory, highest rate allocation) over the last month/day?
- Which function is the most "expensive" (most CPU, most memory, highest rate of allocation) over the last month/day? Or narrow this down to to binary (e.g. most expensive function of this binary).
- Who could benefit most of a Golang allocator change?
- What function to optimize in my library?
The result will be a flat report and not a flamegraph. I wondered whether to approach this by introducing a query language? This requires more thought but on a high-level something like this:
topk(10, merge by (binary) (cpu_profile{binary="frx"}[28d])
topk(10, merge by (binary, function) (allocations{job="abc"}[1d])
Or something more advanced like finding the binaries that allocate most memory in a specific function?
topk(10, merge by (binary) (select(allocations{job="abc"}, {function=~."*runtime.malloc.*"})[28d]))
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels