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-runtimeto be reused (they'll be mostly broken at runtime)