at my old company (Siemens) we believed in "cost cutting" too 🙂 we had 2 EC2 instances, a runner each, and 100 + engineers shared them
2-3 machines is ok, unless everyone is pushing pipelines together. If so, I recall gitlab had a semaphore concept where only one CI execution would happen at a time in a single repo, and the next would wait in queue. It should be somewhere in their docs.. it will help in your case