mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-29 22:51:36 -08:00
836f1db04c
WIP: This needs more tests. It now gets a from and through value, which it may opportunistically use to optimize the retrieval. With possible future range indices, this could be used in a very efficient way. This change merely applies some easy checks, which should nevertheless solve the use case of heavy rule evaluations on servers with a lot of series churn. Idea is the following: - Only archive series that are at least as old as the headChunkTimeout (which was already extremely unlikely to happen). - Then maintain a high watermark for the last archival, i.e. no archived series has a sample more recent than that watermark. - Any query that doesn't reach to a time before that watermark doesn't have to touch the archive index at all. (A production server at Soundcloud with the aforementioned series churn and heavy rule evaluations spends 50% of its CPU time in archive index lookups. Since rule evaluations usually only touch very recent values, most of those lookup should disappear with this change.) - Federation with a very broad label matcher will profit from this, too. As a byproduct, the un-needed MetricForFingerprint method was removed from the Storage interface. |
||
---|---|---|
.. | ||
codable | ||
fixtures/b0 | ||
index | ||
storagetool | ||
chunk.go | ||
crashrecovery.go | ||
delta.go | ||
delta_helpers.go | ||
doubledelta.go | ||
heads.go | ||
instrumentation.go | ||
interface.go | ||
locker.go | ||
locker_test.go | ||
mapper.go | ||
mapper_test.go | ||
persistence.go | ||
persistence_test.go | ||
preload.go | ||
series.go | ||
storage.go | ||
storage_test.go | ||
test_helpers.go |