Skip to content

Demote style-servo to only run in the "stable" set. #1206

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 4 commits into from
Mar 16, 2022

Conversation

nnethercote
Copy link
Contributor

It's the longest-running benchmark in the suite, but doesn't provide results that are all that different to other benchmarks. Plus its importance in the Rust ecosystem is less than it once was. But we keep it as part of the "stable" set to preserve data continuity.

Best reviewed one commit at a time.

@Mark-Simulacrum
Copy link
Member

I'm not sure I'm a fan of omitting the category getting you an implicit behavior of not running at all, seems unnecessary and rather annoying to understand/debug if you don't know about the stable-only support.

I think we talked on Zulip about needing to disable the master point on the dashboard before we do this, right? Since now style-servo will no longer run there?

@nnethercote
Copy link
Contributor Author

I'm not sure I'm a fan of omitting the category getting you an implicit behavior of not running at all, seems unnecessary and rather annoying to understand/debug if you don't know about the stable-only support.

I agree! It would be better if "stable" was a distinct category from "primary" and "secondary" and every benchmark belonged to exactly one category, and "supports_stable" went away. Maybe we will end up there, but there needs to be a transition period. And I didn't want to mess with the database format for now. This PR is the minimal thing that will work, I think.

I chose to disable style-servo first because that will give us immediate headroom, in terms of running time, for any increases in benchmark sizes, and periods of overlap where both the old and new versions of benchmarks are live.

I think we talked on Zulip about needing to disable the master point on the dashboard before we do this, right? Since now style-servo will no longer run there?

If it uses the bench_published command, then style-servo will run. That's the only place it will run.

@Mark-Simulacrum
Copy link
Member

If it uses the bench_published command, then style-servo will run. That's the only place it will run.

The master point doesn't though? The dashboard just pulls from the latest master commit benchmarked and assumes the supports stable benchmarks will be there. It should be pretty easy to drop it -- just deleting these lines I think -- but I think that should probably happen here. It may also be worth a comment on that page of some kind (...this does not contain master intentionally...).

@Mark-Simulacrum
Copy link
Member

I agree! It would be better if "stable" was a distinct category from "primary" and "secondary" and every benchmark belonged to exactly one category, and "supports_stable" went away. Maybe we will end up there, but there needs to be a transition period. And I didn't want to mess with the database format for now. This PR is the minimal thing that will work, I think.

Ah, I've now re-read and I think better understand how you've made that distinction in the code. I'm not a huge fan -- but it seems OK, and as you say, we can iterate in the future (though we should do so relatively quickly, I think).

@Mark-Simulacrum
Copy link
Member

Modulo the dashboard question, I think this looks good to me.

(Also, temporarily, the "primary-and-stable" category. All the current
"primary-and-stable" benchmarks will become "stable" in the near
future.)

These categories are used in `perf-config.json` and the code that
chooses which benchmarks to execute. They allow the `supports_stable`
field to be removed.

However, when it comes to storing the category in the database, to avoid
database format changes, `Category` gets split into `supports_stable` (a
bool) and `category` (either "primary" or "secondary").

Some notable details:
- `Category` is moved to a different file, because it's no longer used
  by the DB code.
- Some methods are moved from `BenchmarkConfig` to `Category`.
- `Category` now derives `clap::ArgEnum`, which improves the `download`
  command's help message by listing the possible values.
By removing its `category` field.
Because the dashboard data is collected in a totally different way, and
doesn't fit nicely here.
@nnethercote
Copy link
Contributor Author

I have completely changed how I'm handling stable benchmarks, I think the new approach is much better. And I've added the master removal. The first commit is unchanged from yesterday but the latter three commits are very different and will require re-review, thanks!

@Mark-Simulacrum Mark-Simulacrum merged commit a7f7b0e into rust-lang:master Mar 16, 2022
@nnethercote nnethercote deleted the demote-style-servo branch March 16, 2022 20:12
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.

2 participants