-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[Feature Request] PGO applicability #3456
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
Comments
Great idea. There are some concerns we have with PGO optimization for specific workloads, but feel free to post a PR on the issue. |
Yeah, I understand. I think would be a good idea to start with just a testing PGO approach on some workloads with Firecracker. And then, if the results would be interesting, think about different workloads, their intersection in profiles, etc. Also, recently I found results of applying PGO on similar projects: More PGO results on different projects could be found here. |
Hi @zamazan4ik , Thank you very much for your pointer and ideas. |
Hello, We are students from UT Austin and are looking to work on this issue for our virtualization class. If no one is working on it, we would love to. Thanks! |
I am pretty sure that no one is working on this right now, so feel free to work on it. I would be happy to see your results on this! |
Amazing thank you! Do you mind assigning me to this issue? Thank you! |
Hi all, Thanks so much for the details on this feature request and for outlining the concerns regarding PGO. I am in the group at UT Austin with Amber (currently assigned to this issue) and wanted to propose our current plan for this issue. Based on the previous discussions on this issue and after reading the QEMU and CrosVM PGO workflows, we would like to start with a small, isolated prototype for PGO, without affecting the current build process or CI. Here's what we are thinking: 1. DocumentationWe will add a README-pgo.md with documentation on how to manually perform PGO builds:
2. Prototype Developer ToolingWe will add a new script under tools/devtool called
3. Optional Example Workload RunnerWe may add a simple script to launch basic microVMs and exercise typical Firecracker functionality to help collect realistic profile data, but it will be purely for convenience. Users can always run their custom workloads instead. 4. Benchmarking
Please let us know if this approach sounds reasonable or if you have any questions or concerns! It will be isolated so it won't change the default build behavior. Thank you again for your time! |
Hi @valeriepieger , Thank you very much for the previous message. The plan overall seems good 🙂
Yes as you said I think this is the right first step. Let's focus on building a prototype which shows the effectiveness of a PGO approach with Firecracker. So feel free to develop a prototype in a feature branch so you can move faster than publishing PRs. The documentation proposal is fine, let's make sure you write in your README how you perform the build and profile Firecracker such that we can enable everyone to reproduce the builds (and ourselves too, in case you will need a bit of help along the way). Regarding benchmark to use, i think a good starting point is to actually run the performance tests that you already find into our repository and that you should be able to run locally too. |
Feature Request
Profile-Guided Optimization (PGO) allows gaining additional performance for the software since it uses runtime profile information to perform more advanced optimization during the compilation process. Since Firecracker is a large project I guess PGO could help here to gain even more performance.
Describe the desired solution
Possible steps:
Maybe would be a good idea to try to use BOLT too, but FMPOV "usual" PGO is much more stable.
Describe possible alternatives
Just leave things as is.
Additional context
Probably the most helpful link would be this one: vectordotdev/vector#15631
Checks
The text was updated successfully, but these errors were encountered: