Skip to content

mzbench: remove #9779

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

Merged
merged 1 commit into from
Jan 4, 2022
Merged

mzbench: remove #9779

merged 1 commit into from
Jan 4, 2022

Conversation

benesch
Copy link
Contributor

@benesch benesch commented Dec 28, 2021

mzbench has been obsoleted by the feature benchmark framework (in test/feature-benchmark) and the cloudbench tool (bin/cloudbench). The kafka-avro-generator tool has been obsoleted by parallelizing kgen directly (#9841). So this commit removes mzbench.

To expound on the rational for removing mzbench:

  • mzbench configurations require an unmaintainable duplication of mzcompose.yml files. Each mzbench configuration contains 300+ lines of nearly identical definitions. There was talk of improving this (see Add mzbench-friendly avro-insert benchmark #6676), but the plans never came to fruition.

  • The interplay between mzbench and mzcompose is unnecessarily delicate. mzbench expects a composition with workflows named just so, and then parses their output. This makes it very difficult to refactor the underlying compositions, since you don't know if you're breaking the contract with mzbench. I think most of mzbench's features could be recreated much more simply with an e.g. --num-trials parameter to mzcompose.

  • mzbench introduced quite a bit of complexity by trying to be both a demo of using Materialize to power a real-time dashboard 0 and a benchmarking framework. Experience suggests that this results in a tool that is a suboptimal dashboard and a suboptimal benchmarking framework. Better to have two separate tools optimized for their specific purpose.

The new feature benchmarking framework resolves the above concerns. It is only focused on being a benchmarking framework and does not suffer from the code duplication problem.

Motivation

  • This PR removes existing code.

Checklist

  • This PR has adequate test coverage / QA involvement has been duly considered.
  • This PR adds a release note for any user-facing behavior changes.

@benesch benesch mentioned this pull request Jan 1, 2022
2 tasks
@benesch benesch marked this pull request as ready for review January 1, 2022 21:45
@benesch
Copy link
Contributor Author

benesch commented Jan 1, 2022

Ok, this is ready for review now! I updated the PR description with a bit more rationale. kafka-avro-generator was obsoleted in #9841, so now the only question is whether feature-benchmark + cloudbench is a sufficient replacement for mzbench. What do y'all think?

@umanwizard
Copy link
Contributor

I have no objection to this.

mzbench has been obsoleted by the feature benchmark framework (in
test/feature-benchmark) and the cloudbench tool (bin/cloudbench).  The
kafka-avro-generator tool has been obsoleted by parallelizing kgen
directly (MaterializeInc#9841). So this commit removes mzbench.

To expound on the rational for removing mzbench:

  * mzbench configurations require an unmaintainable duplication of
    mzcompose.yml files. Each mzbench configuration contains 300+ lines of
    nearly identical definitions. There was talk of improving this (see
    MaterializeInc#6676), but the plans never came to fruition.

  * The interplay between mzbench and mzcompose is unnecessarily
    delicate. mzbench expects a composition with workflows named just
    so, and then parses their output. This makes it very difficult to
    refactor the underlying compositions, since you don't know if you're
    breaking the contract with mzbench. I think most of mzbench's
    features could be recreated much more simply with an e.g.
    `--num-trials` parameter to mzcompose.

  * mzbench introduced quite a bit of complexity by trying to be both a demo
    of using Materialize to power a real-time dashboard [0] and a
    benchmarking framework. Experience suggests that this results in a
    tool that is a suboptimal dashboard and a suboptimal benchmarking
    framework. Better to have two separate tools optimized for their
    specific purpose.

The new feature benchmarking framework resolves the above concerns. It
is only focused on being a benchmarking framework and does not suffer
from the code duplication problem.

[0]: https://github.com/MaterializeInc/materialize/blob/45586f38a/doc/developer/mzbench.md#worker-balance-visualization
@benesch
Copy link
Contributor Author

benesch commented Jan 4, 2022

Great, thanks everyone! Merging.

@benesch benesch merged commit 7dbe4bb into MaterializeInc:main Jan 4, 2022
@benesch benesch deleted the rm-mzbench branch January 4, 2022 16:55
benesch added a commit to benesch/materialize that referenced this pull request Jan 5, 2022
This was slated for removal as part of MaterializeInc#9779 but got lost in the
shuffle.
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.

3 participants