-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Improve hit-rate on buildcaches #43272
Improve hit-rate on buildcaches #43272
Conversation
Smart. On second thought: does it work with externals? |
06c0c69
to
db6f8f9
Compare
db6f8f9
to
2379050
Compare
630a5fe
to
5c5de4d
Compare
The changes here give a much better hit rate on store / buildcaches. I tried to benchmark on a baseline without any mirror and it's mostly the same. There's one consistent spike I need to investigate further: radiuss.pr.nomirror.csv |
5c5de4d
to
ed006df
Compare
ed006df
to
f550c55
Compare
The mismatch occurs on an edge. Previously it was assigned the parent priority, now it is assigned to the child priority. This should make reuse from buildcaches or store more likely, since most mismatches will be counted with "reused" priority.
We don't want to e.g. switch other attributes because we cannot reuse an old installed runtime.
This is such that the version of the runtime would not influence whether we should reuse a spec. Compiler mismatches are considered for runtimes, to avoid situations where compiling foo%gcc@9 brings in gcc-runtime%gcc@13 if gcc@13 is among the available compilers
This should ensure that we do not reuse specs that could be broken, as they expect the compiler to be installed in a specific place.
This is to avoid differences on m1 with respect to x86_64 machines
This is to avoid differences on m1 with respect to x86_64
5376bef
to
523c704
Compare
I just tried to re-measure the benchmark above. There must be something in the
radiuss.pr.nomirror.csv Footnotes
|
I think this is fine. As per discussion in dm, users can always But we have to document it (in high impact changes for instance). |
* Relax compiler and target mismatches The mismatch occurs on an edge. Previously it was assigned the parent priority, now it is assigned the child priority. This should make reuse from buildcaches or store more likely, since most mismatches will be counted with "reused" priority. * Optimize version badness for runtimes at very low priority We don't want to e.g. switch other attributes because we cannot reuse an old installed runtime. * Optimize runtime attributes at very low priority This is such that the version of the runtime would not influence whether we should reuse a spec. Compiler mismatches are considered for runtimes, to avoid situations where compiling foo%gcc@9 brings in gcc-runtime%gcc@13 if gcc@13 is among the available compilers * Exclude specs without runtimes from reuse This should ensure that we do not reuse specs that could be broken, as they expect the compiler to be installed in a specific place.
* Relax compiler and target mismatches The mismatch occurs on an edge. Previously it was assigned the parent priority, now it is assigned the child priority. This should make reuse from buildcaches or store more likely, since most mismatches will be counted with "reused" priority. * Optimize version badness for runtimes at very low priority We don't want to e.g. switch other attributes because we cannot reuse an old installed runtime. * Optimize runtime attributes at very low priority This is such that the version of the runtime would not influence whether we should reuse a spec. Compiler mismatches are considered for runtimes, to avoid situations where compiling foo%gcc@9 brings in gcc-runtime%gcc@13 if gcc@13 is among the available compilers * Exclude specs without runtimes from reuse This should ensure that we do not reuse specs that could be broken, as they expect the compiler to be installed in a specific place.
This PR tries to modify the optimization criteria to have more hits on buildcaches by default.
Modifications:
gcc-runtime
to be reused (they'll be mostly broken at runtime)