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
5d1d1a80
Commit
5d1d1a80
authored
Sep 17, 2018
by
gary rong
Committed by
Péter Szilágyi
Sep 17, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consensus, ethdb, metrics: implement forced-meter (#17667)
parent
41ac8dd8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
16 deletions
+49
-16
ethash.go
consensus/ethash/ethash.go
+2
-2
database.go
ethdb/database.go
+6
-9
ewma.go
metrics/ewma.go
+0
-3
meter.go
metrics/meter.go
+41
-2
No files found.
consensus/ethash/ethash.go
View file @
5d1d1a80
...
...
@@ -485,7 +485,7 @@ func New(config Config, notify []string, noverify bool) *Ethash {
caches
:
newlru
(
"cache"
,
config
.
CachesInMem
,
newCache
),
datasets
:
newlru
(
"dataset"
,
config
.
DatasetsInMem
,
newDataset
),
update
:
make
(
chan
struct
{}),
hashrate
:
metrics
.
NewMeter
(),
hashrate
:
metrics
.
NewMeter
Forced
(),
workCh
:
make
(
chan
*
sealTask
),
fetchWorkCh
:
make
(
chan
*
sealWork
),
submitWorkCh
:
make
(
chan
*
mineResult
),
...
...
@@ -505,7 +505,7 @@ func NewTester(notify []string, noverify bool) *Ethash {
caches
:
newlru
(
"cache"
,
1
,
newCache
),
datasets
:
newlru
(
"dataset"
,
1
,
newDataset
),
update
:
make
(
chan
struct
{}),
hashrate
:
metrics
.
NewMeter
(),
hashrate
:
metrics
.
NewMeter
Forced
(),
workCh
:
make
(
chan
*
sealTask
),
fetchWorkCh
:
make
(
chan
*
sealWork
),
submitWorkCh
:
make
(
chan
*
mineResult
),
...
...
ethdb/database.go
View file @
5d1d1a80
...
...
@@ -155,15 +155,12 @@ func (db *LDBDatabase) LDB() *leveldb.DB {
// Meter configures the database metrics collectors and
func
(
db
*
LDBDatabase
)
Meter
(
prefix
string
)
{
if
metrics
.
Enabled
{
// Initialize all the metrics collector at the requested prefix
db
.
compTimeMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/time"
,
nil
)
db
.
compReadMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/input"
,
nil
)
db
.
compWriteMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/output"
,
nil
)
db
.
diskReadMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"disk/read"
,
nil
)
db
.
diskWriteMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"disk/write"
,
nil
)
}
// Initialize write delay metrics no matter we are in metric mode or not.
// Initialize all the metrics collector at the requested prefix
db
.
compTimeMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/time"
,
nil
)
db
.
compReadMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/input"
,
nil
)
db
.
compWriteMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/output"
,
nil
)
db
.
diskReadMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"disk/read"
,
nil
)
db
.
diskWriteMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"disk/write"
,
nil
)
db
.
writeDelayMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/writedelay/duration"
,
nil
)
db
.
writeDelayNMeter
=
metrics
.
NewRegisteredMeter
(
prefix
+
"compact/writedelay/counter"
,
nil
)
...
...
metrics/ewma.go
View file @
5d1d1a80
...
...
@@ -17,9 +17,6 @@ type EWMA interface {
// NewEWMA constructs a new EWMA with the given alpha.
func
NewEWMA
(
alpha
float64
)
EWMA
{
if
!
Enabled
{
return
NilEWMA
{}
}
return
&
StandardEWMA
{
alpha
:
alpha
}
}
...
...
metrics/meter.go
View file @
5d1d1a80
...
...
@@ -29,6 +29,17 @@ func GetOrRegisterMeter(name string, r Registry) Meter {
return
r
.
GetOrRegister
(
name
,
NewMeter
)
.
(
Meter
)
}
// GetOrRegisterMeterForced returns an existing Meter or constructs and registers a
// new StandardMeter no matter the global switch is enabled or not.
// Be sure to unregister the meter from the registry once it is of no use to
// allow for garbage collection.
func
GetOrRegisterMeterForced
(
name
string
,
r
Registry
)
Meter
{
if
nil
==
r
{
r
=
DefaultRegistry
}
return
r
.
GetOrRegister
(
name
,
NewMeterForced
)
.
(
Meter
)
}
// NewMeter constructs a new StandardMeter and launches a goroutine.
// Be sure to call Stop() once the meter is of no use to allow for garbage collection.
func
NewMeter
()
Meter
{
...
...
@@ -46,8 +57,23 @@ func NewMeter() Meter {
return
m
}
// NewMeter constructs and registers a new StandardMeter and launches a
// goroutine.
// NewMeterForced constructs a new StandardMeter and launches a goroutine no matter
// the global switch is enabled or not.
// Be sure to call Stop() once the meter is of no use to allow for garbage collection.
func
NewMeterForced
()
Meter
{
m
:=
newStandardMeter
()
arbiter
.
Lock
()
defer
arbiter
.
Unlock
()
arbiter
.
meters
[
m
]
=
struct
{}{}
if
!
arbiter
.
started
{
arbiter
.
started
=
true
go
arbiter
.
tick
()
}
return
m
}
// NewRegisteredMeter constructs and registers a new StandardMeter
// and launches a goroutine.
// Be sure to unregister the meter from the registry once it is of no use to
// allow for garbage collection.
func
NewRegisteredMeter
(
name
string
,
r
Registry
)
Meter
{
...
...
@@ -59,6 +85,19 @@ func NewRegisteredMeter(name string, r Registry) Meter {
return
c
}
// NewRegisteredMeterForced constructs and registers a new StandardMeter
// and launches a goroutine no matter the global switch is enabled or not.
// Be sure to unregister the meter from the registry once it is of no use to
// allow for garbage collection.
func
NewRegisteredMeterForced
(
name
string
,
r
Registry
)
Meter
{
c
:=
NewMeterForced
()
if
nil
==
r
{
r
=
DefaultRegistry
}
r
.
Register
(
name
,
c
)
return
c
}
// MeterSnapshot is a read-only copy of another Meter.
type
MeterSnapshot
struct
{
count
int64
...
...
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