-
Notifications
You must be signed in to change notification settings - Fork 107
alignRequests is too coarse grained (for timeshift functions etc) #926
Comments
seems like plan.Reqs should be bundling reqs together based on whether they get used together, |
related: #463 |
pulling in some relevant quotes from slack convo: shanson2:59 PM Line 247 in 43927d2
12:09 PM Hmm, seems that’s unrelated  dieter12:14 PM my plan is to shoot for 3 directly |
according to shanson, |
This is my current thinking. Let me introduce a bunch of new terms first.... Greedy-resolution functionsA Greedy-resolution function (GR-function) is a certain processing function that requires, or may require, high resolution data input to do their computations, even if their output will be consolidated down (due to maxDatapoints setting) MDP-optimizableMDP-optimizable aka maxDataPoints-optimizable is a data request where we can safely fetch lower precision data by taking into account MaxDataPoints-based consolidation that will take place after function processing.
What kind of optimizations can we do? Consider this retention rule:
While archive 1 is a bit less accurate, it is less data to load, decode, and requires no consolidation. We have a strong suspicion that it is less costly to use this data to satisfy the request. This is a more refined solution of #463. Interval-altering functionCertain functions will return output series in an interval different from the input interval. Transparent aggregationA trans-aggregation is a processing function that aggregates multiple series together in a predictable way (known at planning time, before fetching the data). Opaque aggregationAn opaque-aggregation is a processing function where we cannot accurately predict which series will be aggregated together Pre-normalizablewhen data will be used together (e.g. aggregating multiple series together) they will need to have the same resolution. Pre-normalizing is when we can safely - during planning - set up normalization to happen right after fetching (or better: set up the fetch parameters such that normalizing is not needed) For example if we have these schemas:
Let's say the initial fetch parameters are to get the raw data for both A and B. Proposed changes
Step 1 and 2 will solve our most urgent problem of over-aligning data (#926) Note:
|
An interesting addendum to pre-normalizations: Both of these examples may result in fetching different archives for basically the same request (meaning series and to/from) |
something else i realized: a side benefit is that inaccuracies due to honoring max-points-per-req are reduced because we can coarsen PNGroups and MDP-optimizable requests first. |
fixed by #951 |
it aligns the step across all series,
however:
dieter6:58 PM
@dcech can you confirm that in graphite you can
render?target=A&target=B
and get a response with A and B in different steps (whether A is timeshifted or just a metric from a different retention policy)dcech6:58 PM
yes, you can
6:59 PM
graphite doesn't do anything to align steps unless you use a query to aggregate series together
6:59 PM
you can do
target=a*
and get back series with different steps if they have different retentions etcThe text was updated successfully, but these errors were encountered: