mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 13:46:43 +00:00
cosmatic and add CPU/walltime profiling
This commit is contained in:
parent
ab3a813582
commit
ad0b8f83c8
3 changed files with 23 additions and 5 deletions
|
|
@ -474,11 +474,12 @@ func showMetrics() {
|
|||
fmt.Println("StateCopyTime: ", state.StateCopyTime)
|
||||
fmt.Println("StateCopyNewTime: ", state.StateNewTime)
|
||||
fmt.Println("StateDeepCpTime: ", state.StateDeepCpTime)
|
||||
fmt.Println("PrefetchBALTime: ", core.PrefetchBALTime)
|
||||
fmt.Println("PrefetchBALtime: ", core.PrefetchBALTime)
|
||||
fmt.Println("PrefetchMergeTime:", core.PrefetchMergeBALTime)
|
||||
fmt.Println("ParallelExeTime: ", core.ParallelExeTime)
|
||||
fmt.Println("PostMergeTime: ", core.PostMergeTime)
|
||||
fmt.Println("PrefetchTrieTime: ", core.PrefetchTrieTimer)
|
||||
fmt.Println("PrefetchTrieWallTime: ", core.PrefetchTrieTimer)
|
||||
// fmt.Println("PrefetchTrieCPUtime: ", state.PrefetchTrieCPUTime)
|
||||
|
||||
// total
|
||||
fmt.Println("blockInsertTimer", blockInsertTimer.Total())
|
||||
|
|
|
|||
|
|
@ -101,9 +101,9 @@ func (p *ParallelStateProcessor) Process(block *types.Block, statedb *state.Stat
|
|||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
start := time.Now()
|
||||
preCalPostStart := time.Now()
|
||||
statedb.PreComputePostState(block.NumberU64(), runtime.NumCPU()/2)
|
||||
PrefetchMergeBALTime += time.Since(start)
|
||||
PrefetchMergeBALTime += time.Since(preCalPostStart)
|
||||
|
||||
exeStart := time.Now()
|
||||
result, err = p.executeParallel(block, statedb, cfg, gp, signer, context, initialdb)
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import (
|
|||
"slices"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
|
|
@ -217,7 +218,7 @@ func init() {
|
|||
case BalPreblockKeysPostValues:
|
||||
{
|
||||
println("bal preblock keys post values")
|
||||
fileName = "access_lists_kpostv.2000.json"
|
||||
fileName = "access_lists_kpostv.json"
|
||||
data, err := os.ReadFile(fileName)
|
||||
if err != nil {
|
||||
log.Error("Failed to load access lists", "err", err)
|
||||
|
|
@ -732,9 +733,23 @@ func (s *StateDB) MergePostBalStates() {
|
|||
}
|
||||
}
|
||||
|
||||
// Must profile it seperately with sequentially processing postState merge and parallel processing in parallel_state_processor.go
|
||||
var PrefetchTrieCPUTime = time.Duration(0)
|
||||
|
||||
func GetCPU() int64 {
|
||||
usage := new(syscall.Rusage)
|
||||
syscall.Getrusage(syscall.RUSAGE_SELF, usage)
|
||||
return usage.Utime.Nano() + usage.Stime.Nano()
|
||||
}
|
||||
|
||||
func (s *StateDB) PrefetchTrie() {
|
||||
var workers errgroup.Group
|
||||
|
||||
cpuUsed := runtime.NumCPU() / 2
|
||||
workers.SetLimit(cpuUsed)
|
||||
|
||||
start := GetCPU()
|
||||
|
||||
for addr := range s.journal.dirties {
|
||||
addr := addr
|
||||
// s.trie.GetAccount(addr)
|
||||
|
|
@ -778,6 +793,8 @@ func (s *StateDB) PrefetchTrie() {
|
|||
tr, _ := s.db.OpenStorageTrie(s.originalRoot, params.BeaconRootsAddress, obj.data.Root, nil)
|
||||
obj.trie = tr
|
||||
}
|
||||
|
||||
PrefetchTrieCPUTime += time.Duration((GetCPU() - start) / int64(cpuUsed) * 2)
|
||||
}
|
||||
|
||||
func (s *StateDB) setRefund(gas uint64) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue