Sled: disk space blowup

Created on 29 Aug 2019  路  6Comments  路  Source: spacejam/sled

https://github.com/Kerollmops/sled-disk-load/blob/master/src/main.rs

Writing 5kb values over and over for 3000 keys causes a space leak to pop out when using a single thread. This might be because of no longer explicitly flushing the local crossbeam epoch guard after each high level operation, causing segments not to be released for freeing as quickly.

bug

Most helpful comment

fixed on master

All 6 comments

Notice that when every insert call is immediately flushed, or each 100 inserts, I can see the database shrink.

When I run this with a single thread and set it to burn-in constantly, it goes up and down but tends to be stable without going above a couple gb, dipping down to a few hundred mb. I see rapid blowup issues when multiple threads are involved, even when flushing EBR guards, making me think it might be an issue with EBR not being able to release epochs. Going to talk with Stjepan about good ways of introspecting this and possibly tuning crossbeam-epoch in sled

fixed on master

Do you plan to publish a new version on crates.io with this fix?

@Kerollmops I've cut a release candidate, but it's still burning in and I believe I've found an issue I need to address before a full release which happens after several hours of intense, highly-contended writes - but if you'd like to try out the release candidate I'd love to know how it works for you!

I tested it a little bit but I encountered important RAM consumptions, I then tried the same program with RocksDB and I encountered data corruption 馃う

So I backup to LMDB with heed, one thing that I wanted to try is using the merge operators to enable parallel computation. I used my little MTBL Rust portage not easy to use but it work really well.

Was this page helpful?
0 / 5 - 0 ratings