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
2550e462
Unverified
Commit
2550e462
authored
Mar 26, 2021
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth/protocols, metrics: use resetting histograms for rare packets
parent
efe02297
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
2 deletions
+34
-2
handler.go
eth/protocols/eth/handler.go
+5
-1
handler.go
eth/protocols/snap/handler.go
+5
-1
resetting_sample.go
metrics/resetting_sample.go
+24
-0
No files found.
eth/protocols/eth/handler.go
View file @
2550e462
...
@@ -246,7 +246,11 @@ func handleMessage(backend Backend, peer *Peer) error {
...
@@ -246,7 +246,11 @@ func handleMessage(backend Backend, peer *Peer) error {
if
metrics
.
Enabled
{
if
metrics
.
Enabled
{
h
:=
fmt
.
Sprintf
(
"%s/%s/%d/%#02x"
,
p2p
.
HandleHistName
,
ProtocolName
,
peer
.
Version
(),
msg
.
Code
)
h
:=
fmt
.
Sprintf
(
"%s/%s/%d/%#02x"
,
p2p
.
HandleHistName
,
ProtocolName
,
peer
.
Version
(),
msg
.
Code
)
defer
func
(
start
time
.
Time
)
{
defer
func
(
start
time
.
Time
)
{
sampler
:=
func
()
metrics
.
Sample
{
return
metrics
.
NewExpDecaySample
(
1028
,
0.015
)
}
sampler
:=
func
()
metrics
.
Sample
{
return
metrics
.
ResettingSample
(
metrics
.
NewExpDecaySample
(
1028
,
0.015
),
)
}
metrics
.
GetOrRegisterHistogramLazy
(
h
,
nil
,
sampler
)
.
Update
(
time
.
Since
(
start
)
.
Microseconds
())
metrics
.
GetOrRegisterHistogramLazy
(
h
,
nil
,
sampler
)
.
Update
(
time
.
Since
(
start
)
.
Microseconds
())
}(
time
.
Now
())
}(
time
.
Now
())
}
}
...
...
eth/protocols/snap/handler.go
View file @
2550e462
...
@@ -134,7 +134,11 @@ func handleMessage(backend Backend, peer *Peer) error {
...
@@ -134,7 +134,11 @@ func handleMessage(backend Backend, peer *Peer) error {
if
metrics
.
Enabled
{
if
metrics
.
Enabled
{
h
:=
fmt
.
Sprintf
(
"%s/%s/%d/%#02x"
,
p2p
.
HandleHistName
,
ProtocolName
,
peer
.
Version
(),
msg
.
Code
)
h
:=
fmt
.
Sprintf
(
"%s/%s/%d/%#02x"
,
p2p
.
HandleHistName
,
ProtocolName
,
peer
.
Version
(),
msg
.
Code
)
defer
func
(
start
time
.
Time
)
{
defer
func
(
start
time
.
Time
)
{
sampler
:=
func
()
metrics
.
Sample
{
return
metrics
.
NewExpDecaySample
(
1028
,
0.015
)
}
sampler
:=
func
()
metrics
.
Sample
{
return
metrics
.
ResettingSample
(
metrics
.
NewExpDecaySample
(
1028
,
0.015
),
)
}
metrics
.
GetOrRegisterHistogramLazy
(
h
,
nil
,
sampler
)
.
Update
(
time
.
Since
(
start
)
.
Microseconds
())
metrics
.
GetOrRegisterHistogramLazy
(
h
,
nil
,
sampler
)
.
Update
(
time
.
Since
(
start
)
.
Microseconds
())
}(
time
.
Now
())
}(
time
.
Now
())
}
}
...
...
metrics/resetting_sample.go
0 → 100644
View file @
2550e462
package
metrics
// ResettingSample converts an ordinary sample into one that resets whenever its
// snapshot is retrieved. This will break for multi-monitor systems, but when only
// a single metric is being pushed out, this ensure that low-frequency events don't
// skew th charts indefinitely.
func
ResettingSample
(
sample
Sample
)
Sample
{
return
&
resettingSample
{
Sample
:
sample
,
}
}
// resettingSample is a simple wrapper around a sample that resets it upon the
// snapshot retrieval.
type
resettingSample
struct
{
Sample
}
// Snapshot returns a read-only copy of the sample with the original reset.
func
(
rs
*
resettingSample
)
Snapshot
()
Sample
{
s
:=
rs
.
Sample
.
Snapshot
()
rs
.
Sample
.
Clear
()
return
s
}
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