Skip to content

Commit

Permalink
Discovery: throttle node DB commits (#3581)
Browse files Browse the repository at this point in the history
UpdateFindFails/UpdateLastPingReceived/UpdateLastPongReceived events
are causing bursty DB commits (100 per minute).

This optimization throttles the disk writes to happen at most once in a few seconds,
because this info doesn't need to be persisted immediately.

This helps on HDD drives.
  • Loading branch information
battlmonstr committed Mar 9, 2022
1 parent de93ca0 commit ce91c0a
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ require (
github.com/json-iterator/go v1.1.12
github.com/julienschmidt/httprouter v1.3.0
github.com/kevinburke/go-bindata v3.21.0+incompatible
github.com/ledgerwatch/erigon-lib v0.0.0-20220304021751-0fb6024d47cc
github.com/ledgerwatch/erigon-lib v0.0.0-20220309123231-e7c5cc240c6d
github.com/ledgerwatch/log/v3 v3.4.1
github.com/ledgerwatch/secp256k1 v1.0.0
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -641,8 +641,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P
github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
github.com/ledgerwatch/erigon-lib v0.0.0-20220304021751-0fb6024d47cc h1:oC/LY4EYkjdsB5fAZlFJOVpbBmVfdSzNgegN1FRGX3E=
github.com/ledgerwatch/erigon-lib v0.0.0-20220304021751-0fb6024d47cc/go.mod h1:SlDiODxcwf99wgSRhp/JO5piRwUJI6AN7WB5aQ5N7u8=
github.com/ledgerwatch/erigon-lib v0.0.0-20220309123231-e7c5cc240c6d h1:KCY2d9UcnNx84AGo42mNQnGQuO5RZlT0oaKDvW8hTUA=
github.com/ledgerwatch/erigon-lib v0.0.0-20220309123231-e7c5cc240c6d/go.mod h1:SlDiODxcwf99wgSRhp/JO5piRwUJI6AN7WB5aQ5N7u8=
github.com/ledgerwatch/log/v3 v3.4.1 h1:/xGwlVulXnsO9Uq+tzaExc8OWmXXHU0dnLalpbnY5Bc=
github.com/ledgerwatch/log/v3 v3.4.1/go.mod h1:VXcz6Ssn6XEeU92dCMc39/g1F0OYAjw1Mt+dGP5DjXY=
github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=
Expand Down
11 changes: 10 additions & 1 deletion p2p/enode/nodedb.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import (
"github.com/ledgerwatch/erigon/common"
"github.com/ledgerwatch/erigon/rlp"
"github.com/ledgerwatch/log/v3"

mdbx1 "github.com/torquem-ch/mdbx-go/mdbx"
)

// Keys in the node database.
Expand Down Expand Up @@ -110,7 +112,14 @@ func newMemoryDB(logger log.Logger) (*DB, error) {
func newPersistentDB(logger log.Logger, path string) (*DB, error) {
var db kv.RwDB
var err error
db, err = mdbx.NewMDBX(logger).Path(path).Label(kv.SentryDB).MapSize(1024 * datasize.MB).WithTablessCfg(bucketsConfig).Open()
db, err = mdbx.NewMDBX(logger).
Path(path).
Label(kv.SentryDB).
WithTablessCfg(bucketsConfig).
MapSize(1024 * datasize.MB).
Flags(func(f uint) uint { return f ^ mdbx1.Durable | mdbx1.SafeNoSync }).
SyncPeriod(2 * time.Second).
Open()
if err != nil {
return nil, err
}
Expand Down

0 comments on commit ce91c0a

Please sign in to comment.