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
9d67222f
Commit
9d67222f
authored
Nov 25, 2019
by
gary rong
Committed by
Péter Szilágyi
Nov 25, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trie: replace bigcache with fastcache (#19971)
parent
f5a68a40
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
20 additions
and
17 deletions
+20
-17
go.mod
go.mod
+1
-1
go.sum
go.sum
+10
-0
database.go
trie/database.go
+9
-16
No files found.
go.mod
View file @
9d67222f
...
...
@@ -7,7 +7,7 @@ require (
github.com/Azure/azure-storage-blob-go v0.7.0
github.com/Azure/go-autorest/autorest/adal v0.8.0 // indirect
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
github.com/
allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156
github.com/
VictoriaMetrics/fastcache v1.5.2
github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847
github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6
github.com/cespare/cp v0.1.0
...
...
go.sum
View file @
9d67222f
...
...
@@ -21,8 +21,12 @@ github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VY
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI=
github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/VictoriaMetrics/fastcache v1.5.2 h1:Erd8iIuBAL9kke8JzM4+WxkKuFkHh3ktwLanJvDgR44=
github.com/VictoriaMetrics/fastcache v1.5.2/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
...
...
@@ -34,7 +38,10 @@ github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6 h1:Eey/GGQ/E5Xp1P2Ly
github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ=
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 h1:pl4eWIqvFe/Kg3zkn7NxevNzILnZYWDCG7qbA1CJik0=
github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM=
github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9 h1:J82+/8rub3qSy0HxEnoYD8cs+HDlHWYrqYXe2Vqxluk=
github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
...
...
@@ -155,6 +162,8 @@ github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubr
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9 h1:5Cp3cVwpQP4aCQ6jx6dNLP3IarbYiuStmIzYu+BjQwY=
github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE=
...
...
@@ -163,6 +172,7 @@ github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3 h1:njlZPzLwU639
github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs=
...
...
trie/database.go
View file @
9d67222f
...
...
@@ -25,7 +25,7 @@ import (
"sync"
"time"
"github.com/
allegro/big
cache"
"github.com/
VictoriaMetrics/fast
cache"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
...
...
@@ -69,7 +69,7 @@ const secureKeyLength = 11 + 32
type
Database
struct
{
diskdb
ethdb
.
KeyValueStore
// Persistent storage for matured trie nodes
cleans
*
bigcache
.
BigCache
// GC friendly memory cache of clean node RLPs
cleans
*
fastcache
.
Cache
// GC friendly memory cache of clean node RLPs
dirties
map
[
common
.
Hash
]
*
cachedNode
// Data and references relationships of dirty nodes
oldest
common
.
Hash
// Oldest tracked node, flush-list head
newest
common
.
Hash
// Newest tracked node, flush-list tail
...
...
@@ -296,16 +296,9 @@ func NewDatabase(diskdb ethdb.KeyValueStore) *Database {
// before its written out to disk or garbage collected. It also acts as a read cache
// for nodes loaded from disk.
func
NewDatabaseWithCache
(
diskdb
ethdb
.
KeyValueStore
,
cache
int
)
*
Database
{
var
cleans
*
bigcache
.
Big
Cache
var
cleans
*
fastcache
.
Cache
if
cache
>
0
{
cleans
,
_
=
bigcache
.
NewBigCache
(
bigcache
.
Config
{
Shards
:
1024
,
LifeWindow
:
time
.
Hour
,
MaxEntriesInWindow
:
cache
*
1024
,
MaxEntrySize
:
512
,
HardMaxCacheSize
:
cache
,
Hasher
:
trienodeHasher
{},
})
cleans
=
fastcache
.
New
(
cache
*
1024
*
1024
)
}
return
&
Database
{
diskdb
:
diskdb
,
...
...
@@ -381,7 +374,7 @@ func (db *Database) insertPreimage(hash common.Hash, preimage []byte) {
func
(
db
*
Database
)
node
(
hash
common
.
Hash
)
node
{
// Retrieve the node from the clean cache if available
if
db
.
cleans
!=
nil
{
if
enc
,
err
:=
db
.
cleans
.
Get
(
string
(
hash
[
:
]));
err
==
nil
&&
enc
!=
nil
{
if
enc
:=
db
.
cleans
.
Get
(
nil
,
hash
[
:
]);
enc
!=
nil
{
memcacheCleanHitMeter
.
Mark
(
1
)
memcacheCleanReadMeter
.
Mark
(
int64
(
len
(
enc
)))
return
mustDecodeNode
(
hash
[
:
],
enc
)
...
...
@@ -401,7 +394,7 @@ func (db *Database) node(hash common.Hash) node {
return
nil
}
if
db
.
cleans
!=
nil
{
db
.
cleans
.
Set
(
string
(
hash
[
:
])
,
enc
)
db
.
cleans
.
Set
(
hash
[
:
]
,
enc
)
memcacheCleanMissMeter
.
Mark
(
1
)
memcacheCleanWriteMeter
.
Mark
(
int64
(
len
(
enc
)))
}
...
...
@@ -417,7 +410,7 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) {
}
// Retrieve the node from the clean cache if available
if
db
.
cleans
!=
nil
{
if
enc
,
err
:=
db
.
cleans
.
Get
(
string
(
hash
[
:
]));
err
==
nil
&&
enc
!=
nil
{
if
enc
:=
db
.
cleans
.
Get
(
nil
,
hash
[
:
]);
enc
!=
nil
{
memcacheCleanHitMeter
.
Mark
(
1
)
memcacheCleanReadMeter
.
Mark
(
int64
(
len
(
enc
)))
return
enc
,
nil
...
...
@@ -435,7 +428,7 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) {
enc
,
err
:=
db
.
diskdb
.
Get
(
hash
[
:
])
if
err
==
nil
&&
enc
!=
nil
{
if
db
.
cleans
!=
nil
{
db
.
cleans
.
Set
(
string
(
hash
[
:
])
,
enc
)
db
.
cleans
.
Set
(
hash
[
:
]
,
enc
)
memcacheCleanMissMeter
.
Mark
(
1
)
memcacheCleanWriteMeter
.
Mark
(
int64
(
len
(
enc
)))
}
...
...
@@ -832,7 +825,7 @@ func (c *cleaner) Put(key []byte, rlp []byte) error {
}
// Move the flushed node into the clean cache to prevent insta-reloads
if
c
.
db
.
cleans
!=
nil
{
c
.
db
.
cleans
.
Set
(
string
(
hash
[
:
])
,
rlp
)
c
.
db
.
cleans
.
Set
(
hash
[
:
]
,
rlp
)
}
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