From 18df07e824b82cc75f215bae2a00b09b4eeefe9a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Wed, 24 Jan 2024 15:07:40 +0200 Subject: [PATCH] lib/mergeset: start assisted merge for file parts only if the number of file parts is bigger than maxFileParts The maxFileParts usage has been accidentally removed in fa566c68a6ccf7385a05f649aee7e5f5a38afb15 While at it, add Count suffix to *AssistedMerges counter names in order to make them less misleading. Previously their names were falsely suggesting that these are gauges, which show the number of concurrently executed assisted merges. --- app/vmstorage/main.go | 4 ++-- lib/mergeset/table.go | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/vmstorage/main.go b/app/vmstorage/main.go index cca39859c7..f06c0c64eb 100644 --- a/app/vmstorage/main.go +++ b/app/vmstorage/main.go @@ -499,8 +499,8 @@ func writeStorageMetrics(w io.Writer, strg *storage.Storage) { metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="storage/inmemory"}`, tm.InmemoryAssistedMerges) metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="storage/small"}`, tm.SmallAssistedMerges) - metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="indexdb/inmemory"}`, idbm.InmemoryAssistedMerges) - metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="indexdb/file"}`, idbm.FileAssistedMerges) + metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="indexdb/inmemory"}`, idbm.InmemoryAssistedMergesCount) + metrics.WriteCounterUint64(w, `vm_assisted_merges_total{type="indexdb/file"}`, idbm.FileAssistedMergesCount) metrics.WriteCounterUint64(w, `vm_indexdb_items_added_total`, idbm.ItemsAdded) metrics.WriteCounterUint64(w, `vm_indexdb_items_added_size_bytes_total`, idbm.ItemsAddedSizeBytes) diff --git a/lib/mergeset/table.go b/lib/mergeset/table.go index b0680ed9f0..b4e64dbe46 100644 --- a/lib/mergeset/table.go +++ b/lib/mergeset/table.go @@ -110,8 +110,8 @@ type Table struct { inmemoryItemsMerged uint64 fileItemsMerged uint64 - inmemoryAssistedMerges uint64 - fileAssistedMerges uint64 + inmemoryAssistedMergesCount uint64 + fileAssistedMergesCount uint64 itemsAdded uint64 itemsAddedSizeBytes uint64 @@ -422,8 +422,8 @@ type TableMetrics struct { InmemoryItemsMerged uint64 FileItemsMerged uint64 - InmemoryAssistedMerges uint64 - FileAssistedMerges uint64 + InmemoryAssistedMergesCount uint64 + FileAssistedMergesCount uint64 ItemsAdded uint64 ItemsAddedSizeBytes uint64 @@ -473,8 +473,8 @@ func (tb *Table) UpdateMetrics(m *TableMetrics) { m.InmemoryItemsMerged += atomic.LoadUint64(&tb.inmemoryItemsMerged) m.FileItemsMerged += atomic.LoadUint64(&tb.fileItemsMerged) - m.InmemoryAssistedMerges += atomic.LoadUint64(&tb.inmemoryAssistedMerges) - m.FileAssistedMerges += atomic.LoadUint64(&tb.fileAssistedMerges) + m.InmemoryAssistedMergesCount += atomic.LoadUint64(&tb.inmemoryAssistedMergesCount) + m.FileAssistedMergesCount += atomic.LoadUint64(&tb.fileAssistedMergesCount) m.ItemsAdded += atomic.LoadUint64(&tb.itemsAdded) m.ItemsAddedSizeBytes += atomic.LoadUint64(&tb.itemsAddedSizeBytes) @@ -792,7 +792,7 @@ func (tb *Table) assistedMergeForInmemoryParts() { return } - atomic.AddUint64(&tb.inmemoryAssistedMerges, 1) + atomic.AddUint64(&tb.inmemoryAssistedMergesCount, 1) maxOutBytes := tb.getMaxFilePartSize() @@ -812,13 +812,13 @@ func (tb *Table) assistedMergeForInmemoryParts() { func (tb *Table) assistedMergeForFileParts() { tb.partsLock.Lock() - needMerge := getNotInMergePartsCount(tb.fileParts) >= defaultPartsToMerge + needMerge := len(tb.fileParts) > maxFileParts && getNotInMergePartsCount(tb.fileParts) >= defaultPartsToMerge tb.partsLock.Unlock() if !needMerge { return } - atomic.AddUint64(&tb.fileAssistedMerges, 1) + atomic.AddUint64(&tb.fileAssistedMergesCount, 1) err := tb.mergeExistingParts(false) if err == nil { return