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("StateCopyTime: ", state.StateCopyTime)
|
||||||
fmt.Println("StateCopyNewTime: ", state.StateNewTime)
|
fmt.Println("StateCopyNewTime: ", state.StateNewTime)
|
||||||
fmt.Println("StateDeepCpTime: ", state.StateDeepCpTime)
|
fmt.Println("StateDeepCpTime: ", state.StateDeepCpTime)
|
||||||
fmt.Println("PrefetchBALTime: ", core.PrefetchBALTime)
|
fmt.Println("PrefetchBALtime: ", core.PrefetchBALTime)
|
||||||
fmt.Println("PrefetchMergeTime:", core.PrefetchMergeBALTime)
|
fmt.Println("PrefetchMergeTime:", core.PrefetchMergeBALTime)
|
||||||
fmt.Println("ParallelExeTime: ", core.ParallelExeTime)
|
fmt.Println("ParallelExeTime: ", core.ParallelExeTime)
|
||||||
fmt.Println("PostMergeTime: ", core.PostMergeTime)
|
fmt.Println("PostMergeTime: ", core.PostMergeTime)
|
||||||
fmt.Println("PrefetchTrieTime: ", core.PrefetchTrieTimer)
|
fmt.Println("PrefetchTrieWallTime: ", core.PrefetchTrieTimer)
|
||||||
|
// fmt.Println("PrefetchTrieCPUtime: ", state.PrefetchTrieCPUTime)
|
||||||
|
|
||||||
// total
|
// total
|
||||||
fmt.Println("blockInsertTimer", blockInsertTimer.Total())
|
fmt.Println("blockInsertTimer", blockInsertTimer.Total())
|
||||||
|
|
|
||||||
|
|
@ -101,9 +101,9 @@ func (p *ParallelStateProcessor) Process(block *types.Block, statedb *state.Stat
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
start := time.Now()
|
preCalPostStart := time.Now()
|
||||||
statedb.PreComputePostState(block.NumberU64(), runtime.NumCPU()/2)
|
statedb.PreComputePostState(block.NumberU64(), runtime.NumCPU()/2)
|
||||||
PrefetchMergeBALTime += time.Since(start)
|
PrefetchMergeBALTime += time.Since(preCalPostStart)
|
||||||
|
|
||||||
exeStart := time.Now()
|
exeStart := time.Now()
|
||||||
result, err = p.executeParallel(block, statedb, cfg, gp, signer, context, initialdb)
|
result, err = p.executeParallel(block, statedb, cfg, gp, signer, context, initialdb)
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"slices"
|
"slices"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
|
@ -217,7 +218,7 @@ func init() {
|
||||||
case BalPreblockKeysPostValues:
|
case BalPreblockKeysPostValues:
|
||||||
{
|
{
|
||||||
println("bal preblock keys post values")
|
println("bal preblock keys post values")
|
||||||
fileName = "access_lists_kpostv.2000.json"
|
fileName = "access_lists_kpostv.json"
|
||||||
data, err := os.ReadFile(fileName)
|
data, err := os.ReadFile(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to load access lists", "err", err)
|
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() {
|
func (s *StateDB) PrefetchTrie() {
|
||||||
var workers errgroup.Group
|
var workers errgroup.Group
|
||||||
|
|
||||||
|
cpuUsed := runtime.NumCPU() / 2
|
||||||
|
workers.SetLimit(cpuUsed)
|
||||||
|
|
||||||
|
start := GetCPU()
|
||||||
|
|
||||||
for addr := range s.journal.dirties {
|
for addr := range s.journal.dirties {
|
||||||
addr := addr
|
addr := addr
|
||||||
// s.trie.GetAccount(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)
|
tr, _ := s.db.OpenStorageTrie(s.originalRoot, params.BeaconRootsAddress, obj.data.Root, nil)
|
||||||
obj.trie = tr
|
obj.trie = tr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PrefetchTrieCPUTime += time.Duration((GetCPU() - start) / int64(cpuUsed) * 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StateDB) setRefund(gas uint64) {
|
func (s *StateDB) setRefund(gas uint64) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue