Skip to content

Commit

Permalink
chain-tip perf: share worker between execs (erigontech#11542)
Browse files Browse the repository at this point in the history
  • Loading branch information
AskAlexSharov authored Aug 13, 2024
1 parent a484e35 commit 17a595f
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
11 changes: 4 additions & 7 deletions cmd/state/exec3/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,18 +71,14 @@ type Worker struct {
dirs datadir.Dirs
}

func NewWorker(lock sync.Locker, logger log.Logger, accumulator *shards.Accumulator, ctx context.Context, background bool, chainDb kv.RoDB, rs *state.StateV3, in *state.QueueWithRetry, blockReader services.FullBlockReader, chainConfig *chain.Config, genesis *types.Genesis, results *state.ResultsQueue, engine consensus.Engine, dirs datadir.Dirs) *Worker {

func NewWorker(lock sync.Locker, logger log.Logger, ctx context.Context, background bool, chainDb kv.RoDB, in *state.QueueWithRetry, blockReader services.FullBlockReader, chainConfig *chain.Config, genesis *types.Genesis, results *state.ResultsQueue, engine consensus.Engine, dirs datadir.Dirs) *Worker {
w := &Worker{
lock: lock,
logger: logger,
chainDb: chainDb,
in: in,
rs: rs,
background: background,
blockReader: blockReader,
stateWriter: state.NewStateWriterV3(rs, accumulator),
stateReader: state.NewStateReaderV3(rs.Domains()),
chainConfig: chainConfig,

ctx: ctx,
Expand Down Expand Up @@ -298,7 +294,8 @@ func NewWorkersPool(lock sync.Locker, accumulator *shards.Accumulator, logger lo
ctx, cancel := context.WithCancel(ctx)
g, ctx := errgroup.WithContext(ctx)
for i := 0; i < workerCount; i++ {
reconWorkers[i] = NewWorker(lock, logger, accumulator, ctx, background, chainDb, rs, in, blockReader, chainConfig, genesis, rws, engine, dirs)
reconWorkers[i] = NewWorker(lock, logger, ctx, background, chainDb, in, blockReader, chainConfig, genesis, rws, engine, dirs)
reconWorkers[i].ResetState(rs, accumulator)
}
if background {
for i := 0; i < workerCount; i++ {
Expand All @@ -324,7 +321,7 @@ func NewWorkersPool(lock sync.Locker, accumulator *shards.Accumulator, logger lo
//applyWorker.ResetTx(nil)
}
}
applyWorker = NewWorker(lock, logger, accumulator, ctx, false, chainDb, rs, in, blockReader, chainConfig, genesis, rws, engine, dirs)
applyWorker = NewWorker(lock, logger, ctx, false, chainDb, in, blockReader, chainConfig, genesis, rws, engine, dirs)

return reconWorkers, applyWorker, rws, clear, wait
}
4 changes: 3 additions & 1 deletion eth/stagedsync/exec3.go
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,10 @@ func ExecV3(ctx context.Context,
rwsConsumed := make(chan struct{}, 1)
defer close(rwsConsumed)

execWorkers, applyWorker, rws, stopWorkers, waitWorkers := exec3.NewWorkersPool(lock.RLocker(), accumulator, logger, ctx, parallel, chainDb, rs, in, blockReader, chainConfig, genesis, engine, workerCount+1, cfg.dirs)
execWorkers, _, rws, stopWorkers, waitWorkers := exec3.NewWorkersPool(lock.RLocker(), accumulator, logger, ctx, parallel, chainDb, rs, in, blockReader, chainConfig, genesis, engine, workerCount+1, cfg.dirs)
defer stopWorkers()
applyWorker := cfg.applyWorker
applyWorker.ResetState(rs, accumulator)
applyWorker.DiscardReadList()

commitThreshold := batchSize.Bytes()
Expand Down
3 changes: 3 additions & 0 deletions eth/stagedsync/stage_execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"time"

"github.com/c2h5oh/datasize"
"github.com/erigontech/erigon/cmd/state/exec3"
"golang.org/x/sync/errgroup"

"github.com/erigontech/erigon-lib/chain"
Expand Down Expand Up @@ -84,6 +85,7 @@ type ExecuteBlockCfg struct {

silkworm *silkworm.Silkworm
blockProduction bool
applyWorker *exec3.Worker
}

func StageExecuteBlocksCfg(
Expand Down Expand Up @@ -125,6 +127,7 @@ func StageExecuteBlocksCfg(
historyV3: true,
syncCfg: syncCfg,
silkworm: silkworm,
applyWorker: exec3.NewWorker(nil, log.Root(), context.Background(), false, db, nil, blockReader, chainConfig, genesis, nil, engine, dirs),
}
}

Expand Down

0 comments on commit 17a595f

Please sign in to comment.