Skip to content

Commit

Permalink
make mdbx summaries map concurrent
Browse files Browse the repository at this point in the history
  • Loading branch information
antonis19 committed Feb 20, 2025
1 parent 716e474 commit 9c7571e
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
39 changes: 31 additions & 8 deletions erigon-lib/kv/kv_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,15 @@ package kv
import (
"context"
"errors"
"fmt"
"sync"
"unsafe"

"github.com/c2h5oh/datasize"
"github.com/erigontech/erigon-lib/kv/order"
"github.com/erigontech/erigon-lib/kv/stream"
"github.com/erigontech/erigon-lib/metrics"
"github.com/erigontech/mdbx-go/mdbx"
)

//Variables Naming:
Expand Down Expand Up @@ -135,25 +138,45 @@ func InitMDBXMGauges() *DBGauges {
// initialize summaries for a particular MDBX instance
func InitSummaries(dbLabel Label) {
// just in case the global singleton map is not already initialized
if MDBXSummaries == nil {
MDBXSummaries = make(map[Label]*DBSummaries)
}
// if MDBXSummaries == nil {
// MDBXSummaries = make(map[Label]*DBSummaries)
// }

_, ok := MDBXSummaries[dbLabel]
_, ok := MDBXSummaries.Load(dbLabel)
if !ok {
dbName := string(dbLabel)
MDBXSummaries[dbLabel] = &DBSummaries{
MDBXSummaries.Store(dbName, &DBSummaries{
DbCommitPreparation: metrics.GetOrCreateSummaryWithLabels(`db_commit_seconds`, []string{dbLabelName, "phase"}, []string{dbName, "preparation"}),
DbCommitWrite: metrics.GetOrCreateSummaryWithLabels(`db_commit_seconds`, []string{dbLabelName, "phase"}, []string{dbName, "write"}),
DbCommitSync: metrics.GetOrCreateSummaryWithLabels(`db_commit_seconds`, []string{dbLabelName, "phase"}, []string{dbName, "sync"}),
DbCommitEnding: metrics.GetOrCreateSummaryWithLabels(`db_commit_seconds`, []string{dbLabelName, "phase"}, []string{dbName, "ending"}),
DbCommitTotal: metrics.GetOrCreateSummaryWithLabels(`db_commit_seconds`, []string{dbLabelName, "phase"}, []string{dbName, "total"}),
}
})
}
}

func RecordSummaries(dbLabel Label, latency mdbx.CommitLatency) error {
_summaries, ok := MDBXSummaries.Load(dbLabel)
if !ok {
return fmt.Errorf("MDBX summaries not initialized yet for db=%s", string(dbLabel))
}
// cast to *DBSummaries
summaries, ok := _summaries.(*DBSummaries)
if !ok {
return fmt.Errorf("type casting to *DBSummaries failed")
}

summaries.DbCommitPreparation.Observe(latency.Preparation.Seconds())
summaries.DbCommitWrite.Observe(latency.Write.Seconds())
summaries.DbCommitSync.Observe(latency.Sync.Seconds())
summaries.DbCommitEnding.Observe(latency.Ending.Seconds())
summaries.DbCommitTotal.Observe(latency.Whole.Seconds())
return nil

}

var MDBXGauges *DBGauges = InitMDBXMGauges() // global mdbx gauges. each gauge can be filtered by db name
var MDBXSummaries map[Label]*DBSummaries = make(map[Label]*DBSummaries) // dbName => Summaries mapping
var MDBXGauges *DBGauges = InitMDBXMGauges() // global mdbx gauges. each gauge can be filtered by db name
var MDBXSummaries sync.Map // dbName => Summaries mapping

var (
ErrAttemptToDeleteNonDeprecatedBucket = errors.New("only buckets from dbutils.ChaindataDeprecatedTables can be deleted")
Expand Down
9 changes: 4 additions & 5 deletions erigon-lib/kv/mdbx/kv_mdbx.go
Original file line number Diff line number Diff line change
Expand Up @@ -913,11 +913,10 @@ func (tx *MdbxTx) Commit() error {

if tx.db.opts.metrics {
dbLabel := tx.db.opts.label
kv.MDBXSummaries[dbLabel].DbCommitPreparation.Observe(latency.Preparation.Seconds())
kv.MDBXSummaries[dbLabel].DbCommitWrite.Observe(latency.Write.Seconds())
kv.MDBXSummaries[dbLabel].DbCommitSync.Observe(latency.Sync.Seconds())
kv.MDBXSummaries[dbLabel].DbCommitEnding.Observe(latency.Ending.Seconds())
kv.MDBXSummaries[dbLabel].DbCommitTotal.Observe(latency.Whole.Seconds())
err = kv.RecordSummaries(dbLabel, latency)
if err != nil {
tx.db.opts.log.Error("failed to record mdbx summaries", "err", err)
}

//kv.DbGcWorkPnlMergeTime.Update(latency.GCDetails.WorkPnlMergeTime.Seconds())
//kv.DbGcWorkPnlMergeVolume.Set(uint64(latency.GCDetails.WorkPnlMergeVolume))
Expand Down

0 comments on commit 9c7571e

Please sign in to comment.