VictoriaMetrics/lib/storage
Aliaksandr Valialkin 6232eaa938
lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions
Previously bytesutil.Resize() was copying the original byte slice contents to a newly allocated slice.
This wasted CPU cycles and memory bandwidth in some places, where the original slice contents wasn't needed
after slize resizing. Switch such places to bytesutil.ResizeNoCopy().

Rename the original bytesutil.Resize() function to bytesutil.ResizeWithCopy() for the sake of improved readability.

Additionally, allocate new slice with `make()` instead of `append()`. This guarantees that the capacity of the allocated slice
exactly matches the requested size. The `append()` could return a slice with bigger capacity as an optimization for further `append()` calls.
This could result in excess memory usage when the returned byte slice was cached (for instance, in lib/blockcache).

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2007
2022-01-25 15:28:42 +02:00
..
block_header_test.go lib/storage: typo fix: umarshal -> unmarshal 2021-03-02 20:48:44 +02:00
block_header.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
block_stream_merger.go lib/storage: set bsm.Block to nil on error, so the previous block couldn't be used. 2022-01-20 20:37:24 +02:00
block_stream_reader_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
block_stream_reader_timing_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
block_stream_reader.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:28:42 +02:00
block_stream_writer_timing_test.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
block_stream_writer.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
block_test.go lib/storage: fix tests for 32-bit arches such as GOARCH=386 and GOARCH=arm 2020-09-29 13:10:37 +03:00
block.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
dedup_test.go lib/storage: explicitly pass dedupInterval to DeduplicateSamples() and deduplicateSamplesDuringMerge() 2021-12-14 20:52:29 +02:00
dedup_timing_test.go lib/storage: explicitly pass dedupInterval to DeduplicateSamples() and deduplicateSamplesDuringMerge() 2021-12-14 20:52:29 +02:00
dedup.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
index_db_test.go lib/storage: verify that the tsidsFound contain the needed tsids in tests added at f4dead529f 2021-09-11 11:02:56 +03:00
index_db_timing_test.go lib/storage: reset cache on disk during series deletion and during indexdb rotation 2021-06-11 12:54:36 +03:00
index_db.go lib/storage: follow-up for 38bf5fc136 2022-01-05 16:02:17 +02:00
inmemory_part_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
inmemory_part_timing_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
inmemory_part.go lib/{mergeset,storage}: switch from sync.Pool to chan-based pool for inmemoryPart objects 2021-07-06 16:33:25 +03:00
merge_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
merge_timing_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
merge.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
metaindex_row_test.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
metaindex_row.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
metric_name_test.go app/vminsert: add support for data ingestion via other vminsert nodes 2021-05-08 19:53:45 +03:00
metric_name.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:28:42 +02:00
part_header_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
part_header.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
part_search_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
part_search.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:28:42 +02:00
part.go lib/mergeset: tune caches size limits for indexdb/dataBlocks and indexdb/indexBlocks 2022-01-21 12:46:05 +02:00
partition_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
partition_search.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
partition_test.go lib/{mergeset,storage}: improve the detection of the needed free space for background merge 2021-08-25 10:01:09 +03:00
partition.go lib/{mergeset,storage}: properly limit cache sizes for indexdb 2022-01-20 18:45:03 +02:00
raw_block.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
raw_row.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
search_test.go app/vmstorage: add ability to limit series cardinality via -storage.maxHourlySeries and -storage.maxDailySeries command-line flags 2021-05-20 15:31:57 +03:00
search.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:28:42 +02:00
storage_test.go all: typo fix: unexected -> unexpected 2021-12-20 17:40:13 +02:00
storage_timing_test.go app/vmstorage: add ability to limit series cardinality via -storage.maxHourlySeries and -storage.maxDailySeries command-line flags 2021-05-20 15:31:57 +03:00
storage.go lib/storage: properly limit cardinality when ingesting multiple samples for the same time series in a single request 2022-01-21 12:38:22 +02:00
table_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_search_timing_test.go lib/storage: consistency renaming: getMaxRawRowsPerPartition -> getMaxRawRowsPerShard 2021-06-11 10:52:31 +03:00
table_search.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_timing_test.go all: properly handle CPU limits set on the host system/container 2020-12-08 21:07:03 +02:00
table.go lib/storage: deduplicate samples more thoroughly 2021-12-15 16:00:30 +02:00
tag_filters_test.go lib/storage: properly handle {__name__=~"prefix(suffix1|suffix2)",other_label="..."} queries 2021-09-23 21:52:31 +03:00
tag_filters_timing_test.go lib/storage: small code adjustements after d2960a20e0 2020-10-17 01:17:12 +03:00
tag_filters.go lib/storage: follow-up for 38bf5fc136 2022-01-05 16:02:17 +02:00
time_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
time.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
tsid_test.go all: open-sourcing cluster version 2019-05-23 00:25:38 +03:00
tsid.go lib/storage: optimize TSID comparison 2019-09-26 14:20:02 +03:00