GitLab CI Windows shared SaaS runner is VERY slow

I am migrating one of my projects from GitHub Actions to GitLab CI. One of the jobs in the pipeline builds a full GCC toolchain (binutils + gcc + newlib) for Windows, and this unfortunately takes a while.

My current problem is that the job is terminated after 2 hours, which appears to be the limit set for the runner instance (in my project I have set the limit to 10 hours).

For comparison, the time it takes to finish the corresponding job on different nodes are as follows:

OS Site HW threads Time
Linux Local (bare metal) 32 <6 min
Linux GitLab CI 2 49 min
macOS GitLab CI 4 23 min
Windows Local VM 8 45 min
Windows GitHub Actions 2 1h26m
Windows GitLab CI 2 2h+ (terminated due to timeout)

I expect Windows to be slower than Linux, for instance, but the GitLab SaaS instance is extremely slow. The job is barely half way done after two hours. I’m not sure if it’s a problem with too little RAM (swapping), too slow disk, or something else.

Is it possible to either:

  • Use an instance with better specs (more cores, RAM, …)?
  • Raise the time limit of the instance from 2h to 5h (for instance)?

…or is there some trick I can use to utilize a faster disk/partition for instance?

I second this. It takes significantly longer time to just create Windows jobs.