mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
lib/storage: tune loopsCount estimations in getMetricIDsForTagFilterSlow
The adjusted estmations give up to 2x lower median response times on 200qps /api/v1/query_range workload
This commit is contained in:
parent
ab4f090c63
commit
18fe0ff14b
1 changed files with 6 additions and 5 deletions
|
@ -154,8 +154,8 @@ func openIndexDB(path string, metricIDCache, metricNameCache, tsidCache *working
|
||||||
metricIDCache: metricIDCache,
|
metricIDCache: metricIDCache,
|
||||||
metricNameCache: metricNameCache,
|
metricNameCache: metricNameCache,
|
||||||
tsidCache: tsidCache,
|
tsidCache: tsidCache,
|
||||||
uselessTagFiltersCache: workingsetcache.New(mem/128, 3*time.Hour),
|
uselessTagFiltersCache: workingsetcache.New(mem/128, time.Hour),
|
||||||
loopsPerDateTagFilterCache: workingsetcache.New(mem/128, 3*time.Hour),
|
loopsPerDateTagFilterCache: workingsetcache.New(mem/128, time.Hour),
|
||||||
|
|
||||||
minTimestampForCompositeIndex: minTimestampForCompositeIndex,
|
minTimestampForCompositeIndex: minTimestampForCompositeIndex,
|
||||||
}
|
}
|
||||||
|
@ -2458,7 +2458,8 @@ func (is *indexSearch) getMetricIDsForTagFilterSlow(tf *tagFilter, filter *uint6
|
||||||
}
|
}
|
||||||
// Slow path: need tf.matchSuffix call.
|
// Slow path: need tf.matchSuffix call.
|
||||||
ok, err := tf.matchSuffix(suffix)
|
ok, err := tf.matchSuffix(suffix)
|
||||||
loopsCount += tf.matchCost
|
// Assume that tf.matchSuffix call needs 10x more time than a single metric scan iteration.
|
||||||
|
loopsCount += 10*tf.matchCost
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return loopsCount, fmt.Errorf("error when matching %s against suffix %q: %w", tf, suffix, err)
|
return loopsCount, fmt.Errorf("error when matching %s against suffix %q: %w", tf, suffix, err)
|
||||||
}
|
}
|
||||||
|
@ -2479,8 +2480,8 @@ func (is *indexSearch) getMetricIDsForTagFilterSlow(tf *tagFilter, filter *uint6
|
||||||
}
|
}
|
||||||
kb.B[len(kb.B)-1]++
|
kb.B[len(kb.B)-1]++
|
||||||
ts.Seek(kb.B)
|
ts.Seek(kb.B)
|
||||||
// Assume that a seek cost is equivalent to 100 ordinary loops.
|
// Assume that a seek cost is equivalent to 1000 ordinary loops.
|
||||||
loopsCount += 100
|
loopsCount += 1000
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
prevMatch = true
|
prevMatch = true
|
||||||
|
|
Loading…
Reference in a new issue