facebook/hhvm

Profile-Guided Optimization (PGO) and BOLT impact on HHVM

zamazan4ik opened this issue · 3 comments

Hi!

Did you measure the impact of Profile-Guided Optimization (PGO) and/or BOLT (already LLVM BOLT) on HHVM performance (CPU usage/latency/something else)? if yes - could you please share the actual numbers?

I did a quick research on the repo but found only the following mentions about PGO:

  • Quite an old commit with PGO addition: b367bb6 . Didn't find yet the reason why it was deleted from the project.
  • #5306 (comment) . But it uses old compilers and hasn't results for Clang.

For BOLT I didn't find actual numbers but the article says that BOLT was applied to HHVM.

Would be great if you can share the results with the actual numbers. And if any of PGO/BOLT has a measurable impact on HHVM - would be nice to see a note about that in the project documentation (and have an additional build option to build HHVM with PGO/BOLT optimization).

I am interested in this topic since according to my tests PGO in general helps a lot, especially in compiler-like loads.

Hi! We see major improvements from both PGO and BOLT. We've published a couple of papers about BOLT that have some of the comparisons you're interested in:

Thanks for the links! So now I am wondering - did you think about integrating PGO/BOLT into the HHVM build scripts (which are open-source, not Facebook internal build scripts)? Also, would be great to see somewhere in the README or other documentation how HHVM could be optimized with PGO/BOLT and what benefits from the performance perspective could be achieved with that.

The HHVM team is not going to be able to maintain an external (Cmake) build. I am doubtful they'll change the build to include PGO/Bolt in the external build.

https://hhvm.com/blog/2023/10/27/oss-update.html