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

refactor: a more friendly dynamic_dispatch bench #332

Open
wants to merge 259 commits into
base: main
Choose a base branch
from

Conversation

xiaguan
Copy link
Contributor

@xiaguan xiaguan commented Apr 12, 2024

What's changed and what's your intention?

Just a little bit enhancement for the bench.

Checklist

  • I have written the necessary rustdoc comments
  • I have added the necessary unit tests and integration tests
  • I have passed make all (or make fast instead if the old tests are not modified) in my local environment.

Related issues or PRs (optional)

MrCroxx added 30 commits May 24, 2023 15:31
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: add foyer bench, reorg workspace

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* sort cargo file

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* make fmt and clippy happy

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix bug

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* ci: add asan test

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix Cargo.toml and CI

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* regen ci

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* rename CI step, test asan fail

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* regen CI

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* chore: add license checker

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix license checker config

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: introduce instrusive indexers and collections

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: introduce FTL-like storage engine

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* update ci

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* sort cargo file

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix memory leak

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: enable direct i/o on linux target

- enable direct i/o on linux target
- refine flusher and reclaimer

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix unit test

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
)

* chore: remove unused old storage engien and other components

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* update ci

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: impl storage recovery

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: add segment fifo eviction policy

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* export fifo fs store

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: export mods

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* make cargo sort happy

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* fix: deadlock

fix deadlocks:

1. exclusive lock was not `Send` but unsafe impled.
2. submit flush task await blocks `set_region_evictable`
3. no new reclamation task created after `set_region_evctable` if all
   write process are waiting

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* update ci

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* fix: gracefullly shutdown runners

Use `Store::shutdown_runners()` to gracefully shutdown runners.`

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* log warn if send failed instead of panic

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
- fix region advance
- fix recovery slice destroy
- seal last dirty region when shutdown

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: introduce prometheus metrics

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* calc metrics

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix registry metrics

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
MrCroxx and others added 24 commits March 14, 2024 10:55
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* feat: add eviction alg hit ratio bench

* refactor: use enum cache instead of generic cache

The enum cache is more easy to use since it only has two generic parameters. The generic cache is more like an internal interface.

Signed-off-by: xiaguan <751080330@qq.com>

* chore : sort foyer_memory's dependencies

Signed-off-by: xiaguan <751080330@qq.com>

* chore: use hakari to gen better dependencies

Signed-off-by: xiaguan <751080330@qq.com>

---------

Signed-off-by: xiaguan <751080330@qq.com>
* chore: update license

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: fix license checker

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: update license header

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* Add S3Fifo eviction for memory

* fix: refine s3fifo, fix some bugs

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: fix license

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* refactor: expose s3fifo, fix hakari, add s3fifo fuzzy test

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* bench: add s3fifo to hit ratio bench

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* test: add s3fifo uts

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Co-authored-by: MrCroxx <mrcroxx@outlook.com>
)

* chore: bump foyer-memory to 0.1.3

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: bump foyer-intrusive to 0.3.1

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* refactor: remove usage of unstable features

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* refactor: some more

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
…roxx#317)

* refactor: use crate allocator_api2 to make foyer build on stable

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: use stable pipeline for ci tests, use nightly for sanitizer

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: update ci prefix key

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: try fix ci

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: update ci nightly version

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: try resolve github issue

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* test: run CI on both linux and macos

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: fix build on macos

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* fix: try fix ci run on targets

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* doc: update README and add a simple example

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: update Cargo.toml

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: MrCroxx <mrcroxx@outlook.com>
* chore: fix ci coverage

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

* chore: fix check

Signed-off-by: MrCroxx <mrcroxx@outlook.com>

---------

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
foyer-memory/benches/bench_dynamic_dispatch.rs Outdated Show resolved Hide resolved
Comment on lines 80 to 45
// Warmup
for _ in 0..WARMUP_LOOPS {
let s = rand_string(thread_rng().gen_range(0..100));
let _ = (t.f2)(&s);
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason to add a warmup loop for this case? 👀

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When the iteration number equals 10,000, there is significant performance variability on my machine.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With count the random generation or not? I think the variability may come from that. 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With it.

Signed-off-by: MrCroxx <mrcroxx@outlook.com>
Signed-off-by: xiaguan <751080330@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants