Closed LifeIsStrange closed 1 year ago
Indeed, at such large scales the gains are huge.
I'm pretty sure them not using it is a huge missed opportunity for end users performance (billions of humans) (and related projects such as Skia, ANGLE, freetype, etc)
That would be quite a meaningful utilitaristic goal.
I don't recall seeing an interest from chromium devs. Do you have any contacts? Feel free to ping them here.
@aaupov
FYI, CPython now adopt llvm-bolt as an experimental feature: https://github.com/python/cpython/commit/214eb2cce5caa99f476ae8abd406077e2c293a3c
I am expecting the usage through ./configure --enable-optimizations --with-lto --enable-bolt
Friendly ping @nfischer Since chromium use LTO and PGO, leveraging BOLT would be the next logical step for improving end users performance of the web
It looks like folks on the Chromium build team are already thinking about this! :smile: I suggest you click the "star" icon for https://crbug.com/1163978 if you would like to be notified of further updates.
Quick update: I tried to apply BOLT to Chromium but currently blocked by https://github.com/llvm/llvm-project/issues/59794
Update:
__typeid_
symbols with strip/llvm-strip is not possible due to dangling relocations:
not stripping symbol '__typeid__ZTSFvPKN4base8internal13BindStateBaseEE_global_addr' because it is named in a relocation
__typeid_
symbols in BOLT is a feasible workaround which unblocks processing of the binary (https://reviews.llvm.org/D141229)strict
mode needs to be disabled in perf aggregation (perf2bolt) due to unclaimed PC-relative relocationsBuiltins_.*
functions need to be skipped due to V8 (see Optimizing NodeJS with BOLT)On the first glance CFI enabled by Chromium on Linux/x86 in official build mode is non-trivial to support in BOLT. I'll try to run BOLT on just Release+PGO build to decide if further effort is worthwhile.
I've made a post summarizing my findings: https://aaupov.github.io/blog/2022/11/12/bolt-chromium
In short, BOLT appears to be reasonably effective for Chromium, with Speedometer results comparable to that of PGO build (https://blog.chromium.org/2020/08/chrome-just-got-faster-with-profile.html): 7.7% speedup from PGO (Mac), ~6% speedup from BOLT (Linux) on top of PGO.
To note, BOLT profile definitely wasn't of the highest quality, so the performance can potentially be further improved.
@aaupov this is huge!! I hope it will end up being enabled by default for public releases :)
I'm pretty sure them not using it is a huge missed opportunity for end users performance (billions of humans) (and related projects such as Skia, ANGLE, freetype, etc)
That would be quite a meaningful utilitaristic goal.