diff --git a/eth/stagedsync/state.go b/eth/stagedsync/state.go index a2222b3ec18..a335b8049b8 100644 --- a/eth/stagedsync/state.go +++ b/eth/stagedsync/state.go @@ -141,6 +141,7 @@ func (s *State) StageState(stage stages.SyncStage, db ethdb.Getter) (*StageState } func (s *State) Run(db ethdb.GetterPutter, tx ethdb.GetterPutter) error { + timings := map[string]time.Duration{} for !s.IsDone() { if !s.unwindStack.Empty() { for unwind := s.unwindStack.Pop(); unwind != nil; unwind = s.unwindStack.Pop() { @@ -154,9 +155,11 @@ func (s *State) Run(db ethdb.GetterPutter, tx ethdb.GetterPutter) error { return err } } + t := time.Now() if err := s.UnwindStage(unwind, db, tx); err != nil { return err } + timings["Unwind "+string(unwind.Stage)] = time.Since(t) } if err := s.SetCurrentStage(stages.Headers); err != nil { return err @@ -186,13 +189,20 @@ func (s *State) Run(db ethdb.GetterPutter, tx ethdb.GetterPutter) error { continue } + t := time.Now() if err := s.runStage(stage, db, tx); err != nil { return err } + timings[string(stage.ID)] = time.Since(t) } var m runtime.MemStats runtime.ReadMemStats(&m) log.Info("Memory", "alloc", common.StorageSize(m.Alloc), "sys", common.StorageSize(m.Sys)) + logArs := make([]interface{}, 0, len(timings)*2) + for name, val := range timings { + logArs = append(logArs, name, val) + } + log.Info("Timings", logArs...) return nil }