VictoriaMetrics/lib/storage
Aliaksandr Valialkin f4989edd96
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:24:44 +02:00
..
block.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
block_header.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:12:56 +03:00
block_header_test.go lib/storage: typo fix: umarshal -> unmarshal 2021-03-02 20:47:59 +02: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:13:14 +02:00
block_stream_reader.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:24:44 +02:00
block_stream_reader_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:05:11 +03:00
block_stream_reader_timing_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:05:11 +03:00
block_stream_writer.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
block_stream_writer_timing_test.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +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:22 +03:00
dedup.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
dedup_test.go lib/storage: explicitly pass dedupInterval to DeduplicateSamples() and deduplicateSamplesDuringMerge() 2021-12-14 20:49:12 +02:00
dedup_timing_test.go lib/storage: explicitly pass dedupInterval to DeduplicateSamples() and deduplicateSamplesDuringMerge() 2021-12-14 20:49:12 +02:00
index_db.go lib/storage: follow-up for 38bf5fc136 2022-01-05 16:00:11 +02:00
index_db_test.go lib/storage: verify that the tsidsFound contain the needed tsids in tests added at f4dead529f 2021-09-11 10:57:13 +03:00
index_db_timing_test.go lib/storage: reset cache on disk during series deletion and during indexdb rotation 2021-06-11 12:42:28 +03:00
inmemory_part.go lib/{mergeset,storage}: switch from sync.Pool to chan-based pool for inmemoryPart objects 2021-07-06 16:28:41 +03: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
merge.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
merge_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
merge_timing_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
metaindex_row.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:12:56 +03:00
metaindex_row_test.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:12:56 +03:00
metric_name.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:24:44 +02:00
metric_name_test.go app/vminsert: add support for data ingestion via other vminsert nodes 2021-05-08 19:52:57 +03:00
part.go lib/mergeset: tune caches size limits for indexdb/dataBlocks and indexdb/indexBlocks 2022-01-21 12:45:43 +02:00
part_header.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
part_header_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
part_search.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:24:44 +02:00
part_search_test.go Revert "lib/storage: remove unused fetchData arg from BlockRef.MustReadBlock" 2020-09-24 22:44:23 +03:00
partition.go lib/{mergeset,storage}: properly limit cache sizes for indexdb 2022-01-20 18:37:17 +02:00
partition_search.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:05:11 +03:00
partition_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
partition_test.go lib/{mergeset,storage}: improve the detection of the needed free space for background merge 2021-08-25 09:35:44 +03: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 15:59:58 +02:00
search.go lib/bytesutil: split Resize() into ResizeNoCopy() and ResizeWithCopy() functions 2022-01-25 15:24:44 +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 14:15:19 +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:09 +02:00
storage_test.go all: typo fix: unexected -> unexpected 2021-12-20 17:39:52 +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 14:15:19 +03:00
table.go lib/storage: deduplicate samples more thoroughly 2021-12-15 15:59:58 +02:00
table_search.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
table_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
table_search_timing_test.go lib/storage: consistency renaming: getMaxRawRowsPerPartition -> getMaxRawRowsPerShard 2021-06-11 10:57:23 +03:00
table_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:31:44 +03:00
table_timing_test.go all: properly handle CPU limits set on the host system/container 2020-12-08 21:07:29 +02:00
tag_filters.go lib/storage: follow-up for 38bf5fc136 2022-01-05 16:00:11 +02:00
tag_filters_test.go lib/storage: properly handle {__name__=~"prefix(suffix1|suffix2)",other_label="..."} queries 2021-09-23 21:48:51 +03:00
tag_filters_timing_test.go lib/storage: small code adjustements after d2960a20e0 2020-10-17 01:16:54 +03:00
time.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:05:11 +03:00
time_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
tsid.go all: remove the remaining mentions of cluster version 2019-11-21 23:18:22 +02:00
tsid_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00