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

Publish perf script output somewhere, somehow. #182

Closed
Mark-Simulacrum opened this issue Feb 20, 2018 · 10 comments
Closed

Publish perf script output somewhere, somehow. #182

Mark-Simulacrum opened this issue Feb 20, 2018 · 10 comments

Comments

@Mark-Simulacrum
Copy link
Member

No description provided.

@Mark-Simulacrum
Copy link
Member Author

@alexcrichton How hard would it be to set up an S3 bucket or similar to which these could be uploaded? They look like about ~500 MB of information per commit, which compresses down to a few MB -- so we shouldn't use too much storage, but the github solution will no longer work well.

Realistically, it's probably time to start thinking about moving all of our data for perf.rlo to either a DB or at least an S3 bucket which we can sync to the server(s).

@alexcrichton
Copy link
Member

Oh shouldn't be hard at all, although I think we'd probably want to still have the data expire after 90 days or so. Lemme know if you'd like to do that and I can set up a bucket and give you some keys.

@Mark-Simulacrum
Copy link
Member Author

@nikomatsakis Are you okay with these files going away after 90 days? If so, then let's get the S3 bucket up and running so we can put the script files (and maybe some other metadata in there).

@nikomatsakis
Copy link

@Mark-Simulacrum seems ok for now

@Mark-Simulacrum
Copy link
Member Author

@alexcrichton Do you need anything from me to setup the bucket? If not, then please do so and I'll work to get the relevant details implemented in perf's collector.

@alexcrichton
Copy link
Member

I've created a bucket where a sample file is https://s3-us-west-1.amazonaws.com/rust-lang-perf/log-1.txt, and the access keys should be in 1password

@Mark-Simulacrum
Copy link
Member Author

So it looks like the next step here is to figure out a way to get both the stats from perf stat and the perf script output from the same run. So far I've not been able to find how to do this...

@Mark-Simulacrum
Copy link
Member Author

@nikomatsakis This is very beta (and seems to not work with perf focus, though the data... seems to be there? I'm not sure what's wrong), but initial files are up: https://s3-us-west-1.amazonaws.com/rust-lang-perf/4be5d360cd8a9338d1408b3998874313240db395/clap-rs-clean-check and wget https://s3-us-west-1.amazonaws.com/rust-lang-perf/4be5d360cd8a9338d1408b3998874313240db395/clap-rs-nll-check for example. Note that these aren't yet being compressed and aren't linked from anywhere on the site, though the URL is relatively straightforward to construct: grab the commit hash you're interested in, then the benchmark name (so clap-rs in this case, this'll be the directory), then the state name (see table here: https://github.com/rust-lang-nursery/rustc-perf/blob/master/collector/src/lib.rs#L132, replacing : with _ and with -), then the suffix is -check, -opt, or nothing for debug builds.

Note that these URLs may change, we may stop uploading artifacts, there may be other issues that I'm as yet unaware of. Basically: super-unstable, don't depend on these existing.

@Mark-Simulacrum
Copy link
Member Author

I've reverted the patch for the time being; it turned out to not work well timing wise, as well as (apparently) causing the OOM killer to kill perf. I'm also not happy with how slow perf record/perf script are; they appear to add ~2-3 hours onto each build which is not acceptable long-term.

There's also a problem with the current "solution" to collecting perf.data files with perf record -- we lose accurate event counts for instructions and the other events we collect. This may be fine (to an extent) but I'd like to do more tests to determine whether that loss of accuracy is something we can afford.

@nikomatsakis Is it possible that there's some small benchmarks (probably not full crates rather the specific test-cases) that we could run the less-accurate but more-dataful collector for? That way we can do that in the meantime and at least have something...

@Mark-Simulacrum
Copy link
Member Author

I'm going to give this a close for now since we're moving towards using self-profiling data rather than perf script, but we may want to revisit this in the future.

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

No branches or pull requests

3 participants