-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pebble DB Integration into DB Bench Tool #155
Pebble DB Integration into DB Bench Tool #155
Conversation
// It's not entirely obvious WHY this is needed, but without it, there are issues with the way that | ||
// pebble db manages it's iterators and internal state. Level db works fine though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nivida fyi lol
cmd/dbbench/dbbench.go
Outdated
wo *opt.WriteOptions | ||
handle *leveldb.DB | ||
} | ||
PebbleDBWrapper struct { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I would move most of the logic related to:
- PebbleDB in
pebbledb.go
. - LevelDB in
leveldb.go
. KeyValueDB
andRandomKeySeeker
indb_interface.go
or something like this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can move the pebbledb and leveldb implementations. I think that the common interferface between the two makes sense in the main package with the command. RandomKeySeeker, I have no point of view, it's just a utility class that I needed for now I'll probably leave it where it is
cmd/dbbench/usage.md
Outdated
@@ -2,7 +2,7 @@ This command is meant to give us a sense of the system level | |||
performance for leveldb: | |||
|
|||
```bash | |||
go run main.go leveldbbench --degree-of-parallelism 2 | jq '.' > result.json | |||
go run main.go dbbench --degree-of-parallelism 2 | jq '.' > result.json |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: replace go run main.go
with polycli
@@ -2,7 +2,7 @@ This command is meant to give us a sense of the system level | |||
performance for leveldb: | |||
|
|||
```bash | |||
go run main.go leveldbbench --degree-of-parallelism 2 | jq '.' > result.json | |||
go run main.go dbbench --degree-of-parallelism 2 | jq '.' > result.json | |||
``` | |||
|
|||
In many cases, we'll want to emulate the performance characteristics |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unrelated to the PR, but curious to know how you get these values
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! 👏
Description
Geth has support for pebble db and it seems like bor will soon. This PR adds a mode flag to polycli to support testing a pebble db storage engine in addition to leveldb.
Testing
Generally, it seems like pebble db is faster in all of the categories except for random reads.
It does seem like there might be a pretty big difference in final state size