Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
3ee75bec
Commit
3ee75bec
authored
May 23, 2017
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd/evm: added mem/cpu profiling
parent
04b668b2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
0 deletions
+44
-0
main.go
cmd/evm/main.go
+15
-0
runner.go
cmd/evm/runner.go
+29
-0
No files found.
cmd/evm/main.go
View file @
3ee75bec
...
@@ -35,6 +35,18 @@ var (
...
@@ -35,6 +35,18 @@ var (
Name
:
"debug"
,
Name
:
"debug"
,
Usage
:
"output full trace logs"
,
Usage
:
"output full trace logs"
,
}
}
MemProfileFlag
=
cli
.
StringFlag
{
Name
:
"memprofile"
,
Usage
:
"creates a memory profile at the given path"
,
}
CPUProfileFlag
=
cli
.
StringFlag
{
Name
:
"cpuprofile"
,
Usage
:
"creates a CPU profile at the given path"
,
}
StatDumpFlag
=
cli
.
BoolFlag
{
Name
:
"statdump"
,
Usage
:
"displays stack and heap memory information"
,
}
CodeFlag
=
cli
.
StringFlag
{
CodeFlag
=
cli
.
StringFlag
{
Name
:
"code"
,
Name
:
"code"
,
Usage
:
"EVM code"
,
Usage
:
"EVM code"
,
...
@@ -93,6 +105,9 @@ func init() {
...
@@ -93,6 +105,9 @@ func init() {
DumpFlag
,
DumpFlag
,
InputFlag
,
InputFlag
,
DisableGasMeteringFlag
,
DisableGasMeteringFlag
,
MemProfileFlag
,
CPUProfileFlag
,
StatDumpFlag
,
}
}
app
.
Commands
=
[]
cli
.
Command
{
app
.
Commands
=
[]
cli
.
Command
{
compileCommand
,
compileCommand
,
...
...
cmd/evm/runner.go
View file @
3ee75bec
...
@@ -21,6 +21,7 @@ import (
...
@@ -21,6 +21,7 @@ import (
"fmt"
"fmt"
"io/ioutil"
"io/ioutil"
"os"
"os"
"runtime/pprof"
"time"
"time"
goruntime
"runtime"
goruntime
"runtime"
...
@@ -108,6 +109,19 @@ func runCmd(ctx *cli.Context) error {
...
@@ -108,6 +109,19 @@ func runCmd(ctx *cli.Context) error {
},
},
}
}
if
cpuProfilePath
:=
ctx
.
GlobalString
(
CPUProfileFlag
.
Name
);
cpuProfilePath
!=
""
{
f
,
err
:=
os
.
Create
(
cpuProfilePath
)
if
err
!=
nil
{
fmt
.
Println
(
"could not create CPU profile: "
,
err
)
os
.
Exit
(
1
)
}
if
err
:=
pprof
.
StartCPUProfile
(
f
);
err
!=
nil
{
fmt
.
Println
(
"could not start CPU profile: "
,
err
)
os
.
Exit
(
1
)
}
defer
pprof
.
StopCPUProfile
()
}
tstart
:=
time
.
Now
()
tstart
:=
time
.
Now
()
if
ctx
.
GlobalBool
(
CreateFlag
.
Name
)
{
if
ctx
.
GlobalBool
(
CreateFlag
.
Name
)
{
input
:=
append
(
code
,
common
.
Hex2Bytes
(
ctx
.
GlobalString
(
InputFlag
.
Name
))
...
)
input
:=
append
(
code
,
common
.
Hex2Bytes
(
ctx
.
GlobalString
(
InputFlag
.
Name
))
...
)
...
@@ -125,12 +139,27 @@ func runCmd(ctx *cli.Context) error {
...
@@ -125,12 +139,27 @@ func runCmd(ctx *cli.Context) error {
fmt
.
Println
(
string
(
statedb
.
Dump
()))
fmt
.
Println
(
string
(
statedb
.
Dump
()))
}
}
if
memProfilePath
:=
ctx
.
GlobalString
(
MemProfileFlag
.
Name
);
memProfilePath
!=
""
{
f
,
err
:=
os
.
Create
(
memProfilePath
)
if
err
!=
nil
{
fmt
.
Println
(
"could not create memory profile: "
,
err
)
os
.
Exit
(
1
)
}
if
err
:=
pprof
.
WriteHeapProfile
(
f
);
err
!=
nil
{
fmt
.
Println
(
"could not write memory profile: "
,
err
)
os
.
Exit
(
1
)
}
f
.
Close
()
}
if
ctx
.
GlobalBool
(
DebugFlag
.
Name
)
{
if
ctx
.
GlobalBool
(
DebugFlag
.
Name
)
{
fmt
.
Fprintln
(
os
.
Stderr
,
"#### TRACE ####"
)
fmt
.
Fprintln
(
os
.
Stderr
,
"#### TRACE ####"
)
vm
.
WriteTrace
(
os
.
Stderr
,
logger
.
StructLogs
())
vm
.
WriteTrace
(
os
.
Stderr
,
logger
.
StructLogs
())
fmt
.
Fprintln
(
os
.
Stderr
,
"#### LOGS ####"
)
fmt
.
Fprintln
(
os
.
Stderr
,
"#### LOGS ####"
)
vm
.
WriteLogs
(
os
.
Stderr
,
statedb
.
Logs
())
vm
.
WriteLogs
(
os
.
Stderr
,
statedb
.
Logs
())
}
if
ctx
.
GlobalBool
(
StatDumpFlag
.
Name
)
{
var
mem
goruntime
.
MemStats
var
mem
goruntime
.
MemStats
goruntime
.
ReadMemStats
(
&
mem
)
goruntime
.
ReadMemStats
(
&
mem
)
fmt
.
Fprintf
(
os
.
Stderr
,
`evm execution time: %v
fmt
.
Fprintf
(
os
.
Stderr
,
`evm execution time: %v
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment