Bors CI Workload Estimated


#1

I’m assuming there are stats on how much bors uses for CI? Is it public (monetary cost, workload in terms of CPU hours, ram, disk space, architectures, etc.). I’m not very familiar with how it all works, but I gather we have throughput issues? I’d love to see open discussed where we are and what the ideal would be, and what impact the difference between the two has on language implementation productivity…

I don’t have many resouces personally, but I’d love to brainstorm ideas to try to find ways to increase though put in a unambiguously good way.


#2

The money used for CI is not public, but there are some things that are often said: it’s a considerable amount of money, and the infra team isn’t willing to double it (e.g. to support parallel testing).

The workload is basically 1.5–3 hours for each builder, which we have around 40 on Linux (including cross compile), 5 for macOS and 4 for Windows. If we get a better machine, there are duplicate compilation which we can avoid by sharing builders.

The specs are (my memory is ambiguous, feel free to correct):

  • Travis Linux: n1-standard-4 (GCE), 4 virtualized hyperthreads, 7.5 GB RAM
  • Travis macOS: 3 virtualized hyperthreads
  • AppVeyor: 4 virtualized hyperthreads

All of them are amd64, and we don’t have plans to use something like ARM. Notable thing is that we do run QEMU on some of the builders, but IIRC that’s not the bottleneck but the asm.js builder.

One of the CI bottleneck is that rustc is not currently good at exploiting multiple cores; we have a notable amount of compilation time blocked on single thread.

Proposals to self host the infrastructures has been rejected in the past, due to the lack of human resources to maintain them.