Files
perfdb/plan.txt
2019-10-31 18:56:19 +01:00

171 lines
3.5 KiB
Plaintext

We want to support many different plot types with many different
ways to define what and how it should be plotted. There is a high
overlap of settings that can be used for each plot type.
Here is an attempt to group everything.
Presentation
* subplots (n x m)
* single plot
* gallery
* table
* p-values / ANOVA / Chi-Square
Plot Types
* x-y relation
** Scatter
** Bubble (?)
* x-y relation for high number of points
** contour
** 2d bins
** hex bins
* distributions: only one can be drawn
** histogram (bar) (?)
** density plot (filled) (?)
* distributions: many can be drawn
** histogram (line)
** density plot (line)
** cumulative distribution
** quantile-quantile plot (?)
** boxplots
** violins
** strip charts / sina plots
** overlapping densities (?)
** ridgeline plots
* proportions
** pie chart
** bars (horizontal / vertical / stacked)
* custom
** parallel requests
Filters
* query
* group by
** field
** intervals (1m, 5m, 15m, 1h, ...)
* split by
* limit
* date ranges (1...n)
* find all method calls active at a specific time
Axis
* log/linear
* y-range
options
* error bars
* trend lines (cubic splines, B-splines, thin-plate splines, Gaussian process splines)
Metrics
* min/max
* count
* average
* percentiles (median, 90-percentile, ...)
Format
* color palette
* highlight selected lines
The presentation defines how many plots you can define. It also influences some of
the available filters. E.g. the gallery requires to define a 'split by' field.
Each plot type defines which subset of filters, axis definitions, decorations and
metrics is available. It also defines which plot types are available for the X2 axis.
For example, you cannot combine a pie chart with a scatter plot.
Plots in more detail
Scatter
x: time
y: duration
filters (required): query, date range
filters (optional): group by, limit, intervals
filters (forbidden):
axis: log/linear, y-range
options: trend lines
metrics: min/max, count, average, percentiles
combine: contour
X2-axis: cumulative distribution, histogram (line), density plot (line), Parallel Requests
Cumulative Distribution:
x: percent
y: duration
filters (required): query, date range
filters (optional): group by, limit, intervals
filters (forbidden):
axis: log/linear, y-range
options:
metrics: min/max, count, average, percentiles
combine:
X2-axis: scatter, Parallel Requests
Contour:
x: time
y: duration
filters (required): query, date range
filters (optional): intervals
filters (forbidden): group by, limit
options:
combine: scatter
X2:axis:
Parallel Requests:
x: time
y: count
filters (required): query, date range
filters (optional):
filters (forbidden): group by, limit, intervals
axis: log/linear, y-range
options:
metrics: min/max, average
combine:
X2-axis: scatter, cumulative distribution,
Violin:
x: group
y: duration
filters (required): query, date range, group by, limit, intervals
filters (optional):
filters (forbidden):
axis: log/linear, y-range
decorations:
options:
combine: strip charts
bar chart:
x: group
y: metric
filters (required): query, date range, group by, limit, intervals
filters (optional):
filters (forbidden):
axis: log/linear, y-range
decorations:
options:
combine:
Use Cases:
* Find slow requests
* Find requests with unusually slow requests.
** max value > x
** 95-percentile/90-percentile > x
** num values > x
* How many requests were active at some point in time?
* Understand the distribution of response times.
* Identify locking issues.
* Find regressions.