Skip to content
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

Implement and run a "serious" concurrent hash table benchmarking suite #30

Open
jonhoo opened this issue Jan 25, 2020 · 4 comments
Open
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested
Milestone

Comments

@jonhoo
Copy link
Owner

jonhoo commented Jan 25, 2020

It is easy to write simple benchmarks for concurrent hash tables. But when these data-structures hit real world data is when we learn how they truly perform. There has been much research on concurrent hash tables, and how to benchmark them, so let's build a benchmark (or set of benchmarks rather) inspired by that work! We can then run that benchmark against the various concurrent map implementations out there in Rust world, and (hopefully) get some useful data out of them.

I'm hoping this thread can act as a staging ground for designing this benchmark, and that it can then be forked off into its own stand-alone project.

Work of note to get started (please let me know if you know of others):

/cc @xacrimon

@jonhoo jonhoo added enhancement New feature or request help wanted Extra attention is needed question Further information is requested labels Jan 25, 2020
@xacrimon
Copy link

Ah, I would love to help but I am a tad busy right now.

@jonhoo
Copy link
Owner Author

jonhoo commented Jan 25, 2020

@xacrimon I CC'ed you mostly so that you could subscribe to this issue if you were interested, not in expectation that you'd necessarily do any work :)

@jonhoo jonhoo added this to the 1.0 milestone Jan 31, 2020
@jonhoo
Copy link
Owner Author

jonhoo commented Feb 26, 2020

Having dug into this a bit more now, I think the libcuckoo's universal benchmark is the right starting point. It does most of what we want, and the various papers add relatively little to what the benchmark already does. The one thing it is missing is concurrent access to the same key: each thread generates its own random key sequence, and in the 64-bit space, there are unlikely to be any overlaps. We'll still see contention on buckets, which is arguably most important, but it'd be good to also measure same-key contention. But that I think we can leave for later.

@jonhoo
Copy link
Owner Author

jonhoo commented Feb 26, 2020

I wrote a first draft of a more "serious" concurrent benchmark: https://github.com/jonhoo/bustle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants