prometheus/storage/remote
Filip Petkovski 583f3e587c
Optimize histogram iterators (#13340)
Optimize histogram iterators

Histogram iterators allocate new objects in the AtHistogram and
AtFloatHistogram methods, which makes calculating rates over long
ranges expensive.

In #13215 we allowed an existing object to be reused
when converting an integer histogram to a float histogram. This commit follows
the same idea and allows injecting an existing object in the AtHistogram and
AtFloatHistogram methods. When the injected value is nil, iterators allocate
new histograms, otherwise they populate and return the injected object.

The commit also adds a CopyTo method to Histogram and FloatHistogram which
is used in the BufferedIterator to overwrite items in the ring instead of making
new copies.

Note that a specialized HPoint pool is needed for all of this to work 
(`matrixSelectorHPool`).

---------

Signed-off-by: Filip Petkovski <filip.petkovsky@gmail.com>
Co-authored-by: George Krajcsovits <krajorama@users.noreply.github.com>
2024-01-23 17:02:14 +01:00
..
azuread golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
otlptranslator Minor fixes to otlp vendor update script 2024-01-18 15:32:06 +05:30
chunked.go (storage): move from github.com/pkg/errors to 'errors' and 'fmt' (#10946) 2022-07-01 18:59:50 +02:00
chunked_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
client.go remote-write: respect Retry-After header on 5xx errors 2023-09-20 10:14:38 +00:00
client_test.go remote_write: add a unit test to make sure the write client sends 2023-11-09 15:56:48 +01:00
codec.go Optimize histogram iterators (#13340) 2024-01-23 17:02:14 +01:00
codec_test.go Optimize histogram iterators (#13340) 2024-01-23 17:02:14 +01:00
ewma.go style: Replace else if cascades with switch 2023-04-19 17:22:31 +02:00
intern.go Move away from testutil, refactor imports (#8087) 2020-10-22 11:00:08 +02:00
intern_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
max_timestamp.go Remote: Do not collect non-initialized timestamp metrics (#8060) 2020-10-15 23:53:59 +02:00
metadata_watcher.go scrape: consistent function names for metadata 2023-11-23 09:08:02 +00:00
metadata_watcher_test.go Move metric type definitions to common/model 2023-12-19 18:56:54 +00:00
queue_manager.go Drop old inmemory samples (#13002) 2024-01-05 10:40:30 -08:00
queue_manager_test.go Drop old inmemory samples (#13002) 2024-01-05 10:40:30 -08:00
read.go Add warnings (and annotations) to PromQL query results (#12152) 2023-09-14 18:57:31 +02:00
read_handler.go ci(lint): enable errorlint on storage (#12935) 2023-10-31 12:15:30 +01:00
read_handler_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
read_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
storage.go remote/storage.go: adjust Storage.Notify() to avoid a race condition with Storage.ApplyConfig() 2023-11-14 10:07:45 +01:00
storage_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00
write.go Append Created Timestamps (#12733) 2023-12-11 08:43:42 +00:00
write_handler.go Consider storage.ErrTooOldSample as non-retryable 2023-12-26 18:44:39 +02:00
write_handler_test.go Drop old inmemory samples (#13002) 2024-01-05 10:40:30 -08:00
write_test.go golangci-lint: enable testifylint linter (#13254) 2023-12-07 11:35:01 +00:00