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
13ccf601
Unverified
Commit
13ccf601
authored
Dec 02, 2019
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trie: track dirty cache metrics, track clean writes on commit
parent
7ce7c396
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
0 deletions
+16
-0
database.go
trie/database.go
+16
-0
No files found.
trie/database.go
View file @
13ccf601
...
@@ -38,6 +38,11 @@ var (
...
@@ -38,6 +38,11 @@ var (
memcacheCleanReadMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/clean/read"
,
nil
)
memcacheCleanReadMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/clean/read"
,
nil
)
memcacheCleanWriteMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/clean/write"
,
nil
)
memcacheCleanWriteMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/clean/write"
,
nil
)
memcacheDirtyHitMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/dirty/hit"
,
nil
)
memcacheDirtyMissMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/dirty/miss"
,
nil
)
memcacheDirtyReadMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/dirty/read"
,
nil
)
memcacheDirtyWriteMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/dirty/write"
,
nil
)
memcacheFlushTimeTimer
=
metrics
.
NewRegisteredResettingTimer
(
"trie/memcache/flush/time"
,
nil
)
memcacheFlushTimeTimer
=
metrics
.
NewRegisteredResettingTimer
(
"trie/memcache/flush/time"
,
nil
)
memcacheFlushNodesMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/flush/nodes"
,
nil
)
memcacheFlushNodesMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/flush/nodes"
,
nil
)
memcacheFlushSizeMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/flush/size"
,
nil
)
memcacheFlushSizeMeter
=
metrics
.
NewRegisteredMeter
(
"trie/memcache/flush/size"
,
nil
)
...
@@ -321,6 +326,8 @@ func (db *Database) insert(hash common.Hash, blob []byte, node node) {
...
@@ -321,6 +326,8 @@ func (db *Database) insert(hash common.Hash, blob []byte, node node) {
if
_
,
ok
:=
db
.
dirties
[
hash
];
ok
{
if
_
,
ok
:=
db
.
dirties
[
hash
];
ok
{
return
return
}
}
memcacheDirtyWriteMeter
.
Mark
(
int64
(
len
(
blob
)))
// Create the cached entry for this node
// Create the cached entry for this node
entry
:=
&
cachedNode
{
entry
:=
&
cachedNode
{
node
:
simplifyNode
(
node
),
node
:
simplifyNode
(
node
),
...
@@ -372,8 +379,12 @@ func (db *Database) node(hash common.Hash) node {
...
@@ -372,8 +379,12 @@ func (db *Database) node(hash common.Hash) node {
db
.
lock
.
RUnlock
()
db
.
lock
.
RUnlock
()
if
dirty
!=
nil
{
if
dirty
!=
nil
{
memcacheDirtyHitMeter
.
Mark
(
1
)
memcacheDirtyReadMeter
.
Mark
(
int64
(
dirty
.
size
))
return
dirty
.
obj
(
hash
)
return
dirty
.
obj
(
hash
)
}
}
memcacheDirtyMissMeter
.
Mark
(
1
)
// Content unavailable in memory, attempt to retrieve from disk
// Content unavailable in memory, attempt to retrieve from disk
enc
,
err
:=
db
.
diskdb
.
Get
(
hash
[
:
])
enc
,
err
:=
db
.
diskdb
.
Get
(
hash
[
:
])
if
err
!=
nil
||
enc
==
nil
{
if
err
!=
nil
||
enc
==
nil
{
...
@@ -408,8 +419,12 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) {
...
@@ -408,8 +419,12 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) {
db
.
lock
.
RUnlock
()
db
.
lock
.
RUnlock
()
if
dirty
!=
nil
{
if
dirty
!=
nil
{
memcacheDirtyHitMeter
.
Mark
(
1
)
memcacheDirtyReadMeter
.
Mark
(
int64
(
dirty
.
size
))
return
dirty
.
rlp
(),
nil
return
dirty
.
rlp
(),
nil
}
}
memcacheDirtyMissMeter
.
Mark
(
1
)
// Content unavailable in memory, attempt to retrieve from disk
// Content unavailable in memory, attempt to retrieve from disk
enc
,
err
:=
db
.
diskdb
.
Get
(
hash
[
:
])
enc
,
err
:=
db
.
diskdb
.
Get
(
hash
[
:
])
if
err
==
nil
&&
enc
!=
nil
{
if
err
==
nil
&&
enc
!=
nil
{
...
@@ -812,6 +827,7 @@ func (c *cleaner) Put(key []byte, rlp []byte) error {
...
@@ -812,6 +827,7 @@ func (c *cleaner) Put(key []byte, rlp []byte) error {
// Move the flushed node into the clean cache to prevent insta-reloads
// Move the flushed node into the clean cache to prevent insta-reloads
if
c
.
db
.
cleans
!=
nil
{
if
c
.
db
.
cleans
!=
nil
{
c
.
db
.
cleans
.
Set
(
hash
[
:
],
rlp
)
c
.
db
.
cleans
.
Set
(
hash
[
:
],
rlp
)
memcacheCleanWriteMeter
.
Mark
(
int64
(
len
(
rlp
)))
}
}
return
nil
return
nil
}
}
...
...
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